/* vi: set sw=4 ts=4: */ /* * Utility routines. * * Copyright (C) many different people. * If you wrote this, please acknowledge your work. * * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ #include "libbb.h" /* 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. */ char* FAST_FUNC concat_path_file(const char *path, const char *filename) { char *lc; if (!path) path = ""; #if ENABLE_PLATFORM_MINGW32 lc = last_char_is(path, '/') ?: last_char_is(path, '\\'); while (*filename == '/' || *filename == '\\') filename++; #else lc = last_char_is(path, '/'); while (*filename == '/') filename++; #endif return xasprintf("%s%s%s", path, (lc==NULL ? "/" : ""), filename); }