Hash :
c4a9421a
Author :
Thomas de Grivel
Date :
2025-09-09T02:03:25
pdf_buf_parse, pdf_parse_from_str, lib/kc3/0.1/pdf.kc3: PDF.parse_str, and add tests
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
/* 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"
s_tag * pdf_parse_from_file (s_str *path, s_tag *dest)
{
s_buf buf = {0};
FILE *fp = NULL;
s_tag tmp = {0};
if (! (fp = file_open(path, "rb")))
return NULL;
if (! buf_file_open_r(&buf, fp)) {
fclose(fp);
return NULL;
}
if (pdf_buf_parse(&buf, &tmp) < 0) {
buf_file_close(&buf);
fclose(fp);
return NULL;
}
buf_file_close(&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;
}