traceroute: preparatory trivial cleanups
[oweals/busybox.git] / libbb / concat_path_file.c
1 /* vi: set sw=4 ts=4: */
2 /*
3  * Utility routines.
4  *
5  * Copyright (C) many different people.
6  * If you wrote this, please acknowledge your work.
7  *
8  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
9  */
10
11 /* Concatenate path and filename to new allocated buffer.
12  * Add '/' only as needed (no duplicate // are produced).
13  * If path is NULL, it is assumed to be "/".
14  * filename should not be NULL.
15  */
16
17 #include "libbb.h"
18
19 char* FAST_FUNC concat_path_file(const char *path, const char *filename)
20 {
21         char *lc;
22
23         if (!path)
24                 path = "";
25         lc = last_char_is(path, '/');
26         while (*filename == '/')
27                 filename++;
28         return xasprintf("%s%s%s", path, (lc==NULL ? "/" : ""), filename);
29 }