slweb

Једноставни генератор статичких веб страна
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 7e1395d676b3571d20b80e04a943274c80ba252d
родитељ 09cb6170cb3cd833940dd479429918006af56b77
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Sun, 22 Aug 2021 12:27:26 +0200

Added const qualifiers, rearranged function parameters to be more consistent

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
Mslweb.c | 379+++++++++++++++++++++++++++++++++++++++----------------------------------------
измењених датотека: 1, додавања: 189(+), брисања: 190(-)

diff --git a/slweb.c b/slweb.c @@ -5,7 +5,7 @@ static size_t lineno = 0; static size_t colno = 1; static BOOL output_firstcol = TRUE; -static char* input_filename = NULL; +static const char* input_filename = NULL; static char* input_dirname = NULL; static char* basedir = NULL; static size_t basedir_size = 0; @@ -103,7 +103,7 @@ usage() } int -error(int code, u8* fmt, ...) +error(const int code, const u8* fmt, ...) { char buf[BUFSIZE]; va_list args; @@ -117,7 +117,7 @@ error(int code, u8* fmt, ...) } int -warning(int code, u8* fmt, ...) +warning(const int code, const u8* fmt, ...) { char buf[BUFSIZE]; va_list args; @@ -129,7 +129,7 @@ warning(int code, u8* fmt, ...) } int -free_keyvalue(KeyValue** list, size_t list_count) +free_keyvalue(KeyValue** list, const size_t list_count) { if (!list || !*list) return 1; @@ -171,8 +171,8 @@ slweb_cleanup() return 0; } -int slweb_parse(u8* buffer, FILE* output, BOOL body_only, - BOOL read_yaml_macros_and_links); +int slweb_parse(FILE* output, const u8* buffer, const BOOL body_only, + const BOOL read_yaml_macros_and_links); BOOL startswith(const char* s, const char* what) @@ -190,7 +190,7 @@ startswith(const char* s, const char* what) } u8* -get_value(KeyValue* list, size_t list_count, u8* key, BOOL* seen) +get_value(KeyValue* list, const size_t list_count, const u8* key, BOOL* seen) { KeyValue* plist = list; while (plist < list + list_count) @@ -210,7 +210,7 @@ get_value(KeyValue* list, size_t list_count, u8* key, BOOL* seen) } int -set_basedir(char* arg, char** basedir, size_t* basedir_size) +set_basedir(char** basedir, size_t* basedir_size, const char* arg) { size_t basedir_len = 0; size_t arg_len = strlen(arg); @@ -233,8 +233,8 @@ set_basedir(char* arg, char** basedir, size_t* basedir_size) } int -set_global_link_prefix(char* arg, char** global_link_prefix, - size_t* global_link_prefix_size) +set_global_link_prefix(char** global_link_prefix, + size_t* global_link_prefix_size, const char* arg) { size_t arg_len = strlen(arg); @@ -276,7 +276,7 @@ strip_ext(const char* fn) } int -print_output(FILE* output, char* fmt, ...) +print_output(FILE* output, const char* fmt, ...) { char buf[BUFSIZE]; va_list args; @@ -320,8 +320,8 @@ print_output(FILE* output, char* fmt, ...) #define PIPE_WRITE_INDEX 1 int -print_command(const char* command, const u8* pass_arguments[], - const u8* pipe_arguments[], FILE* output, BOOL strip_newlines) +print_command(FILE* output, const char* command, const u8* pass_arguments[], + const u8* pipe_arguments[], const BOOL strip_newlines) { if (!command || !pass_arguments) exit(error(EINVAL, (u8*)"print_command: Invalid argument")); @@ -403,8 +403,8 @@ print_command(const char* command, const u8* pass_arguments[], } int -read_file_into_buffer(u8** buffer, size_t* buffer_size, char* input_filename, - char** input_dirname, FILE** input) +read_file_into_buffer(FILE** input, u8** buffer, size_t* buffer_size, + const char* input_filename, char** input_dirname) { struct stat fs; char* slash = NULL; @@ -427,8 +427,8 @@ read_file_into_buffer(u8** buffer, size_t* buffer_size, char* input_filename, if (slash) { CALLOC(*input_dirname, char, strlen(input_filename) + 1); - char* pinput_dirname = *input_dirname; - char* pinput_filename = input_filename; + char* pinput_dirname = *input_dirname; + const char* pinput_filename = input_filename; while (pinput_filename && *pinput_filename && pinput_filename != slash) *pinput_dirname++ = *pinput_filename++; @@ -474,7 +474,8 @@ print_meta_var(FILE* output, u8** csv_header, u8** csv_register) } int -process_heading_start(FILE* output, UBYTE heading_level, ULONG heading_count) +process_heading_start(FILE* output, const UBYTE heading_level, + const ULONG heading_count) { print_output(output, "<h%d id=\"heading-%lu\">", heading_level, heading_count); @@ -482,7 +483,7 @@ process_heading_start(FILE* output, UBYTE heading_level, ULONG heading_count) } int -process_heading(u8* token, FILE* output, UBYTE heading_level) +process_heading(FILE* output, const u8* token, const UBYTE heading_level) { if (!token || strlen((char*)token) < 1) warning(1, (u8*)"Empty heading"); @@ -513,8 +514,8 @@ process_git_log(FILE* output) u8* pipe_args[] = {(u8*)basename, NULL}; print_output(output, "<div id=\"git-log\">\nPrevious commit:\n"); - result = print_command(CMD_GIT_LOG, (const u8**)CMD_GIT_LOG_ARGS, - (const u8**)pipe_args, output, FALSE); + result = print_command(output, CMD_GIT_LOG, + (const u8**)CMD_GIT_LOG_ARGS, (const u8**)pipe_args, FALSE); print_output(output, "</div><!--git-log-->\n"); output_firstcol = TRUE; @@ -813,8 +814,8 @@ read_csv(FILE* output, const char* filename, csv_callback_t callback) } int -process_csv(u8* arg_token, FILE* output, BOOL read_yaml_macros_and_links, - BOOL end_tag) +process_csv(FILE* output, const u8* arg_token, + const BOOL read_yaml_macros_and_links, const BOOL end_tag) { if (end_tag) { @@ -875,7 +876,8 @@ process_csv(u8* arg_token, FILE* output, BOOL read_yaml_macros_and_links, } int -process_include(u8* token, FILE* output, BOOL read_yaml_macros_and_links) +process_include(FILE* output, const u8* token, + const BOOL read_yaml_macros_and_links) { if (read_yaml_macros_and_links) return 0; @@ -900,6 +902,7 @@ process_include(u8* token, FILE* output, BOOL read_yaml_macros_and_links) wait(&pstatus); else if (pid == 0) { + char* filename = NULL; prctl(PR_SET_PDEATHSIG, SIGTERM); CALLOC(include_filename, char, BUFSIZE); @@ -912,10 +915,10 @@ process_include(u8* token, FILE* output, BOOL read_yaml_macros_and_links) ptoken++; if (!strcmp(basedir, ".")) - set_basedir(input_dirname, &basedir, &basedir_size); + set_basedir(&basedir, &basedir_size, input_dirname); - CALLOC(input_filename, char, BUFSIZE); - snprintf(input_filename, BUFSIZE, "%s/%s.slw", basedir, + CALLOC(filename, char, BUFSIZE); + snprintf(filename, BUFSIZE, "%s/%s.slw", basedir, include_filename); free(include_filename); @@ -926,9 +929,10 @@ process_include(u8* token, FILE* output, BOOL read_yaml_macros_and_links) int result = 0; ULLONG saved_state = ST_NONE; - read_file_into_buffer(&buffer, &buffer_size, input_filename, - &input_dirname, &input); + read_file_into_buffer(&input, &buffer, &buffer_size, filename, + &input_dirname); + free(filename); free_keyvalue(&links, links_count); free(links); links = NULL; @@ -952,7 +956,7 @@ process_include(u8* token, FILE* output, BOOL read_yaml_macros_and_links) state = ST_NONE; /* First pass: read YAML, macros and links */ - result = slweb_parse(buffer, output, TRUE, TRUE); + result = slweb_parse(output, buffer, TRUE, TRUE); if (result) { @@ -965,7 +969,7 @@ process_include(u8* token, FILE* output, BOOL read_yaml_macros_and_links) current_inline_footnote = 0; /* Second pass: parse and output */ - result = slweb_parse(buffer, output, TRUE, FALSE); + result = slweb_parse(output, buffer, TRUE, FALSE); state = saved_state; @@ -1086,11 +1090,11 @@ reverse_alphacompare(const struct dirent** a, const struct dirent** b) } int process_timestamp(FILE* output, const u8* link_prefix, const char* link, - u8* permalink_macro, u8* date); + const u8* permalink_macro, const u8* date); int -process_incdir_subdir(const char* subdirname, const u8* link_prefix, - FILE* output, BOOL details_open, u8* macro_body) +process_incdir_subdir(FILE* output, const char* subdirname, + const u8* link_prefix, const BOOL details_open, const u8* macro_body) { print_output(output, "<li>\n<details%s>\n<summary>", details_open ? " open" : ""); @@ -1136,9 +1140,11 @@ process_incdir_subdir(const char* subdirname, const u8* link_prefix, wait(&pstatus); else if (pid == 0) { - set_basedir(abs_subdirname, &basedir, &basedir_size); - snprintf(input_filename, BUFSIZE, "%s/%s", - abs_subdirname, (*pnamelist)->d_name); + char* filename = NULL; + set_basedir(&basedir, &basedir_size, abs_subdirname); + CALLOC(filename, char, BUFSIZE); + snprintf(filename, BUFSIZE, "%s/%s", abs_subdirname, + (*pnamelist)->d_name); FILE* input = NULL; FILE* output = stdout; @@ -1147,9 +1153,10 @@ process_incdir_subdir(const char* subdirname, const u8* link_prefix, int result = 0; ULLONG saved_state = ST_NONE; - read_file_into_buffer(&buffer, &buffer_size, - input_filename, &input_dirname, &input); + read_file_into_buffer(&input, &buffer, &buffer_size, + input_filename, &input_dirname); + free(filename); free_keyvalue(&links, links_count); free(links); links = NULL; @@ -1173,7 +1180,7 @@ process_incdir_subdir(const char* subdirname, const u8* link_prefix, state = ST_NONE; /* First pass: read YAML, macros and links */ - result = slweb_parse(buffer, output, TRUE, TRUE); + result = slweb_parse(output, buffer, TRUE, TRUE); if (result) { @@ -1191,7 +1198,7 @@ process_incdir_subdir(const char* subdirname, const u8* link_prefix, current_inline_footnote = 0; /* Second pass: parse and output */ - result = slweb_parse(buffer, output, TRUE, FALSE); + result = slweb_parse(output, buffer, TRUE, FALSE); state = saved_state; @@ -1222,8 +1229,8 @@ process_incdir_subdir(const char* subdirname, const u8* link_prefix, } int -process_incdir(u8* token, const u8* link_prefix, FILE* output, - BOOL read_yaml_macros_and_links) +process_incdir(FILE* output, const u8* token, const u8* link_prefix, + const BOOL read_yaml_macros_and_links) { if (read_yaml_macros_and_links) return 0; @@ -1302,7 +1309,7 @@ process_incdir(u8* token, const u8* link_prefix, FILE* output, names_output = 0; while (names_output < num && pnamelist && *pnamelist) { - process_incdir_subdir((*pnamelist)->d_name, link_prefix, output, + process_incdir_subdir(output, (*pnamelist)->d_name, link_prefix, details_open, macro_body); details_open = FALSE; pnamelist++; @@ -1323,7 +1330,7 @@ BOOL url_is_local(const char* url); int process_timestamp(FILE* output, const u8* link_prefix, const char* link, - u8* permalink_macro, u8* date) + const u8* permalink_macro, const u8* date) { u8* day = NULL; u8* month = NULL; @@ -1384,8 +1391,8 @@ process_timestamp_cleanup: } int -process_macro(u8* token, FILE* output, BOOL read_yaml_macros_and_links, - BOOL end_tag) +process_macro(FILE* output, const u8* token, + const BOOL read_yaml_macros_and_links, const BOOL end_tag) { if (!end_tag) { @@ -1454,8 +1461,9 @@ process_macro(u8* token, FILE* output, BOOL read_yaml_macros_and_links, } int -process_tag(u8* token, const u8* link_prefix, FILE* output, - BOOL read_yaml_macros_and_links, BOOL* skip_eol, BOOL end_tag) +process_tag(FILE* output, const u8* token, const u8* link_prefix, + const BOOL read_yaml_macros_and_links, BOOL* skip_eol, + const BOOL end_tag) { if (!token || strlen((char*)token) < 1) return warning(1, (u8*)"%s:%ld:%ld: Empty tag name", @@ -1480,22 +1488,22 @@ process_tag(u8* token, const u8* link_prefix, FILE* output, } else if (startswith((char*)token, "csv")) /* {csv} */ { - process_csv(token, output, read_yaml_macros_and_links, end_tag); + process_csv(output, token, read_yaml_macros_and_links, end_tag); } else if (startswith((char*)token, "include")) /* {include} */ { - process_include(token, output, read_yaml_macros_and_links); + process_include(output, token, read_yaml_macros_and_links); *skip_eol = TRUE; } else if (startswith((char*)token, "incdir")) /* {incdir} */ { - process_incdir(token, link_prefix, output, + process_incdir(output, token, link_prefix, read_yaml_macros_and_links); *skip_eol = TRUE; } else if (*token == '=') /* {=macro} */ { - process_macro(token, output, read_yaml_macros_and_links, + process_macro(output, token, read_yaml_macros_and_links, end_tag); *skip_eol = TRUE; } @@ -1558,42 +1566,42 @@ process_tag(u8* token, const u8* link_prefix, FILE* output, } int -process_bold(FILE* output, BOOL end_tag) +process_bold(FILE* output, const BOOL end_tag) { print_output(output, "<%sstrong>", end_tag ? "/" : ""); return 0; } int -process_italic(FILE* output, BOOL end_tag) +process_italic(FILE* output, const BOOL end_tag) { print_output(output, "<%sem>", end_tag ? "/" : ""); return 0; } int -process_code(FILE* output, BOOL end_tag) +process_code(FILE* output, const BOOL end_tag) { print_output(output, "<%scode>", end_tag ? "/" : ""); return 0; } int -process_blockquote(FILE* output, BOOL end_tag) +process_blockquote(FILE* output, const BOOL end_tag) { print_output(output, "<%sblockquote>", end_tag ? "/" : ""); return 0; } int -process_kbd(FILE* output, BOOL end_tag) +process_kbd(FILE* output, const BOOL end_tag) { print_output(output, "<%skbd>", end_tag ? "/" : ""); return 0; } int -process_strike(FILE* output, BOOL end_tag) +process_strike(FILE* output, const BOOL end_tag) { print_output(output, "<%ss>", end_tag ? "/" : ""); return 0; @@ -1623,7 +1631,7 @@ process_table_header_end(FILE* output) } int -process_table_body_start(FILE* output, BOOL start_row) +process_table_body_start(FILE* output, const BOOL start_row) { print_output(output, "<tbody>\n"); if (start_row) @@ -1668,7 +1676,7 @@ url_is_local(const char* url) } int -get_realpath(char** realpath, char* relativeto, char* path) +get_realpath(char** realpath, const char* relativeto, const char* path) { u8* command = NULL; FILE* cmd_output = NULL; @@ -1706,8 +1714,8 @@ get_realpath(char** realpath, char* relativeto, char* path) } int -process_inline_link(u8* link_text, const u8* link_prefix, u8* link_macro_body, - u8* link_url, FILE* output) +process_inline_link(FILE* output, const u8* link_text, const u8* link_prefix, + const u8* link_macro_body, const u8* link_url) { print_output(output, "<a href=\"%s%s%s\">%s%s</a>", global_link_prefix ? (const char*)global_link_prefix : "", @@ -1720,17 +1728,16 @@ process_inline_link(u8* link_text, const u8* link_prefix, u8* link_macro_body, } int -process_link(u8* link_text, const u8* link_prefix, u8* link_macro_body, - u8* link_id, FILE* output) +process_link(FILE* output, const u8* link_text, const u8* link_prefix, + const u8* link_macro_body, const u8* link_id) { u8* url = get_value(links, links_count, link_id, NULL); - return process_inline_link(link_text, link_prefix, link_macro_body, url, - output); + return process_inline_link(output, link_text, link_prefix, + link_macro_body, url); } int -print_image_dimensions(FILE* output, const u8* image_file_prefix, - const u8* path, int* width, int* height) +print_image_dimensions(FILE* output, const u8* image_file_prefix, const u8* path) { struct stat sb; FILE* cmd_output = NULL; @@ -1744,13 +1751,12 @@ print_image_dimensions(FILE* output, const u8* image_file_prefix, snprintf(image_path, BUFSIZE - 1, "%s%s%s", image_file_prefix ? (char*)image_file_prefix : ".", - *path == '/' ? "" : "/", - path); + *path == '/' ? "" : "/", path); char cwd[BUFSIZE]; - getcwd(cwd, BUFSIZE-1); + getcwd(cwd, BUFSIZE - 1); fprintf(stderr, "image-file-prefix: %s\n", - image_file_prefix ? (char*)image_file_prefix : "(NULL)"); + image_file_prefix ? (char*)image_file_prefix : "(NULL)"); fprintf(stderr, "cwd: %s\n", cwd); fprintf(stderr, "basedir: %s\n", basedir); fprintf(stderr, "image_path: %s\n", image_path); @@ -1778,9 +1784,9 @@ print_dimensions_cleanup: } int -process_inline_image(u8* image_text, const u8* image_file_prefix, - const u8* link_prefix, u8* image_url, FILE* output, BOOL add_link, - BOOL add_figcaption) +process_inline_image(FILE* output, const u8* image_text, + const u8* image_file_prefix, const u8* link_prefix, const u8* image_url, + const BOOL add_link, const BOOL add_figcaption) { int width = -1; int height = -1; @@ -1800,8 +1806,7 @@ process_inline_image(u8* image_text, const u8* image_file_prefix, print_output(output, "<img src=\"%s\" alt=\"%s\" ", image_url ? (char*)image_url : "", image_text); if (image_url) - print_image_dimensions(output, image_file_prefix, image_url, - &width, &height); + print_image_dimensions(output, image_file_prefix, image_url); print_output(output, "%s/>", image_url ? " " : ""); output_firstcol = FALSE; @@ -1819,18 +1824,19 @@ process_inline_image(u8* image_text, const u8* image_file_prefix, } int -process_image(u8* image_text, const u8* image_file_prefix, const u8* link_prefix, - u8* image_id, FILE* output, BOOL add_link, BOOL add_figcaption) +process_image(FILE* output, const u8* image_text, const u8* image_file_prefix, + const u8* link_prefix, const u8* image_id, const BOOL add_link, + const BOOL add_figcaption) { u8* url = get_value(links, links_count, image_id, NULL); - return process_inline_image(image_text, image_file_prefix, link_prefix, url, - output, add_link, add_figcaption); + return process_inline_image(output, image_text, image_file_prefix, + link_prefix, url, add_link, add_figcaption); } int -process_line_start(u8* line, const u8* link_prefix, BOOL first_line_in_doc, - BOOL previous_line_blank, BOOL read_yaml_macros_and_links, - BOOL list_para, FILE* output, u8** token, u8** ptoken) +process_line_start(FILE* output, const u8* line, const u8* link_prefix, + const BOOL first_line_in_doc, const BOOL previous_line_blank, + const BOOL read_yaml_macros_and_links, const BOOL list_para) { if ((first_line_in_doc || previous_line_blank) && !(ANY(state, ST_BLOCKQUOTE | ST_PRE))) @@ -1882,18 +1888,18 @@ process_line_start(u8* line, const u8* link_prefix, BOOL first_line_in_doc, } int -process_text_token(u8* line, const u8* link_prefix, BOOL first_line_in_doc, - BOOL previous_line_blank, BOOL processed_start_of_line, - BOOL read_yaml_macros_and_links, BOOL list_para, FILE* output, - u8** token, u8** ptoken, size_t* token_size, - BOOL add_enclosing_paragraph) +process_text_token(FILE* output, const u8* line, const u8* link_prefix, + const BOOL first_line_in_doc, const BOOL previous_line_blank, + const BOOL processed_start_of_line, + const BOOL read_yaml_macros_and_links, const BOOL list_para, u8** token, + u8** ptoken, size_t* token_size, const BOOL add_enclosing_paragraph) { if (!(state & ST_YAML)) { if (add_enclosing_paragraph && !processed_start_of_line) - process_line_start(line, link_prefix, first_line_in_doc, - previous_line_blank, read_yaml_macros_and_links, - list_para, output, token, ptoken); + process_line_start(output, line, link_prefix, + first_line_in_doc, previous_line_blank, + read_yaml_macros_and_links, list_para); **ptoken = 0; if (**token && !read_yaml_macros_and_links && !(state & ST_MACRO_BODY)) @@ -1913,7 +1919,8 @@ process_text_token(u8* line, const u8* link_prefix, BOOL first_line_in_doc, } int -process_inline_footnote(u8* token, BOOL read_yaml_macros_and_links, FILE* output) +process_inline_footnote(const u8* token, const BOOL read_yaml_macros_and_links, + FILE* output) { current_inline_footnote++; @@ -1955,8 +1962,8 @@ process_inline_footnote(u8* token, BOOL read_yaml_macros_and_links, FILE* output } int -process_footnote(u8* token, BOOL footnote_definition, BOOL footnote_output, - FILE* output) +process_footnote(FILE* output, const u8* token, const BOOL footnote_definition, + const BOOL footnote_output) { current_footnote++; @@ -2009,15 +2016,15 @@ process_horizontal_rule(FILE* output) } int -process_formula(FILE* output, const u8* token, BOOL display_formula) +process_formula(FILE* output, const u8* token, const BOOL display_formula) { int result = 0; const u8* pipe_args[] = {token, NULL}; - result = print_command(CMD_KATEX, + result = print_command(output, CMD_KATEX, display_formula ? (const u8**)CMD_KATEX_DISPLAY_ARGS : (const u8**)CMD_KATEX_INLINE_ARGS, - (const u8**)pipe_args, output, TRUE); + (const u8**)pipe_args, TRUE); if (result) { @@ -2144,10 +2151,10 @@ begin_article(FILE* output, const u8* link_prefix, if (date && input_filename) { - char* link = strip_ext(input_filename); - char* real_link = NULL; - u8* permalink_macro = get_value(macros, macros_count, - (u8*)"permalink", NULL); + char* link = strip_ext(input_filename); + char* real_link = NULL; + u8* permalink_macro = get_value(macros, macros_count, + (u8*)"permalink", NULL); CALLOC(real_link, char, BUFSIZE); if (ext_in_permalink) @@ -2235,8 +2242,8 @@ end_body_and_html(FILE* output) } int -slweb_parse(u8* buffer, FILE* output, BOOL body_only, - BOOL read_yaml_macros_and_links) +slweb_parse(FILE* output, const u8* buffer, const BOOL body_only, + const BOOL read_yaml_macros_and_links) { u8* title = NULL; u8* title_heading_level = NULL; @@ -2251,7 +2258,7 @@ slweb_parse(u8* buffer, FILE* output, BOOL body_only, u8* var_add_footnote_div = NULL; u8* image_file_prefix = NULL; u8* link_prefix = NULL; - u8* pbuffer = NULL; + const u8* pbuffer = NULL; u8* line = NULL; u8* pline = NULL; size_t line_len = 0; @@ -2504,12 +2511,11 @@ do_line: else { /* Output existing text up to ~~ */ - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); processed_start_of_line = TRUE; if (!read_yaml_macros_and_links @@ -2547,12 +2553,11 @@ do_line: else { /* Output existing text up to ~ */ - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); processed_start_of_line = TRUE; if (!read_yaml_macros_and_links @@ -2621,12 +2626,11 @@ do_line: else { /* Output existing text up to ` */ - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); processed_start_of_line = TRUE; if (!read_yaml_macros_and_links @@ -2729,12 +2733,11 @@ do_line: else { /* Output existing text up to __ */ - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); processed_start_of_line = TRUE; if (!read_yaml_macros_and_links @@ -2773,12 +2776,11 @@ do_line: else { /* Output existing text up to _ */ - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); processed_start_of_line = TRUE; if (!read_yaml_macros_and_links @@ -2856,9 +2858,9 @@ do_line: pline_len = strlen((char*)pline); if (colno == 1 && pline_len > 1 && *(pline + 1) == '[') { - process_line_start(line, link_prefix, first_line_in_doc, - previous_line_blank, read_yaml_macros_and_links, - list_para, output, &token, &ptoken); + process_line_start(output, line, link_prefix, + first_line_in_doc, previous_line_blank, + read_yaml_macros_and_links, list_para); /* Ignore abbreviations (for now) */ pline = NULL; @@ -2927,12 +2929,11 @@ do_line: else { /* Output existing text up to * */ - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); processed_start_of_line = TRUE; if (!read_yaml_macros_and_links @@ -2972,12 +2973,11 @@ do_line: else { /* Output existing text up to * */ - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); processed_start_of_line = TRUE; if (!read_yaml_macros_and_links @@ -3022,10 +3022,11 @@ do_line: && startswith((char*)pline, " ")) { list_para = TRUE; - process_text_token(line, link_prefix, first_line_in_doc, - previous_line_blank, processed_start_of_line, - read_yaml_macros_and_links, list_para, output, - &token, &ptoken, &token_size, TRUE); + process_text_token(output, line, link_prefix, + first_line_in_doc, previous_line_blank, + processed_start_of_line, + read_yaml_macros_and_links, list_para, &token, + &ptoken, &token_size, TRUE); processed_start_of_line = TRUE; while (*pline == ' ' || *pline == '\t') { @@ -3114,10 +3115,11 @@ do_line: else { /* Output existing text up to { */ - process_text_token(line, link_prefix, first_line_in_doc, - previous_line_blank, processed_start_of_line, - read_yaml_macros_and_links, list_para, output, - &token, &ptoken, &token_size, FALSE); + process_text_token(output, line, link_prefix, + first_line_in_doc, previous_line_blank, + processed_start_of_line, + read_yaml_macros_and_links, list_para, &token, + &ptoken, &token_size, FALSE); processed_start_of_line = TRUE; } @@ -3164,7 +3166,7 @@ do_line: state &= ~ST_TAG; *ptoken = 0; - process_tag(token, link_prefix, output, + process_tag(output, token, link_prefix, read_yaml_macros_and_links, &skip_eol, end_tag); RESET_TOKEN(token, ptoken, token_size); @@ -3212,12 +3214,11 @@ do_line: else { /* Output existing text up to || */ - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); processed_start_of_line = TRUE; if (!read_yaml_macros_and_links @@ -3469,10 +3470,11 @@ do_line: { /* Output existing text up to ! */ *ptoken = 0; - process_text_token(line, link_prefix, first_line_in_doc, - previous_line_blank, processed_start_of_line, - read_yaml_macros_and_links, list_para, output, - &token, &ptoken, &token_size, FALSE); + process_text_token(output, line, link_prefix, + first_line_in_doc, previous_line_blank, + processed_start_of_line, + read_yaml_macros_and_links, list_para, &token, + &ptoken, &token_size, FALSE); processed_start_of_line = TRUE; RESET_TOKEN(token, ptoken, token_size); @@ -3544,12 +3546,11 @@ do_line: { /* Output existing text up to [^ */ *ptoken = 0; - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); } processed_start_of_line = TRUE; @@ -3563,10 +3564,11 @@ do_line: { /* Output existing text up to [ */ *ptoken = 0; - process_text_token(line, link_prefix, first_line_in_doc, - previous_line_blank, processed_start_of_line, - read_yaml_macros_and_links, list_para, output, - &token, &ptoken, &token_size, TRUE); + process_text_token(output, line, link_prefix, + first_line_in_doc, previous_line_blank, + processed_start_of_line, + read_yaml_macros_and_links, list_para, &token, + &ptoken, &token_size, TRUE); } processed_start_of_line = TRUE; @@ -3669,15 +3671,15 @@ do_line: if (!read_yaml_macros_and_links) { if (state & ST_LINK_SECOND_ARG) - process_inline_link(link_text, + process_inline_link(output, link_text, link_prefix, get_value(macros, macros_count, link_macro, NULL), - token, output); + token); else - process_inline_image(link_text, + process_inline_image(output, link_text, image_file_prefix, link_prefix, - token, output, add_image_links, + token, add_image_links, add_figcaption); } RESET_TOKEN(token, ptoken, token_size); @@ -3718,12 +3720,11 @@ do_line: && (*(pline + 1) == ':') && footnote_at_line_start; - process_footnote(token, + process_footnote(output, token, footnote_definition && read_yaml_macros_and_links, !footnote_definition - && !read_yaml_macros_and_links, - output); + && !read_yaml_macros_and_links); RESET_TOKEN(token, ptoken, token_size); state &= ~ST_FOOTNOTE; @@ -3745,10 +3746,10 @@ do_line: else if (state & ST_LINK_SECOND_ARG) { if (!read_yaml_macros_and_links) - process_link(link_text, link_prefix, + process_link(output, link_text, link_prefix, get_value(macros, macros_count, link_macro, NULL), - token, output); + token); RESET_TOKEN(token, ptoken, token_size); state &= ~(ST_LINK | ST_LINK_SECOND_ARG); pline++; @@ -3757,8 +3758,8 @@ do_line: else if (state & ST_IMAGE_SECOND_ARG) { if (!read_yaml_macros_and_links) - process_image(link_text, image_file_prefix, - link_prefix, token, output, + process_image(output, link_text, + image_file_prefix, link_prefix, token, add_image_links, add_figcaption); RESET_TOKEN(token, ptoken, token_size); state &= ~(ST_IMAGE | ST_IMAGE_SECOND_ARG); @@ -3856,10 +3857,11 @@ do_line: { /* Output existing text up to ^[ */ *ptoken = 0; - process_text_token(line, link_prefix, first_line_in_doc, - previous_line_blank, processed_start_of_line, - read_yaml_macros_and_links, list_para, output, - &token, &ptoken, &token_size, TRUE); + process_text_token(output, line, link_prefix, + first_line_in_doc, previous_line_blank, + processed_start_of_line, + read_yaml_macros_and_links, list_para, &token, + &ptoken, &token_size, TRUE); processed_start_of_line = TRUE; RESET_TOKEN(token, ptoken, token_size); @@ -3920,12 +3922,11 @@ do_line: if (!(state & ST_DISPLAY_FORMULA)) { /* Output existing text up to $$ */ - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); } processed_start_of_line = TRUE; @@ -3957,12 +3958,11 @@ do_line: if (!(state & ST_FORMULA)) { /* Output existing text up to $ */ - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); } processed_start_of_line = TRUE; @@ -4215,7 +4215,7 @@ done_line: state &= ~(ST_HEADING | ST_HEADING_TEXT); if (!read_yaml_macros_and_links) { - process_heading(token, output, + process_heading(output, token, heading_level); output_firstcol = FALSE; } @@ -4226,12 +4226,11 @@ done_line: else if (!ANY(state, ST_DISPLAY_FORMULA | ST_FORMULA | ST_IMAGE | ST_LINK)) - process_text_token(line, link_prefix, + process_text_token(output, line, link_prefix, first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - output, &token, &ptoken, &token_size, - TRUE); + &token, &ptoken, &token_size, TRUE); } if (!ANY(state, @@ -4395,9 +4394,9 @@ done_buffer: } int -main(int argc, char** argv) +main(const int argc, const char** argv) { - char* arg; + const char* arg; Command cmd = CMD_NONE; BOOL body_only = FALSE; int result = 0; @@ -4426,17 +4425,17 @@ main(int argc, char** argv) else if (startswith(arg, "basedir")) { arg += strlen("basedir"); - result = set_basedir(arg, &basedir, - &basedir_size); + result = set_basedir(&basedir, + &basedir_size, arg); if (result) return result; } else if (startswith(arg, "global-link-prefix")) { arg += strlen("global-link-prefix"); - result = set_global_link_prefix(arg, + result = set_global_link_prefix( &global_link_prefix, - &global_link_prefix_size); + &global_link_prefix_size, arg); if (result) return result; } @@ -4483,8 +4482,8 @@ main(int argc, char** argv) if (cmd == CMD_BASEDIR) { - result = set_basedir(arg, &basedir, - &basedir_size); + result = set_basedir(&basedir, &basedir_size, + arg); if (result) return result; } @@ -4506,8 +4505,8 @@ main(int argc, char** argv) size_t buffer_size = 0; if (input_filename) - read_file_into_buffer(&buffer, &buffer_size, input_filename, - &input_dirname, &input); + read_file_into_buffer(&input, &buffer, &buffer_size, + input_filename, &input_dirname); else { u8* bufline = NULL; @@ -4554,7 +4553,7 @@ main(int argc, char** argv) inline_footnote_count = 0; /* First pass: read YAML, macros and links */ - result = slweb_parse(buffer, output, body_only, TRUE); + result = slweb_parse(output, buffer, body_only, TRUE); if (result) { @@ -4568,7 +4567,7 @@ main(int argc, char** argv) current_inline_footnote = 0; /* Second pass: parse and output */ - result = slweb_parse(buffer, output, body_only, FALSE); + result = slweb_parse(output, buffer, body_only, FALSE); slweb_cleanup(); free(buffer);