totalPages += npages;
else if (npagecom > 0)
totalPages += npagecom;
+ } else if (memcmp(line, "%PDF", 4) == 0) {
+ int npages = 0; // # pages according to "/Type /Page"
+ const int slen = 12; // len of "/Type /Page" + 1 char to check for 's'
+ char* endbuf = line+sizeof(line);
+
+ rewind(fd);
+ char *cp = line;
+ int len;
+ while ((len = fread(cp, 1, endbuf-cp, fd)) > 0) {
+ endbuf = cp+len; // Will only change on the last pass.
+ cp = line;
+ while ((cp = (char *) memchr(cp, '/', endbuf-cp-slen))) {
+ if ((memcmp(cp, "/Type /Page", slen-1) == 0) && (*(cp+slen-1) != 's'))
+ npages++;
+ cp++;
+ }
+ if ((cp = (char *) memchr(endbuf-slen, '/', slen))) {
+ memcpy(line, cp, endbuf-cp);
+ cp = line+(endbuf-cp);
+ } else
+ cp = line;
+ }
+ if (npages > 0)
+ totalPages += npages;
}
}
fclose(fd);