chiark / gitweb /
move delete_path() to utils
authorScott James Remnant <scott@ubuntu.com>
Tue, 22 Nov 2005 14:44:02 +0000 (15:44 +0100)
committerKay Sievers <kay.sievers@suse.de>
Tue, 22 Nov 2005 14:44:02 +0000 (15:44 +0100)
udev_remove.c
udev_utils.h
udev_utils_file.c

index 8351860..6efa17e 100644 (file)
 #include "udev_version.h"
 #include "logging.h"
 
-static int delete_path(const char *path)
-{
-       char *pos;
-       int retval;
-
-       pos = strrchr(path, '/');
-       while (1) {
-               *pos = '\0';
-               pos = strrchr(path, '/');
-
-               /* don't remove the last one */
-               if ((pos == path) || (pos == NULL))
-                       break;
-
-               /* remove if empty */
-               retval = rmdir(path);
-               if (errno == ENOENT)
-                       retval = 0;
-               if (retval) {
-                       if (errno == ENOTEMPTY)
-                               return 0;
-                       err("rmdir(%s) failed: %s", path, strerror(errno));
-                       break;
-               }
-               dbg("removed '%s'", path);
-       }
-       return 0;
-}
-
 static int delete_node(struct udevice *udev)
 {
        char filename[PATH_SIZE];
index ffdaf04..a28ba00 100644 (file)
@@ -51,6 +51,7 @@ extern int replace_untrusted_chars(char *str);
 
 /* udev_utils_file.c */
 extern int create_path(const char *path);
+extern int delete_path(const char *path);
 extern int file_map(const char *filename, char **buf, size_t *bufsize);
 extern void file_unmap(void *buf, size_t bufsize);
 extern int unlink_secure(const char *filename);
index a3dab58..cd9c244 100644 (file)
@@ -63,6 +63,37 @@ int create_path(const char *path)
        return mkdir(p, 0755);
 }
 
+int delete_path(const char *path)
+{
+       char p[PATH_SIZE];
+       char *pos;
+       int retval;
+
+       strcpy (p, path);
+       pos = strrchr(p, '/');
+       while (1) {
+               *pos = '\0';
+               pos = strrchr(p, '/');
+
+               /* don't remove the last one */
+               if ((pos == p) || (pos == NULL))
+                       break;
+
+               /* remove if empty */
+               retval = rmdir(p);
+               if (errno == ENOENT)
+                       retval = 0;
+               if (retval) {
+                       if (errno == ENOTEMPTY)
+                               return 0;
+                       err("rmdir(%s) failed: %s", p, strerror(errno));
+                       break;
+               }
+               dbg("removed '%s'", p);
+       }
+       return 0;
+}
+
 /* Reset permissions on the device node, before unlinking it to make sure,
  * that permisions of possible hard links will be removed too.
  */