Start 1.33.0 development cycle
[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 source tree.
9  */
10 #include "libbb.h"
11
12 /* Concatenate path and filename to new allocated buffer.
13  * Add '/' only as needed (no duplicate // are produced).
14  * If path is NULL, it is assumed to be "/".
15  * filename should not be NULL.
16  */
17
18 char* FAST_FUNC concat_path_file(const char *path, const char *filename)
19 {
20         char *lc;
21
22         if (!path)
23                 path = "";
24         lc = last_char_is(path, '/');
25         while (*filename == '/')
26                 filename++;
27         return xasprintf("%s%s%s", path, (lc==NULL ? "/" : ""), filename);
28 }