...
|
...
|
@@ -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)
|