slweb

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

чување 4bd161a8e84d6fbfa9b56218e5b87eade6e4def6
родитељ 670e57e9d5688d10356bc76c902645db8b079ba9
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Wed, 19 Jul 2023 15:09:26 +0200

slweb.c(process_incdir): Bugfix: make all optional params optional; optimize

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

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

diff --git a/slweb.c b/slweb.c @@ -1798,6 +1798,8 @@ process_incdir(FILE* output, const u8* token, const u8* link_prefix, long names_output; int details_open = 1; int list_only = 0; + int pass; + u8* parg = NULL; if (read_yaml_macros_and_links) return 0; @@ -1815,20 +1817,24 @@ process_incdir(FILE* output, const u8* token, const u8* link_prefix, incdir = strdup((char*)(arg + 1)); *(incdir + strlen(incdir) - 1) = 0; /* trim ending " */ + pass = 0; + +incdir_next_arg: arg = (u8*)strtok_r(NULL, " ", (char**)&saveptr); if (!arg) - goto skip_arg; + goto incdir_done_args; - if (*arg == '=') + parg = arg; + if (*parg == '=') macro_body = get_value(macros, macros_count, arg + 1); + else if (!strcmp((const char*)arg, "listonly")) + list_only = 1; else { - u8* parg = arg; while (parg && *parg) { if (*parg < '0' || *parg > '9') - exit(error(1, - (u8*)"incdir: Non-numeric argument")); + exit(error(1, (u8*)"incdir: Invalid argument")); parg++; } errno = 0; @@ -1836,32 +1842,12 @@ process_incdir(FILE* output, const u8* token, const u8* link_prefix, if (errno) exit(error(errno, (u8*)"incdir: Invalid parameter 'num'")); - arg = (u8*)strtok_r(NULL, " ", (char**)&saveptr); - if (arg) - { - if (*arg != '=') - { - free(incdir); - exit(error(1, - (u8*)"incdir: Third argument not " - "macro")); - } - macro_body = get_value(macros, macros_count, arg + 1); - } - } - - if (!arg) - goto skip_arg; - arg = (u8*)strtok_r(NULL, " ", (char**)&saveptr); - if (arg) - { - if (!strcmp((const char*)arg, "listonly")) - list_only = 1; - else - exit(error(errno, (u8*)"incdir: Invalid argument")); } + pass++; + if (pass < 3) + goto incdir_next_arg; -skip_arg: +incdir_done_args: print_output(output, "<ul class=\"incdir\">\n"); if ((names_total = scandir(incdir, &namelist, &filter_subdirs,