diff options
Diffstat (limited to 'src/pacman')
| -rw-r--r-- | src/pacman/util.c | 28 | ||||
| -rw-r--r-- | src/pacman/util.h | 1 | 
2 files changed, 29 insertions, 0 deletions
diff --git a/src/pacman/util.c b/src/pacman/util.c index 678445d3..20f4c072 100644 --- a/src/pacman/util.c +++ b/src/pacman/util.c @@ -187,6 +187,34 @@ char *mbasename(const char *path)  	return (char *)p;  } +/** Parse the dirname of a program from a path. +* The path returned should be freed. +* @param path path to parse dirname from +* +* @return everything preceding the final '/' +*/ +char *mdirname(const char *path) +{ +	char *ret, *last; + +	/* null or empty path */ +	if(path == NULL || path == '\0') { +		return(strdup(".")); +	} + +	ret = strdup(path); +	last = strrchr(ret, '/'); + +	if(last != NULL) { +		/* we found a '/', so terminate our string */ +		*last = '\0'; +		return(ret); +	} +	/* no slash found */ +	free(ret); +	return(strdup(".")); +} +  /* output a string, but wrap words properly with a specified indentation   */  void indentprint(const char *str, int indent) diff --git a/src/pacman/util.h b/src/pacman/util.h index 00c88949..0273512e 100644 --- a/src/pacman/util.h +++ b/src/pacman/util.h @@ -41,6 +41,7 @@ int getcols();  int makepath(const char *path);  int rmrf(const char *path);  char *mbasename(const char *path); +char *mdirname(const char *path);  void indentprint(const char *str, int indent);  char *strtoupper(char *str);  char *strtrim(char *str);  | 
