From 7d7a33791211b26d69bcf3c23174250dd14e9486 Mon Sep 17 00:00:00 2001
From: Dan McGee <dan@archlinux.org>
Date: Tue, 5 Feb 2008 18:49:13 -0600
Subject: pacman/util.c: add mdirname function

This function mirrors mbasename and will be used by the 'owns' machinery.

Signed-off-by: Dan McGee <dan@archlinux.org>
---
 src/pacman/util.c | 28 ++++++++++++++++++++++++++++
 src/pacman/util.h |  1 +
 2 files changed, 29 insertions(+)

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);
-- 
cgit v1.2.3-70-g09d2