Platon Technologies
neprihlásený Prihlásiť Registrácia
SlovakEnglish
open source software development oslavujeme 10 rokov vývoja otvoreného softvéru! Štvrtok, 18. apríl 2024

Rozdiely pre cpdf/parse.c medzi verziami 1.9 a 1.10

verzia 1.9, 2002/10/08 18:48:58 verzia 1.10, 2002/10/08 19:46:49
Riadok 174  void add_obj(char *s)
Riadok 174  void add_obj(char *s)
         fseek(fp, old_off, SEEK_SET);          fseek(fp, old_off, SEEK_SET);
 }  }
   
 /* find objects */  long get_startxref(void)
 void xref(void)  
 {  {
         char xref[XREFLINE];          char startxref[XREFLINE];
         long offset = 0;          long offset;
         int i = XREFLINE - 2;          int i = XREFLINE - 2;
         xref[XREFLINE - 1] = '\0';          startxref[XREFLINE - 1] = '\0';
         fstat(fp->_fileno, &fpstat);          fstat(fp->_fileno, &fpstat);
         offset = fpstat.st_size - 8;          offset = fpstat.st_size - 8;
         fseek(fp, offset, SEEK_SET);          fseek(fp, offset, SEEK_SET);
         while (1) {          while (1) {
                 xref[i] = fgetc(fp);                  startxref[i] = fgetc(fp);
                 if (xref[i] == '\r' || xref[i] == '\n')                  if (startxref[i] == '\r' || startxref[i] == '\n')
                         break;                          break;
                 i--;                  i--;
                 offset--;                  offset--;
                 fseek(fp, offset, SEEK_SET);                  fseek(fp, offset, SEEK_SET);
         }          }
         offset = strtoul(&xref[i + 1], NULL, 10);          return strtoul(&startxref[i + 1], NULL, 10);
   }
   
   /* find objects */
   void xref(void)
   {
           char xref[XREFLINE];
           long offset = 0;
           offset = get_startxref();
         fseek(fp, offset, SEEK_SET);          fseek(fp, offset, SEEK_SET);
         fget(&xref[0], XREFLINE, fp);          fget(xref, XREFLINE, fp);
         if (strstr(&xref[0], "xref") == NULL) {          if (strstr(xref, "xref") == NULL) {
                 /* error */                  /* error */
                 return;                  return;
         }          }
         fget(&xref[0], XREFLINE, fp);          object = (struct object **) xmalloc(sizeof(struct object));
           obj_count = 1;
         {          {
                 int entry[2];                  int entry[2];
                 sscanf(&xref[0], "%d %d", &entry[0], &entry[1]);                  do {
                 object = (struct object **) xmalloc(entry[0] + entry[1]);                          fget(xref, XREFLINE, fp);
                 if (!entry[0])                          sscanf(xref, "%d %d", &entry[0], &entry[1]);
                         fseek(fp, 20, SEEK_CUR);                          if (entry[0] + entry[1] > obj_count) {
                 fget(&xref[0], XREFLINE, fp);                                  object =
                 while (strncmp(&xref[0], "trailer", 5)) {                                      (struct object **) realloc(object,
                         add_obj(&xref[0]);                                                                 entry[0] +
                         fget(&xref[0], XREFLINE, fp);                                                                 entry[1] + 1);
                 }                                  obj_count = entry[0] + entry[1];
                           }
                           if (!entry[0])
                                   fseek(fp, 20, SEEK_CUR);
                           fget(xref, XREFLINE, fp);
                           while (strncmp(xref, "trailer", 7)) {
                                   add_obj(&xref[0]);
                                   fget(xref, XREFLINE, fp);
                           }
                           fseek(fp, 3, SEEK_CUR);
                           fget(xref, XREFLINE, fp);
                           trailer.prev = 0;
                           while (xref[0] != '>' && xref[1] != '>') {
                                   if (!strncmp(xref, "/Root", 5))
                                           sscanf(xref, "/Root %d 0 R\n",
                                                  &trailer.root);
                                   if (!strncmp(xref, "/Info", 5))
                                           sscanf(xref, "/Info %d 0 R\n",
                                                  &trailer.info);
                                   if (!strncmp(xref, "/Prev", 5))
                                           sscanf(xref, "/Prev %ld",
                                                  &trailer.prev);
                                   fget(xref, XREFLINE, fp);
                           }
                           if (!trailer.prev)
                                   break;
                           fseek(fp, trailer.prev, SEEK_SET);
                   } while (1);
         }          }
         return;          return;
 }  }

Legend:
Odstranené z verzie1.9  
zmenené riadky
  Pridané vo verzii1.10

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