X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=libbb%2Fconcat_path_file.c;h=fb533547eb28fce402900240f7fe6f2a366c0556;hb=b34759251d0140d9d4b7a8143b2ba217ce773523;hp=c699a84f7e57376321eb5374560d3d64401271cd;hpb=5a071bcbf2d30eacc2934128caf7a20b6fd70e15;p=oweals%2Fbusybox.git diff --git a/libbb/concat_path_file.c b/libbb/concat_path_file.c index c699a84f7..fb533547e 100644 --- a/libbb/concat_path_file.c +++ b/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 #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, '/'); - if (filename[0] == '/') + 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); }