Platon Technologies
neprihlásený Prihlásiť Registrácia
SlovakEnglish
open source software development oslavujeme 10 rokov vývoja otvoreného softvéru! Nedeľa, 25. október 2026

Rozdiely pre cpdf/parse.c medzi verziami 1.13 a 1.14

verzia 1.13, 2002/10/14 19:55:12 verzia 1.14, 2002/10/16 21:07:43
Riadok 26  int strlenc(char *buffer, char c, char t
Riadok 26  int strlenc(char *buffer, char c, char t
  */   */
 int strlento(char *buffer, char to)  int strlento(char *buffer, char to)
 {  {
         int i = 0;          char *old = buffer;
         while (*buffer && *buffer != to) {          while (*buffer && *buffer != to)
                 i++;  
                 buffer++;                  buffer++;
         }          return buffer - old;
         return i;  
 }  }
   
 /* convert hex to bin  /* convert hex to bin
Riadok 87  char *name(char *buffer)
Riadok 85  char *name(char *buffer)
   
 char **array(char *buffer)  char **array(char *buffer)
 {  {
         char **ret, *last;          char **ret = NULL, *last;
         int index = 1, end = 1;          static char delim[4] = { '[','\0',']','\0' };
         ret = (char **) xmalloc(sizeof(char **));          int index = 0,len;
         *ret = (char *) xmalloc(2 * sizeof(char));          last = buffer + 1;
         strncpy(*ret, "[\0", 2 * sizeof(char));          do {
         buffer++;                  ret = (char **) realloc(ret, (index + 1) * sizeof(char**));
         if (*buffer == ' ')                  if(*buffer == '[' || *buffer == ']') {
                 buffer++;                          if(*buffer == '[')
         last = buffer;                                  ret[index] = &delim[0];
         while (1) {                          else
                 if (*buffer == '[')                                  ret[index] = &delim[2];
                         end++;                          buffer++;
                 if (*buffer == ']') {                          index++;
                         end--;                          continue;
                         if (!end)  
                                 break;  
                 }                  }
                 while (*buffer != ' ')                  while (*buffer != ' ' && *buffer != ']' && *buffer != '\n')
                         buffer++;                          buffer++;
                 ret = (char **) resize(ret, (index + 1) * sizeof(char **));                  len = buffer - last;
                 ret[index] = (char *) xmalloc(buffer - last);                  ret[index] = (char *) xcalloc(len + 1,sizeof(char));
                 strncpy(ret[index], last, buffer - last);                  strncpy(ret[index], last, len);
                 ret[index][buffer - last] = '\0';                  index++;
                 last = ++buffer;                  if(*buffer != ']')
         }                          last = ++buffer;
                   else
                           last = buffer;
           } while (*buffer != '\n');
         return ret;          return ret;
 }  }
   
 /* parse arrays  
 char **array(char *buffer)  
 {  
         char **ret;  
         int len, index, end;  
         if (*buffer != '[')  
                 return NULL;  
         ret = (char **) xmalloc(1);  
         ret[0] = (char *) xmalloc(2);  
         strncpy(ret[0],"[\0",2);  
         if(*(buffer + 1) == ' ')  
                 buffer += 2;  
         else  
                 buffer++;  
         end = index = 1;  
         do {  
                 if (*buffer == ']')  
                         end--;  
                 if (*buffer == '[')  
                         end++;  
                 ret = (char **) resize(et,index + 1);  
                 len = strlento(buffer, ' ');  
                 ret[index] = (char *) xmalloc(len + 1);  
                 strncpy(ret[index], buffer, len);  
                 ret[index][len] = '\0';  
                 buffer += len + 1;  
                 index++;  
         } while (end > 0);  
         return ret;  
 }*/  
   
 #define BUFLEN 255  #define BUFLEN 255
 void read_obj(long offset)  void read_obj(long offset)
Riadok 157  void read_obj(long offset)
Riadok 126  void read_obj(long offset)
         fget(buffer, BUFLEN, fp);          fget(buffer, BUFLEN, fp);
         sscanf(buffer, "%d ", &obj_num);          sscanf(buffer, "%d ", &obj_num);
         fget(buffer, BUFLEN, fp);          fget(buffer, BUFLEN, fp);
           if(buffer[0] == '<' && buffer[1] == '<')
                   fget(buffer,BUFLEN,fp);
         while (!strstr(buffer, "endobj")) {          while (!strstr(buffer, "endobj")) {
                 size += strlen(buffer) + 1;                  size += strlen(buffer) + 1;
                 obj->unparsed = realloc(obj->unparsed, size);                  obj->unparsed = realloc(obj->unparsed, size);
Riadok 167  void read_obj(long offset)
Riadok 138  void read_obj(long offset)
         return;          return;
 }  }
   
 /*      obj->type = UNKNOWN;  
         obj->obj = NULL;  
         if(!strstr(&buffer[0],"<<")) {  
                 obj->type = NOTYPE;  
                 obj->obj = fill_data();  
         }  
         while (buffer[0] != '>' && buffer[1] != '>'  
                && obj->type == UNKNOWN) {  
                 if (!strncmp(&buffer[0], "/Type", 5)) {  
                         if (!strncmp(&buffer[7], "Page", 4)) {  
                                 obj->type = PAGE;  
                         }  
                         if (!strncmp(&buffer[7], "Pages", 5)) {  
                                 obj->type = PAGES;  
                         }  
                         if (!strncmp(&buffer[7], "Catalog", 7)) {  
                                 obj->type = CATALOG;  
                         }  
                         if (!strncmp(&buffer[7], "Encoding", 8)) {  
                                 obj->type = ENCODING;  
                         }  
                         if (!strncmp(&buffer[7], "XObject", 7)) {  
                                 obj->type = XOBJECT;  
                         }  
                 }  
                 if (!strncmp(&buffer[0], "/Font", 5)) {  
                         obj->type = FONT;  
                 }  
                 if (!strncmp(&buffer[0], "stream", 7)) {  
                         obj->type = CONTENT;  
                 }  
                 fget(&buffer[0], BUFLEN, fp);  
         }*/  
   
 /* add object to object structure */  /* add object to object structure */
 void add_obj(char *s)  void add_obj(char *s)
 {  {
Riadok 234  long get_startxref(void)
Riadok 171  long get_startxref(void)
   
 void probe_ptree(int num)  void probe_ptree(int num)
 {  {
         char *p, **kids;          char *p, **kids, **old;
         p = strstr(object[num]->unparsed, "/Page");          p = strstr(object[num]->unparsed, "/Page");
         if (!p) {          if (!p) {
                 /* error */                  /* error */
                 return;                  return;
         }          }
         if (*(p + 5) == 's')          if (p[5] == 's')
                 object[num]->type = PAGES;                  object[num]->type = PAGES;
         else {          else {
                 page_tree[current_page] = num;                  page_tree[current_page] = num;
Riadok 252  void probe_ptree(int num)
Riadok 189  void probe_ptree(int num)
                 /* error */                  /* error */
                 return;                  return;
         }          }
         kids = array(p + 6);          old = kids = array(&p[6]);
         for (kids++; **kids != ']'; kids += 2)          for (kids++; **kids != ']'; kids += 3) {
                 probe_ptree(atoi(*kids));                  probe_ptree(atoi(*kids));
                   free(kids[0]);
                   free(kids[1]);
                   free(kids[2]);
           }
           free(old);
         return;          return;
 }  }
   
Riadok 266  void xref(void)
Riadok 208  void xref(void)
         offset = get_startxref();          offset = get_startxref();
         fseek(fp, offset, SEEK_SET);          fseek(fp, offset, SEEK_SET);
         fget(xref, XREFLINE, fp);          fget(xref, XREFLINE, fp);
         if (strstr(xref, "xref") == NULL) {          if (!strstr(xref, "xref")) {
                 /* error */                  /* error */
                 return;                  return;
         }          }
         object = (struct object **) xmalloc(sizeof(struct object *));          object = NULL;
         obj_count = 1;          obj_count = 0;
         {          {
                 int entry[2];                  int entry[2];
                 do {                  do {
Riadok 280  void xref(void)
Riadok 222  void xref(void)
                         if (entry[0] + entry[1] > obj_count) {                          if (entry[0] + entry[1] > obj_count) {
                                 object = (struct object **)                                  object = (struct object **)
                                     realloc(object,                                      realloc(object,
                                             entry[0] + entry[1] + 1);                                              entry[0] + entry[1]);
                                 obj_count = entry[0] + entry[1];                                  obj_count = entry[0] + entry[1];
                         }                          }
                         if (!entry[0])                          if (!entry[0])
                                 fseek(fp, 20, SEEK_CUR);                                  fseek(fp, XREFLINE, SEEK_CUR);
                         fget(xref, XREFLINE, fp);                          fget(xref, XREFLINE, fp);
                         while (strncmp(xref, "trailer", 7)) {                          while (strncmp(xref, "trailer", 7)) {
                                 add_obj(&xref[0]);                                  add_obj(&xref[0]);

Legend:
Odstranené z verzie1.13  
zmenené riadky
  Pridané vo verzii1.14

Platon Group <platon@platon.sk> http://platon.sk/
Copyright © 2002-2006 Platon Group
Stránka používa redakčný systém Metafox
Na začiatok