From 0636c9dad3f74c88d3b645cb744882f294b72e02 Mon Sep 17 00:00:00 2001 From: c9s Date: Mon, 2 Jun 2014 01:21:02 +0800 Subject: [PATCH] fix slug compile pattern --- configure.ac | 3 +++ src/str.c | 3 +++ tests/Makefile.am | 5 ++--- tests/check_slug.c | 8 ++++---- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 73a7bce..27ffb21 100644 --- a/configure.ac +++ b/configure.ac @@ -90,6 +90,9 @@ AM_CONDITIONAL(ENABLE_GRAPHVIZ, test "x$enable_graphviz" = "xyes") AC_ARG_ENABLE(json, AS_HELP_STRING([--enable-json],[enable json encoder])) if test "x$enable_json" = "xyes"; then + PKG_CHECK_MODULES(JSONC, [json-c]) + AC_SUBST(JSONC_CFLAGS) + AC_SUBST(JSONC_LIBS) AC_DEFINE(ENABLE_JSON, 1, [enable json]) fi AM_CONDITIONAL(ENABLE_JSON, test "x$enable_json" = "xyes") diff --git a/src/str.c b/src/str.c index c2e7721..24bfe08 100644 --- a/src/str.c +++ b/src/str.c @@ -190,6 +190,9 @@ char * slug_compile(const char * str, int len) } o = out; + strncat(o, "^", 1); + o++; + strncat(o, str, s1 - str); // string before slug o += (s1 - str); diff --git a/tests/Makefile.am b/tests/Makefile.am index 2cf24db..b4cab82 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -6,14 +6,13 @@ # endif TESTS = -AM_CFLAGS=$(DEPS_CFLAGS) $(GVC_DEPS_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include -I$(top_builddir)/3rdparty -Wall -std=c99 -ggdb -Wall -AM_LDFLAGS=$(DEPS_LIBS) $(GVC_DEPS_LIBS) -L$(top_builddir) -lr3 -lcheck @CHECK_LIBS@ +AM_CFLAGS=$(DEPS_CFLAGS) $(GVC_DEPS_CFLAGS) $(JSONC_CFLAGS) -I$(top_builddir) -I$(top_builddir)/include -I$(top_builddir)/3rdparty -Wall -std=c99 -ggdb -Wall +AM_LDFLAGS=$(DEPS_LIBS) $(GVC_DEPS_LIBS) $(JSONC_LIBS) -L$(top_builddir) -lr3 -lcheck @CHECK_LIBS@ if USE_JEMALLOC AM_CFLAGS += -ljemalloc endif - noinst_HEADERS = \ bench.h \ $(NULL) diff --git a/tests/check_slug.c b/tests/check_slug.c index f916c3a..2413a72 100644 --- a/tests/check_slug.c +++ b/tests/check_slug.c @@ -25,19 +25,19 @@ START_TEST (test_slug_compile) { char * path = "/user/{id}"; char * c = NULL; - ck_assert_str_eq( c = slug_compile(path, strlen(path) ) , "/user/([^/]+)" ); + ck_assert_str_eq( c = slug_compile(path, strlen(path) ) , "^/user/([^/]+)" ); zfree(c); char * path2 = "/what/{id}-foo"; - ck_assert_str_eq( c = slug_compile(path2, strlen(path2) ) , "/what/([^/]+)-foo" ); + ck_assert_str_eq( c = slug_compile(path2, strlen(path2) ) , "^/what/([^/]+)-foo" ); zfree(c); char * path3 = "-{id}"; - ck_assert_str_eq( c = slug_compile(path3, strlen(path3)), "-([^/]+)" ); + ck_assert_str_eq( c = slug_compile(path3, strlen(path3)), "^-([^/]+)" ); zfree(c); char * path4 = "-{idx:\\d{3}}"; - ck_assert_str_eq( c = slug_compile(path4, strlen(path4)), "-(\\d{3})" ); + ck_assert_str_eq( c = slug_compile(path4, strlen(path4)), "^-(\\d{3})" ); zfree(c); } END_TEST