Fix C output filenames in recursive database generation

This commit is contained in:
pancake committed 2026-10-04 09:35:39 +02:00
1 parent 070d0bd5e3
commit 105c54560e
3 files changed
+33 -30

No files matched your search

+8 -29
View File
@@ -375,35 +375,14 @@ static bool dothething(const char *basedir, const char *file_txt, bool mirror_mo
}
}
char *file_c = NULL;
if (output_dir) {
// Extract the base filename without path for C file name
const char *base_name = file_sdb;
const char *slash = strrchr(file_sdb, '/');
if (slash) {
base_name = slash + 1;
}
size_t len = strlen(output_dir) + strlen(base_name) + 2;
file_c = (char *)sdb_gh_malloc(len);
if (!file_c) {
sdb_gh_free(file_sdb);
return false;
}
snprintf(file_c, len, "%s/%s", output_dir, base_name);
size_t len_c = strlen(file_c);
if (len_c >= 3) {
file_c[len_c - 1] = 'c';
}
} else {
file_c = sdb_strdup (file_sdb);
if (!file_c) {
sdb_gh_free (file_sdb);
return false;
}
size_t len_c = strlen(file_c);
if (len_c >= 3) {
file_c[len_c - 1] = 'c';
}
char *file_c = sdb_strdup (file_sdb);
if (!file_c) {
sdb_gh_free (file_sdb);
return false;
}
size_t len_c = strlen (file_c);
if (len_c >= 3) {
strcpy (file_c + len_c - 3, "c");
}
char *file_gperf = sdb_strdup(file_c);
+1 -1
View File
@@ -6,7 +6,7 @@ BINS+=chkkey
include sdb-test.mk
SCRIPTS=createfail.sh testgrep.sh delkey.sh cli.sh
SCRIPTS=createfail.sh testgrep.sh delkey.sh cli.sh recursive.sh
ALL=all
all: $(BINS) $(SCRIPTS) reset
+24
View File
@@ -0,0 +1,24 @@
#!/bin/sh
. ./sdb-test.sh
set -eu
SDB="$(cd "$(dirname "$SDB")" && pwd)/$(basename "$SDB")"
tmp=$(mktemp -d)
trap 'rm -rf "$tmp"' EXIT HUP INT TERM
mkdir "$tmp/in" "$tmp/out"
printf 'foo=bar\n' > "$tmp/in/a.sdb.txt"
for mode in local output; do
if [ "$mode" = local ]; then
"$SDB" -r -r "$tmp/in"
dir="$tmp/in"
else
SDB_OUTPUT_DIR="$tmp/out" "$SDB" -r -r "$tmp/in"
dir="$tmp/out"
fi
test -s "$dir/a.c"
test ! -e "$dir/a.sdc"
test -s "$dir/a.sdb"
${CC:-cc} -Dsdb_strdup=strdup -DMAIN=1 "$dir/a.c" -o "$dir/check"
test "$("$dir/check")" = bar
test "$("$SDB" "$dir/a.sdb" bar)" = foo
done