diff -r b3a89736b23e -r 66c22e54aa90 src/server/util/util.c --- a/src/server/util/util.c Sun Mar 17 19:19:57 2013 +0100 +++ b/src/server/util/util.c Tue Mar 19 17:38:32 2013 +0100 @@ -191,3 +191,34 @@ } return 500; } + + +NSAPI_PUBLIC +sstr_t util_path_append(pool_handle_t *pool, char *path, char *ch) { + sstr_t parent = sstr(path); + sstr_t child = sstr(ch); + sstr_t newstr; + sstr_t s; + + s.length = 0; + s.ptr = NULL; + newstr.length = parent.length + child.length; + if(parent.ptr[parent.length - 1] != '/') { + s = sstrn("/", 1); + newstr.length++; + } + + newstr.ptr = pool_malloc(pool, newstr.length + 1); + if(!newstr.ptr) { + // TODO: error + return newstr; + } + if(s.length == 1) { + newstr = sstrncat(3, newstr, parent, s, child); + } else { + newstr = sstrncat(2, newstr, parent, child); + } + newstr.ptr[newstr.length] = '\0'; + + return newstr; +}