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 *parent_path(char *path_max_tmp, const char *path)
{ {
char *c; char *c;
static const int handle_trailing_slashes = 0;
pathcpy_trunc(path_max_tmp, path); 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,'/'); c = strrchr(path_max_tmp,'/');
if (c == NULL) if (c == NULL)
path_max_tmp[0] = '\0'; path_max_tmp[0] = '\0';
else { else {
/* strip redundant slashes: */
while ((path_max_tmp <= c) && *(--c) == '/') /* nothing */ while ((path_max_tmp <= c) && *(--c) == '/') /* nothing */
; ;
c[1] = '\0'; c[1] = '\0';

View File

@ -60,13 +60,20 @@ char *pfx_dir(char *dst,
const char *path, const size_t path_len, const char *path, const size_t path_len,
const char *pfx, const size_t pfx_len); const char *pfx, const size_t pfx_len);
/* relative music path to absolute music path /* relative music path to absolute music path */
* char * passed is a static variable, so don't free it
*/
char *rmp2amp_r(char *dst, const char *rel_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); 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); char *parent_path(char *path_max_tmp, const char *path);
/* strips extra "///" and leading "/" and trailing "/" */ /* strips extra "///" and leading "/" and trailing "/" */