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 83518604724f001657037ec72bad77c222dbae2e..6efa17eb7c7957cf4aaf6f97e7d2b4e7cf2245f8 100644 (file)
 #include "udev_version.h"
 #include "logging.h"
 
 #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];
 static int delete_node(struct udevice *udev)
 {
        char filename[PATH_SIZE];
index ffdaf0469f0d82baf7ea41a7bd30c4f534eaf1af..a28ba005caa0048a1e20d6cf2b11ae3597502302 100644 (file)
@@ -51,6 +51,7 @@ extern int replace_untrusted_chars(char *str);
 
 /* udev_utils_file.c */
 extern int create_path(const char *path);
 
 /* 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);
 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 a3dab58b36ae5c6d7b08b850ce50edf1f8ebc749..cd9c244f0f3d1b799f58063032ba2da959c6e3b5 100644 (file)
@@ -63,6 +63,37 @@ int create_path(const char *path)
        return mkdir(p, 0755);
 }
 
        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.
  */
 /* Reset permissions on the device node, before unlinking it to make sure,
  * that permisions of possible hard links will be removed too.
  */