mirror of
https://github.com/radareorg/sdb.git
synced 2026-11-07 06:36:02 -10:00
Fix C output filenames in recursive database generation
This commit is contained in:
1 parent
070d0bd5e3
commit
105c54560e
3 files changed
+33
-30
No files matched your search
+8
-29
@@ -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
@@ -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
|
||||
|
||||
Executable
+24
@@ -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
|
||||
Reference in new issue
Block a user