Skip to content

Commit

Permalink
fix crash when using zsv <cmd> help syntax for commands using CLI_B…
Browse files Browse the repository at this point in the history
…UILTIN_COMMAND() (#119)

* fix crash when using `zsv <cmd> help` syntax for commands using CLI_BUILTIN_COMMAND()
* add a simple test
  • Loading branch information
liquidaty authored Mar 22, 2023
1 parent 83dcabc commit e5fbdad
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 deletions.
9 changes: 7 additions & 2 deletions app/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -415,8 +415,13 @@ ${YAJL_HELPER_OBJ}: external/yajl_helper/yajl_helper.c
@mkdir -p `dirname "$@"`
${CC} ${CFLAGS} -I${BASEDIR}/yajl_helper ${YAJL_INCLUDE} ${YAJL_HELPER_INCLUDE} -c $< -o $@

test:
@${MAKE} -C test $@ QUIET=1 LEAKS=${LEAKS} CONFIGFILE=${CONFIGFILEPATH} DEBUG=${DEBUG}
test: test-standalone test-cli

test-standalone:
@${MAKE} -C test test QUIET=1 LEAKS=${LEAKS} CONFIGFILE=${CONFIGFILEPATH} DEBUG=${DEBUG}

test-cli: ${CLI}
@${MAKE} -C test $@ QUIET=1 LEAKS=${LEAKS} CONFIGFILE=${CONFIGFILEPATH} DEBUG=${DEBUG} CLI=${CLI}

clean-all: clean clean-external clean-obj clean-lib

Expand Down
7 changes: 6 additions & 1 deletion app/cli.c
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,12 @@ int ZSV_CLI_MAIN(int argc, const char *argv[]) {
argv[2],
"--help"
};
return help_builtin->main(2, argv_tmp);
if(help_builtin->main)
return help_builtin->main(2, argv_tmp);
else if(help_builtin->cmd)
return help_builtin->cmd(2, argv_tmp, NULL, NULL);
else
return fprintf(stderr, "Unexpected syntax!\n");
} else {
const char *ext_cmd = extension_cmd_from_arg(argv[2]);
if(ext_cmd) {
Expand Down
6 changes: 6 additions & 0 deletions app/test/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,12 @@ worldcitiespop_mil.csv:

test-count test-count-pull: test-% : test-1-% test-2-%

test-cli: ${CLI}
@${TEST_INIT}
@[ "${CLI}" = "" ] && echo 1>&2 'test-cli: missing CLI env var' && exit 1 || exit 0
@$< help select 2>&1 > ${TMP_DIR}/$@.out
@[ "`head -1 ${TMP_DIR}/$@.out`" = "select: streaming CSV parser" ] && [ $$(( `cat ${TMP_DIR}/$@.out | wc -l` )) = "35" ] && ${TEST_PASS} || ${TEST_FAIL}

test-1-count test-1-count-pull: test-1-% : ${BUILD_DIR}/bin/zsv_%${EXE} worldcitiespop_mil.csv
@${TEST_INIT}
@cat worldcitiespop_mil.csv | ${PREFIX} $< ${REDIRECT} ${TMP_DIR}/$@.out
Expand Down

0 comments on commit e5fbdad

Please sign in to comment.