diff --git a/Makefile b/Makefile index 3d07c64..cf71335 100644 --- a/Makefile +++ b/Makefile @@ -218,24 +218,24 @@ distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print -ACLOCAL = ${SHELL} /home/ziggi/projects/jcomp/missing aclocal +ACLOCAL = ${SHELL} /home/ziggi/Projects/jcomp/missing aclocal AMTAR = $${TAR-tar} AM_DEFAULT_VERBOSITY = 1 -APP_CACHEDIR = /home/ziggi/projects/jcomp/cache -APP_CONFIGDIR = /home/ziggi/projects/jcomp/ -APP_DATABASEDIR = /home/ziggi/projects/jcomp/data -APP_LIBDIR = /home/ziggi/projects/jcomp/lib -APP_LOGDIR = /home/ziggi/projects/jcomp/log -APP_RUNDIR = /home/ziggi/projects/jcomp/run +APP_CACHEDIR = /home/ziggi/Projects/jcomp/cache +APP_CONFIGDIR = /home/ziggi/Projects/jcomp/ +APP_DATABASEDIR = /home/ziggi/Projects/jcomp/data +APP_LIBDIR = /home/ziggi/Projects/jcomp/lib +APP_LOGDIR = /home/ziggi/Projects/jcomp/log +APP_RUNDIR = /home/ziggi/Projects/jcomp/run APP_USER = ziggi -AUTOCONF = ${SHELL} /home/ziggi/projects/jcomp/missing autoconf -AUTOHEADER = ${SHELL} /home/ziggi/projects/jcomp/missing autoheader -AUTOMAKE = ${SHELL} /home/ziggi/projects/jcomp/missing automake +AUTOCONF = ${SHELL} /home/ziggi/Projects/jcomp/missing autoconf +AUTOHEADER = ${SHELL} /home/ziggi/Projects/jcomp/missing autoheader +AUTOMAKE = ${SHELL} /home/ziggi/Projects/jcomp/missing automake AWK = gawk CC = clang CCDEPMODE = depmode=none CFLAGS = -g -O2 -CP = /bin/cp +CP = /usr/local/bin/gcp CPPFLAGS = CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H @@ -254,7 +254,7 @@ LDFLAGS = LIBOBJS = LIBS = LTLIBOBJS = -MAKEINFO = ${SHELL} /home/ziggi/projects/jcomp/missing makeinfo +MAKEINFO = ${SHELL} /home/ziggi/Projects/jcomp/missing makeinfo MKDIR_P = /usr/local/bin/gmkdir -p OBJEXT = o PACKAGE = cworker @@ -268,24 +268,25 @@ PATH_SEPARATOR = : SET_MAKE = SHELL = /bin/sh STRIP = +VALGRIND = /usr/local/bin/valgrind VERSION = 0.0.1 -abs_builddir = /home/ziggi/projects/jcomp -abs_srcdir = /home/ziggi/projects/jcomp -abs_top_builddir = /home/ziggi/projects/jcomp -abs_top_srcdir = /home/ziggi/projects/jcomp +abs_builddir = /home/ziggi/Projects/jcomp +abs_srcdir = /home/ziggi/Projects/jcomp +abs_top_builddir = /home/ziggi/Projects/jcomp +abs_top_srcdir = /home/ziggi/Projects/jcomp ac_ct_CC = clang am__include = include am__leading_dot = . am__quote = am__tar = $${TAR-tar} chof - "$$tardir" am__untar = $${TAR-tar} xf - -app_cachedir = /home/ziggi/projects/jcomp/cache -app_configdir = /home/ziggi/projects/jcomp/ -app_databasedir = /home/ziggi/projects/jcomp/data -app_libdir = /home/ziggi/projects/jcomp/lib -app_logdir = /home/ziggi/projects/jcomp/log +app_cachedir = /home/ziggi/Projects/jcomp/cache +app_configdir = /home/ziggi/Projects/jcomp/ +app_databasedir = /home/ziggi/Projects/jcomp/data +app_libdir = /home/ziggi/Projects/jcomp/lib +app_logdir = /home/ziggi/Projects/jcomp/log app_name = cworker -app_rundir = /home/ziggi/projects/jcomp/run +app_rundir = /home/ziggi/Projects/jcomp/run app_user = ziggi bindir = ${exec_prefix}/bin build = amd64-unknown-freebsd12.4 @@ -307,7 +308,7 @@ host_vendor = unknown htmldir = ${docdir} includedir = ${prefix}/include infodir = ${datarootdir}/info -install_sh = ${SHELL} /home/ziggi/projects/jcomp/install-sh +install_sh = ${SHELL} /home/ziggi/Projects/jcomp/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localedir = ${datarootdir}/locale @@ -353,6 +354,7 @@ common_SOURCES = \ rcache.c \ rcache.h +#VALGRIND_OPT = --tool=memcheck bin_TESTS = \ cflexer_test \ cfparser_test \ @@ -875,9 +877,9 @@ run: $(sbin_PROGRAMS) test: $(bin_TESTS) @for test in $(bin_TESTS); do \ - echo === Test $${test} ==; \ - ./$${test}; \ - echo === Done $${test} ==; \ + echo ======= Test $${test} ======; \ + $(VALGRIND) $(VALGRIND_OPT) ./$${test}; \ + echo ====== Done $${test} ======; \ done clean-local: diff --git a/Makefile.am b/Makefile.am index 3511987..de1042f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -37,11 +37,15 @@ common_SOURCES = \ run: $(sbin_PROGRAMS) ./cworker +if HAVE_VALGRIND +VALGRIND_OPT = --tool=memcheck +endif + test: $(bin_TESTS) @for test in $(bin_TESTS); do \ - echo === Test $${test} ==; \ - ./$${test}; \ - echo === Done $${test} ==; \ + echo ======= Test $${test} ======; \ + $(VALGRIND) $(VALGRIND_OPT) ./$${test}; \ + echo ====== Done $${test} ======; \ done bin_TESTS = \ diff --git a/Makefile.in b/Makefile.in index 5b8be5e..f73bd5a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -268,6 +268,7 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +VALGRIND = @VALGRIND@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -353,6 +354,7 @@ common_SOURCES = \ rcache.c \ rcache.h +@HAVE_VALGRIND_TRUE@VALGRIND_OPT = --tool=memcheck bin_TESTS = \ cflexer_test \ cfparser_test \ @@ -875,9 +877,9 @@ run: $(sbin_PROGRAMS) test: $(bin_TESTS) @for test in $(bin_TESTS); do \ - echo === Test $${test} ==; \ - ./$${test}; \ - echo === Done $${test} ==; \ + echo ======= Test $${test} ======; \ + $(VALGRIND) $(VALGRIND_OPT) ./$${test}; \ + echo ====== Done $${test} ======; \ done clean-local: diff --git a/cfparser_test.c b/cfparser_test.c index 8d01c78..e3d2cab 100644 --- a/cfparser_test.c +++ b/cfparser_test.c @@ -21,12 +21,11 @@ int main(void) { MASSERT(fd > 0); rcache_t cache; - rcache_init(&cache, fd); - cflexer_t lexer; - cflexer_init(&lexer, &cache); - cfparser_t parser; + + rcache_init(&cache, fd); + cflexer_init(&lexer, &cache); cfparser_init(&parser, &lexer); if (cfparser_parse(&parser)) { @@ -35,12 +34,14 @@ int main(void) { } int64_t id = 0; - cfparser_bind(&parser, CFVALTYPE_INT, "id", (void *)&id); char* name = ""; + + cfparser_bind(&parser, CFVALTYPE_INT, "id", (void *)&id); cfparser_bind(&parser, CFVALTYPE_STR, "name", (void *)&name); cfparser_destroy(&parser); cflexer_destroy(&lexer); + rcache_destroy(&cache); MASSERT(id == -123); MASSERT(strcmp(name, "qwerty\"567") == 0); diff --git a/clparser_test.c b/clparser_test.c index 3914909..dad62d5 100644 --- a/clparser_test.c +++ b/clparser_test.c @@ -20,19 +20,15 @@ int main(void) { int argc = 3; cllexer_t lexer; - - cllexer_init(&lexer); - clparser_t parser; + cllexer_init(&lexer); clparser_init(&parser, &lexer); int id = 0; - - clparser_bind(&parser, CLTYPE_INT, "id", (void *)&id); - char* name = ""; + clparser_bind(&parser, CLTYPE_INT, "id", (void *)&id); clparser_bind(&parser, CLTYPE_STR, "name", (void *)&name); if (clparser_parse(&parser, &argv[1], argc - 1) < 0) { @@ -45,5 +41,8 @@ int main(void) { clparser_destroy(&parser); cllexer_destroy(&lexer); + free(name); + + return 0; } diff --git a/config.h b/config.h index cfd64fa..4a4f9a1 100644 --- a/config.h +++ b/config.h @@ -2,8 +2,8 @@ #ifndef CONFIG_H_QWER #define CONFIG_H_QWER -static const char *srv_runpath = "/home/ziggi/projects/jcomp/run/cworker.pid"; -static const char *srv_logpath = "/home/ziggi/projects/jcomp/log/cworker.log"; -static const char *srv_configpath = "/home/ziggi/projects/jcomp//cworker.conf"; +static const char *srv_runpath = "/home/ziggi/Projects/jcomp/run/cworker.pid"; +static const char *srv_logpath = "/home/ziggi/Projects/jcomp/log/cworker.log"; +static const char *srv_configpath = "/home/ziggi/Projects/jcomp//cworker.conf"; #endif diff --git a/config.status b/config.status index fdf12d9..4e767de 100755 --- a/config.status +++ b/config.status @@ -430,7 +430,7 @@ Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -ac_pwd='/home/ziggi/projects/jcomp' +ac_pwd='/home/ziggi/Projects/jcomp' srcdir='.' INSTALL='/usr/bin/install -c' MKDIR_P='/usr/local/bin/gmkdir -p' @@ -612,27 +612,27 @@ S["am__EXEEXT_FALSE"]="" S["am__EXEEXT_TRUE"]="#" S["LTLIBOBJS"]="" S["app_name"]="cworker" -S["app_cachedir"]="/home/ziggi/projects/jcomp/cache" -S["APP_CACHEDIR"]="/home/ziggi/projects/jcomp/cache" -S["app_databasedir"]="/home/ziggi/projects/jcomp/data" -S["APP_DATABASEDIR"]="/home/ziggi/projects/jcomp/data" +S["app_cachedir"]="/home/ziggi/Projects/jcomp/cache" +S["APP_CACHEDIR"]="/home/ziggi/Projects/jcomp/cache" +S["app_databasedir"]="/home/ziggi/Projects/jcomp/data" +S["APP_DATABASEDIR"]="/home/ziggi/Projects/jcomp/data" S["app_user"]="ziggi" S["APP_USER"]="ziggi" -S["app_libdir"]="/home/ziggi/projects/jcomp/lib" -S["APP_LIBDIR"]="/home/ziggi/projects/jcomp/lib" -S["app_rundir"]="/home/ziggi/projects/jcomp/run" -S["APP_RUNDIR"]="/home/ziggi/projects/jcomp/run" -S["app_logdir"]="/home/ziggi/projects/jcomp/log" -S["APP_LOGDIR"]="/home/ziggi/projects/jcomp/log" -S["app_configdir"]="/home/ziggi/projects/jcomp/" -S["APP_CONFIGDIR"]="/home/ziggi/projects/jcomp/" +S["app_libdir"]="/home/ziggi/Projects/jcomp/lib" +S["APP_LIBDIR"]="/home/ziggi/Projects/jcomp/lib" +S["app_rundir"]="/home/ziggi/Projects/jcomp/run" +S["APP_RUNDIR"]="/home/ziggi/Projects/jcomp/run" +S["app_logdir"]="/home/ziggi/Projects/jcomp/log" +S["APP_LOGDIR"]="/home/ziggi/Projects/jcomp/log" +S["app_configdir"]="/home/ziggi/Projects/jcomp/" +S["APP_CONFIGDIR"]="/home/ziggi/Projects/jcomp/" S["SYSTEMD_FALSE"]="" S["SYSTEMD_TRUE"]="#" S["LINUX_OS_FALSE"]="" S["LINUX_OS_TRUE"]="#" S["FREEBSD_OS_FALSE"]="#" S["FREEBSD_OS_TRUE"]="" -S["CP"]="/bin/cp" +S["CP"]="/usr/local/bin/gcp" S["HAVE_CP"]="true" S["LIBOBJS"]="" S["host_os"]="freebsd12.4" @@ -643,6 +643,9 @@ S["build_os"]="freebsd12.4" S["build_vendor"]="unknown" S["build_cpu"]="amd64" S["build"]="amd64-unknown-freebsd12.4" +S["HAVE_VALGRIND_FALSE"]="" +S["HAVE_VALGRIND_TRUE"]="#" +S["VALGRIND"]="/usr/local/bin/valgrind" S["am__fastdepCC_FALSE"]="" S["am__fastdepCC_TRUE"]="#" S["CCDEPMODE"]="depmode=none" @@ -673,12 +676,12 @@ S["mkdir_p"]="$(MKDIR_P)" S["MKDIR_P"]="/usr/local/bin/gmkdir -p" S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" S["STRIP"]="" -S["install_sh"]="${SHELL} /home/ziggi/projects/jcomp/install-sh" -S["MAKEINFO"]="${SHELL} /home/ziggi/projects/jcomp/missing makeinfo" -S["AUTOHEADER"]="${SHELL} /home/ziggi/projects/jcomp/missing autoheader" -S["AUTOMAKE"]="${SHELL} /home/ziggi/projects/jcomp/missing automake" -S["AUTOCONF"]="${SHELL} /home/ziggi/projects/jcomp/missing autoconf" -S["ACLOCAL"]="${SHELL} /home/ziggi/projects/jcomp/missing aclocal" +S["install_sh"]="${SHELL} /home/ziggi/Projects/jcomp/install-sh" +S["MAKEINFO"]="${SHELL} /home/ziggi/Projects/jcomp/missing makeinfo" +S["AUTOHEADER"]="${SHELL} /home/ziggi/Projects/jcomp/missing autoheader" +S["AUTOMAKE"]="${SHELL} /home/ziggi/Projects/jcomp/missing automake" +S["AUTOCONF"]="${SHELL} /home/ziggi/Projects/jcomp/missing autoconf" +S["ACLOCAL"]="${SHELL} /home/ziggi/Projects/jcomp/missing aclocal" S["VERSION"]="0.0.1" S["PACKAGE"]="cworker" S["CYGPATH_W"]="echo" @@ -810,13 +813,13 @@ D["HAVE_MEMSET"]=" 1" D["HAVE_MKDIR"]=" 1" D["HAVE_SETLOCALE"]=" 1" D["HAVE_SOCKET"]=" 1" -D["APP_CONFIGDIR"]=" \"/home/ziggi/projects/jcomp/\"" -D["APP_LOGDIR"]=" \"/home/ziggi/projects/jcomp/log\"" -D["APP_RUNDIR"]=" \"/home/ziggi/projects/jcomp/run\"" -D["APP_LIBDIR"]=" \"/home/ziggi/projects/jcomp/lib\"" +D["APP_CONFIGDIR"]=" \"/home/ziggi/Projects/jcomp/\"" +D["APP_LOGDIR"]=" \"/home/ziggi/Projects/jcomp/log\"" +D["APP_RUNDIR"]=" \"/home/ziggi/Projects/jcomp/run\"" +D["APP_LIBDIR"]=" \"/home/ziggi/Projects/jcomp/lib\"" D["APP_USER"]=" \"ziggi\"" -D["APP_DATABASEDIR"]=" \"/home/ziggi/projects/jcomp/data\"" -D["APP_CACHEDIR"]=" \"/home/ziggi/projects/jcomp/cache\"" +D["APP_DATABASEDIR"]=" \"/home/ziggi/Projects/jcomp/data\"" +D["APP_CACHEDIR"]=" \"/home/ziggi/Projects/jcomp/cache\"" for (key in D) D_is_set[key] = 1 FS = "" } diff --git a/configure.ac b/configure.ac index ab2383b..9ca9237 100644 --- a/configure.ac +++ b/configure.ac @@ -19,6 +19,11 @@ AC_TYPE_PID_T AC_TYPE_SSIZE_T AC_STRUCT_TIMEZONE +AC_PATH_PROG([VALGRIND],[valgrind true]) +AM_CONDITIONAL(HAVE_VALGRIND, [test "x$VALGRIND" = "xvalgrind"]) + + + # Checks for library functions. AC_FUNC_FORK AC_FUNC_MALLOC @@ -49,7 +54,7 @@ AC_CHECK_PROG(HAVE_CP, cp, true, false, /bin /usr/local/bin /usr/bin) if test "x$HAVE_CP" = "xfalse"; then AC_MSG_ERROR([Requested program cp not found]) fi -AC_PATH_PROG([CP],[cp cp]) +AC_PATH_PROG([CP],[gcp cp]) AC_PROG_INSTALL AC_CANONICAL_HOST diff --git a/defines.h b/defines.h index 236a77f..49bcb20 100644 --- a/defines.h +++ b/defines.h @@ -2,22 +2,22 @@ /* defines.h.in. Generated from configure.ac by autoheader. */ /* location of cache dir */ -#define APP_CACHEDIR "/home/ziggi/projects/jcomp/cache" +#define APP_CACHEDIR "/home/ziggi/Projects/jcomp/cache" /* location of configuration files for ${PACKAGE} */ -#define APP_CONFIGDIR "/home/ziggi/projects/jcomp/" +#define APP_CONFIGDIR "/home/ziggi/Projects/jcomp/" /* location of database dir */ -#define APP_DATABASEDIR "/home/ziggi/projects/jcomp/data" +#define APP_DATABASEDIR "/home/ziggi/Projects/jcomp/data" /* location of libs */ -#define APP_LIBDIR "/home/ziggi/projects/jcomp/lib" +#define APP_LIBDIR "/home/ziggi/Projects/jcomp/lib" /* location of ${PACKAGE} logdir */ -#define APP_LOGDIR "/home/ziggi/projects/jcomp/log" +#define APP_LOGDIR "/home/ziggi/Projects/jcomp/log" /* location of pid file */ -#define APP_RUNDIR "/home/ziggi/projects/jcomp/run" +#define APP_RUNDIR "/home/ziggi/Projects/jcomp/run" /* effective user */ #define APP_USER "ziggi" diff --git a/jparser.c b/jparser.c index ebb39ed..2ec345a 100644 --- a/jparser.c +++ b/jparser.c @@ -99,6 +99,7 @@ int jparser_parse(jparser_t * parser) { kv->type = JVALTYPE_STR; kv->str = val; } + free(key); parser->kvalsize++; pos++; break; @@ -140,5 +141,10 @@ int jparser_bind(jparser_t* parser, int type, char* key, void* ref) { } void jparser_destroy(jparser_t * parser) { + for (int i = 0; i < parser->kvalsize; i++) { + if (parser->kvalarr[i].type == JVALTYPE_STR) { + free(parser->kvalarr[i].str); + } + } free(parser->kvalarr); } diff --git a/jparser_test.c b/jparser_test.c index b0249d2..75d2071 100644 --- a/jparser_test.c +++ b/jparser_test.c @@ -22,16 +22,14 @@ int main(void) { MASSERT(fd > 0); + + rcache_t cache; - - rcache_init(&cache, fd); - jlexer_t lexer; - - jlexer_init(&lexer, &cache); - jparser_t parser; + rcache_init(&cache, fd); + jlexer_init(&lexer, &cache); jparser_init(&parser, &lexer); if (jparser_parse(&parser) < 0) { @@ -58,6 +56,7 @@ int main(void) { jparser_destroy(&parser); jlexer_destroy(&lexer); rcache_destroy(&cache); + free(name); return 0; }