add new function pa_parent_dir()
authorLennart Poettering <lennart@poettering.net>
Sat, 22 Apr 2006 20:05:01 +0000 (20:05 +0000)
committerLennart Poettering <lennart@poettering.net>
Sat, 22 Apr 2006 20:05:01 +0000 (20:05 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@773 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/polypcore/util.c
src/polypcore/util.h

index 8418a69..615ea88 100644 (file)
@@ -164,15 +164,25 @@ fail:
     return -1;
 }
 
-/* Creates a the parent directory of the specified path securely */
-int pa_make_secure_parent_dir(const char *fn) {
-    int ret = -1;
+/* Return a newly allocated sting containing the parent directory of the specified file */
+char *pa_parent_dir(const char *fn) {
     char *slash, *dir = pa_xstrdup(fn);
 
     slash = (char*) pa_path_get_filename(dir);
     if (slash == fn)
-        goto finish;
+        return NULL;
+
     *(slash-1) = 0;
+    return dir;
+}
+
+/* Creates a the parent directory of the specified path securely */
+int pa_make_secure_parent_dir(const char *fn) {
+    int ret = -1;
+    char *dir;
+
+    if (!(dir = pa_parent_dir(fn)))
+        goto finish;
     
     if (pa_make_secure_dir(dir) < 0)
         goto finish;
@@ -184,7 +194,6 @@ finish:
     return ret;
 }
 
-
 /** Calls read() in a loop. Makes sure that as much as 'size' bytes,
  * unless EOF is reached or an error occured */
 ssize_t pa_loop_read(int fd, void*data, size_t size) {
index f05339c..ca81b22 100644 (file)
@@ -55,6 +55,8 @@ char *pa_get_home_dir(char *s, size_t l);
 
 const char *pa_path_get_filename(const char *p);
 
+char *pa_parent_dir(const char *fn);
+
 struct timeval *pa_gettimeofday(struct timeval *tv);
 pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b);
 int pa_timeval_cmp(const struct timeval *a, const struct timeval *b);