document parent_path()

git-svn-id: https://svn.musicpd.org/mpd/trunk@7128 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
Eric Wong 2008-01-03 07:22:18 +00:00
parent b70912031d
commit b1cdf8dadf
2 changed files with 20 additions and 3 deletions

View File

@ -225,13 +225,23 @@ void pathcpy_trunc(char *dest, const char *src)
char *parent_path(char *path_max_tmp, const char *path)
{
char *c;
static const int handle_trailing_slashes = 0;
pathcpy_trunc(path_max_tmp, path);
if (handle_trailing_slashes) {
size_t last_char = strlen(path_max_tmp) - 1;
while (last_char > 0 && path_max_tmp[last_char] == '/')
path_max_tmp[last_char--] = '\0';
}
c = strrchr(path_max_tmp,'/');
if (c == NULL)
path_max_tmp[0] = '\0';
else {
/* strip redundant slashes: */
while ((path_max_tmp <= c) && *(--c) == '/') /* nothing */
;
c[1] = '\0';

View File

@ -60,13 +60,20 @@ char *pfx_dir(char *dst,
const char *path, const size_t path_len,
const char *pfx, const size_t pfx_len);
/* relative music path to absolute music path
* char * passed is a static variable, so don't free it
*/
/* relative music path to absolute music path */
char *rmp2amp_r(char *dst, const char *rel_path);
/* relative playlist path to absolute playlist path */
char *rpp2app_r(char *dst, const char *rel_path);
/*
* parent_path - saner version of dirname(3) with slightly different semantics
* - we will return "" instead of "." or "/" if we have no parent
* this is because we only deal with internal paths
* - we always skip over redundant slashes in the middle, if there are any
* - we will never get meaningful paths with trailing slashes in our callers
* (set handle_trailing_slashes to true if we do)
*/
char *parent_path(char *path_max_tmp, const char *path);
/* strips extra "///" and leading "/" and trailing "/" */