diff options
Diffstat (limited to 'release/src/router/busybox/libbb/concat_path_file.c')
-rw-r--r-- | release/src/router/busybox/libbb/concat_path_file.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/release/src/router/busybox/libbb/concat_path_file.c b/release/src/router/busybox/libbb/concat_path_file.c index 86dd2fbb..fb533547 100644 --- a/release/src/router/busybox/libbb/concat_path_file.c +++ b/release/src/router/busybox/libbb/concat_path_file.c @@ -1,26 +1,29 @@ +/* vi: set sw=4 ts=4: */ /* - * busybox library eXtendet funcion + * Utility routines. * - * concatenate path and file name to new allocation buffer, - * not addition '/' if path name already have '/' + * Copyright (C) many different people. + * If you wrote this, please acknowledge your work. * -*/ + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. + */ + +/* Concatenate path and filename to new allocated buffer. + * Add '/' only as needed (no duplicate // are produced). + * If path is NULL, it is assumed to be "/". + * filename should not be NULL. + */ -#include <string.h> #include "libbb.h" -extern char *concat_path_file(const char *path, const char *filename) +char* FAST_FUNC concat_path_file(const char *path, const char *filename) { - char *outbuf; char *lc; if (!path) - path=""; + path = ""; lc = last_char_is(path, '/'); while (*filename == '/') filename++; - outbuf = xmalloc(strlen(path)+strlen(filename)+1+(lc==NULL)); - sprintf(outbuf, "%s%s%s", path, (lc==NULL)? "/" : "", filename); - - return outbuf; + return xasprintf("%s%s%s", path, (lc==NULL ? "/" : ""), filename); } |