diff --git a/src/configfile.c b/src/configfile.c index 678cad51..26ba685f 100644 --- a/src/configfile.c +++ b/src/configfile.c @@ -301,10 +301,10 @@ int snoopy_configfile_parseValue_output ( outputArg = ""; } else { // Separate output name from its arguments + // (arguments may contain further ':' characters, like "file:/var/log/snoopy-%{datetime:%Y-%m-%d}") outputName = strtok_r(confVal, ":", &saveptr1); - outputArg = strtok_r(NULL , ":", &saveptr1); + outputArg = outputName + strlen(outputName) + 1; outputArgFound = SNOOPY_TRUE; - } // Determine output name diff --git a/tests/output/Makefile.am b/tests/output/Makefile.am index f5461140..2b9dff6f 100644 --- a/tests/output/Makefile.am +++ b/tests/output/Makefile.am @@ -18,6 +18,9 @@ if OUTPUT_ENABLED_file if DATASOURCE_ENABLED_username TESTS += output_file-dynamic.sh endif +if DATASOURCE_ENABLED_snoopy_literal + TESTS += output_file-dynamic-arg.sh +endif endif TESTS += output_noop.sh diff --git a/tests/output/output_file-dynamic-arg.sh b/tests/output/output_file-dynamic-arg.sh new file mode 100755 index 00000000..5d944f37 --- /dev/null +++ b/tests/output/output_file-dynamic-arg.sh @@ -0,0 +1,33 @@ +#!/bin/bash + + + +### Configure shell and bootstrap +# +set -e +set -u +. `dirname $BASH_SOURCE`/_bootstrap.sh + + + +### Output data +# +VAL_REAL=`date +%s` +MY_PID=$$ +MY_USERNAME=`whoami` +FILE_EXPECTED="output_file-dynamic-arg.sh.$MY_PID-asdf.tmp.out" +FILE_FORMAT="output_file-dynamic-arg.sh.$MY_PID-%{snoopy_literal:asdf}.tmp.out" + +# Write +rm -f $FILE_EXPECTED +$SNOOPY_TEST_CLI run output "$VAL_REAL" "file" "$FILE_FORMAT" > /dev/null + +# Read +VAL_SNOOPY=`cat $FILE_EXPECTED` +rm -f $FILE_EXPECTED + + + +### Evaluate +# +snoopy_test_compareValues "$VAL_SNOOPY" "$VAL_REAL"