Branch
Hash :
58b3e844
Author :
Thomas de Grivel
Date :
2025-09-18T13:51:49
fix pdf xref (maps in structs)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
/* kc3
* Copyright from 2022 to 2025 kmx.io <contact@kmx.io>
*
* Permission is hereby granted to use this software granted the above
* copyright notice and this permission paragraph are included in all
* copies and substantial portions of this software.
*
* THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
* PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
#include "../libkc3/kc3.h"
#include "pdf.h"
#include "pdf_buf_parse.h"
#include <assert.h>
s_pdf_file * pdf_parse_from_file (s_str *path, s_pdf_file *dest)
{
s_buf buf = {0};
FILE *fp = NULL;
s_pdf_file tmp = {0};
if (! (fp = file_open(path, "rb")))
return NULL;
if (! buf_init_alloc(&buf, BUF_SIZE)) {
err_puts("pdf_parse_from_file: buf_init_alloc");
assert(! "pdf_parse_from_file: buf_init_alloc");
fclose(fp);
return NULL;
}
if (! buf_file_open_r(&buf, fp)) {
err_puts("pdf_parse_from_file: buf_file_open_r");
assert(! "pdf_parse_from_file: buf_file_open_r");
buf_clean(&buf);
fclose(fp);
return NULL;
}
if (pdf_buf_parse_file(&buf, &tmp) <= 0) {
err_puts("pdf_parse_from_file: pdf_buf_parse_file");
assert(! "pdf_parse_from_file: pdf_buf_parse_file");
buf_file_close(&buf);
buf_clean(&buf);
fclose(fp);
return NULL;
}
buf_file_close(&buf);
buf_clean(&buf);
fclose(fp);
*dest = tmp;
return dest;
}
s_tag * pdf_parse_from_str (s_str *str, s_tag *dest)
{
s_buf buf = {0};
s_tag tmp = {0};
buf_init_str_const(&buf, str);
if (pdf_buf_parse(&buf, &tmp) < 0)
return NULL;
*dest = tmp;
return dest;
}