чување a85d12b18ecf13939d253d9c9ffc8276a523b2e4
родитељ b7d717be87d2611fe70e50138e99a9185b2b2b3d
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Thu, 11 Apr 2024 11:27:31 +0200
slw2gmi.c: Fix incdir
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 1, додавања: 10(+), брисања: 14(-)
diff --git a/slw2gmi.c b/slw2gmi.c
@@ -1633,6 +1633,7 @@ process_incdir_subdir(FILE* output, const char* subdirname,
int result = 0;
ULLONG saved_state = ST_NONE;
char* filename = NULL;
+ char* abs_filename = NULL;
char* link = NULL;
u8* title = NULL;
u8* date = NULL;
@@ -1641,12 +1642,16 @@ process_incdir_subdir(FILE* output, const char* subdirname,
set_basedir(&basedir, &basedir_size,
abs_subdirname);
CALLOC(filename, char, BUFSIZE);
- snprintf(filename, BUFSIZE, "%s/%s", abs_subdirname,
+ CALLOC(abs_filename, char, BUFSIZE);
+ CALLOC(link, char, BUFSIZE);
+ snprintf(filename, BUFSIZE, "%s/%s", subdirname,
+ (*pnamelist)->d_name);
+ snprintf(abs_filename, BUFSIZE, "%s/%s", abs_subdirname,
(*pnamelist)->d_name);
link = strip_ext(filename);
read_file_into_buffer(&input, &buffer, &buffer_size,
- filename, &input_dirname);
+ abs_filename, &input_dirname);
free_keyvalue(&links, links_count);
free(links);
@@ -1677,7 +1682,7 @@ process_incdir_subdir(FILE* output, const char* subdirname,
skip_para_end = 0;
/* First pass: read YAML, macros and links */
- result = slweb_parse(output, filename, buffer, 1);
+ result = slweb_parse(output, abs_filename, buffer, 1);
if (result)
{
warning(1, (u8*)"slweb_parse error");
@@ -1687,25 +1692,16 @@ process_incdir_subdir(FILE* output, const char* subdirname,
title = get_value(vars, vars_count, (u8*)"title", NULL);
date = get_value(vars, vars_count, (u8*)"date", NULL);
- incdir_subdir_child_cleanup:
- slweb_cleanup();
- free(link);
- free(filename);
- free(buffer);
- free(abs_subdirname);
- while (names_total--)
- free(namelist[names_total]);
- free(namelist);
- exit(result);
-
process_timestamp(output, link_prefix, link, NULL, date,
title, ext_in_permalink);
state = saved_state;
+ incdir_subdir_child_cleanup:
fflush(output);
slweb_cleanup();
free(link);
+ free(abs_filename);
free(filename);
free(buffer);
free(abs_subdirname);