# HG changeset patch # User cboesch # Date 1290359254 0 # Node ID 8fffd26d06ae63df85a4aca59ce7bda64ca2a2e1 # Parent c44141d4e4430c596f9fa61360dd2d57fa29d16c Add a mp_dirname function (unused at the moment) diff -r c44141d4e443 -r 8fffd26d06ae path.c --- a/path.c Sun Nov 21 16:52:22 2010 +0000 +++ b/path.c Sun Nov 21 17:07:34 2010 +0000 @@ -206,3 +206,27 @@ s = strrchr(path, '/'); return s ? s + 1 : path; } + +/** + * \brief Allocates a new buffer containing the directory name + * \param path Original path. Must be a valid string. + * + * The path returned always contains a trailing slash '/'. + * On systems supporting DOS paths, '\' is also considered as a directory + * separator in addition to the '/'. + */ +char *mp_dirname(const char *path) +{ + const char *base = mp_basename(path); + size_t len = base - path; + char *dirname; + + if (len == 0) + return strdup("./"); + dirname = malloc(len + 1); + if (!dirname) + return NULL; + strncpy(dirname, path, len); + dirname[len] = '\0'; + return dirname; +} diff -r c44141d4e443 -r 8fffd26d06ae path.h --- a/path.h Sun Nov 21 16:52:22 2010 +0000 +++ b/path.h Sun Nov 21 17:07:34 2010 +0000 @@ -27,5 +27,6 @@ void set_path_env(void); void set_codec_path(const char *path); const char *mp_basename(const char *path); +char *mp_dirname(const char *path); #endif /* MPLAYER_PATH_H */