Browse code

Clean up some PDF code

Shawn Webb authored on 2014/05/25 00:15:54
Showing 1 changed files
... ...
@@ -2397,6 +2397,7 @@ int cli_pdf(const char *dir, cli_ctx *ctx, off_t offset)
2397 2397
     if (!pdfver) {
2398 2398
         cli_dbgmsg("cli_pdf: no PDF- header found\n");
2399 2399
         noisy_warnmsg("cli_pdf: no PDF- header found\n");
2400
+        pdf_export_json(&pdf);
2400 2401
         return CL_SUCCESS;
2401 2402
     }
2402 2403
 
... ...
@@ -2424,6 +2425,7 @@ int cli_pdf(const char *dir, cli_ctx *ctx, off_t offset)
2424 2424
     eofmap = fmap_need_off_once(map, map_off, bytesleft);
2425 2425
     if (!eofmap) {
2426 2426
         cli_errmsg("cli_pdf: mmap() failed (2)\n");
2427
+        pdf_export_json(&pdf);
2427 2428
         return CL_EMAP;
2428 2429
     }
2429 2430
 
... ...
@@ -2478,6 +2480,7 @@ int cli_pdf(const char *dir, cli_ctx *ctx, off_t offset)
2478 2478
     pdf.map = fmap_need_off(map, offset, size);
2479 2479
     if (!pdf.map) {
2480 2480
         cli_errmsg("cli_pdf: mmap() failed (3)\n");
2481
+        pdf_export_json(&pdf);
2481 2482
         return CL_EMAP;
2482 2483
     }
2483 2484
 
... ...
@@ -2490,6 +2493,7 @@ int cli_pdf(const char *dir, cli_ctx *ctx, off_t offset)
2490 2490
         rc = CL_CLEAN;
2491 2491
     } else if (rc) {
2492 2492
         cli_dbgmsg("cli_pdf: (pre hooks) returning %d\n", rc);
2493
+        pdf_export_json(&pdf);
2493 2494
         return rc == CL_BREAK ? CL_CLEAN : rc;
2494 2495
     }
2495 2496
 
... ...
@@ -3075,7 +3079,8 @@ static void Author_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_ac
3075 3075
     if (!(pdf))
3076 3076
         return;
3077 3077
 
3078
-    pdf->stats.author = pdf_parse_string(obj->start + pdf->map, obj_size(pdf, obj, 1), "/Author");
3078
+    if (!(pdf->stats.author))
3079
+        pdf->stats.author = pdf_parse_string(obj->start + pdf->map, obj_size(pdf, obj, 1), "/Author");
3079 3080
 }
3080 3081
 
3081 3082
 static void Creator_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
... ...
@@ -3083,7 +3088,8 @@ static void Creator_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_a
3083 3083
     if (!(pdf))
3084 3084
         return;
3085 3085
 
3086
-    pdf->stats.creator = pdf_parse_string(obj->start + pdf->map, obj_size(pdf, obj, 1), "/Creator");
3086
+    if (!(pdf->stats.creator))
3087
+        pdf->stats.creator = pdf_parse_string(obj->start + pdf->map, obj_size(pdf, obj, 1), "/Creator");
3087 3088
 }
3088 3089
 
3089 3090
 static void ModificationDate_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
... ...
@@ -3091,7 +3097,8 @@ static void ModificationDate_cb(struct pdf_struct *pdf, struct pdf_obj *obj, str
3091 3091
     if (!(pdf))
3092 3092
         return;
3093 3093
 
3094
-    pdf->stats.modificationdate = pdf_parse_string(obj->start + pdf->map, obj_size(pdf, obj, 1), "/ModDate");
3094
+    if (!(pdf->stats.modificationdate))
3095
+        pdf->stats.modificationdate = pdf_parse_string(obj->start + pdf->map, obj_size(pdf, obj, 1), "/ModDate");
3095 3096
 }
3096 3097
 
3097 3098
 static void CreationDate_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
... ...
@@ -3099,7 +3106,8 @@ static void CreationDate_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct
3099 3099
     if (!(pdf))
3100 3100
         return;
3101 3101
 
3102
-    pdf->stats.creationdate = pdf_parse_string(obj->start + pdf->map, obj_size(pdf, obj, 1), "/CreationDate");
3102
+    if (!(pdf->stats.creationdate))
3103
+        pdf->stats.creationdate = pdf_parse_string(obj->start + pdf->map, obj_size(pdf, obj, 1), "/CreationDate");
3103 3104
 }
3104 3105
 
3105 3106
 static void Producer_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_action *act)
... ...
@@ -3107,7 +3115,8 @@ static void Producer_cb(struct pdf_struct *pdf, struct pdf_obj *obj, struct pdf_
3107 3107
     if (!(pdf))
3108 3108
         return;
3109 3109
 
3110
-    pdf->stats.producer = pdf_parse_string(obj->start + pdf->map, obj_size(pdf, obj, 1), "/Producer");
3110
+    if (!(pdf->stats.producer))
3111
+        pdf->stats.producer = pdf_parse_string(obj->start + pdf->map, obj_size(pdf, obj, 1), "/Producer");
3111 3112
 }
3112 3113
 
3113 3114
 static void print_pdf_stats(struct pdf_struct *pdf)