Tito, farmatito at tiscali dot it writes:
authorandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Tue, 3 Aug 2004 00:14:02 +0000 (00:14 +0000)
committerandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Tue, 3 Aug 2004 00:14:02 +0000 (00:14 +0000)
Hi to all,
This patch is useful for:
1) remove an unused var from extern char *find_real_root_device_name(const char* name)
    changing it to extern char *find_real_root_device_name(void).
2) fixes include/libbb.h, coreutils/df.c, util-linux/mount.c and  util-linux/umount.c accordingly.
3) fixes a bug, really a false positive,  in find_real_root_device_name() that happens if
    in the /dev directory exists a link named root (/dev/root) that should be skipped but
    is not. This affects applets like df that display wrong results

git-svn-id: svn://busybox.net/trunk/busybox@9056 69ca8d6d-28ef-0310-b511-8ec308f3f277

coreutils/df.c
include/libbb.h
libbb/find_root_device.c
util-linux/mount.c
util-linux/umount.c

index cff69fe..ba2e7cc 100644 (file)
@@ -130,7 +130,7 @@ extern int df_main(int argc, char **argv)
                        } else if (strcmp(device, "/dev/root") == 0) {
                                /* Adjusts device to be the real root device,
                                * or leaves device alone if it can't find it */
-                               if ((device = find_real_root_device_name(device)) == NULL) {
+                               if ((device = find_real_root_device_name()) == NULL) {
                                        goto SET_ERROR;
                                }
                        }
index c52e655..afbd020 100644 (file)
@@ -134,7 +134,7 @@ extern void write_mtab(char* blockDevice, char* directory,
                                           char* filesystemType, long flags, char* string_flags);
 extern void erase_mtab(const char * name);
 extern long *find_pid_by_name( const char* pidName);
-extern char *find_real_root_device_name(const char* name);
+extern char *find_real_root_device_name(void);
 extern char *bb_get_line_from_file(FILE *file);
 extern char *bb_get_chomped_line_from_file(FILE *file);
 extern int bb_copyfd_size(int fd1, int fd2, const off_t size);
index 81824a2..2600ce5 100644 (file)
@@ -27,7 +27,7 @@
 
 
 
-extern char *find_real_root_device_name(const char* name)
+extern char *find_real_root_device_name(void)
 {
        DIR *dir;
        struct dirent *entry;
@@ -54,7 +54,11 @@ extern char *find_real_root_device_name(const char* name)
                                 * would get a false positive on ".."  */
                                if (myname[0] == '.' && myname[1] == '.' && !myname[2])
                                        continue;
-
+#ifdef CONFIG_FEATURE_DEVFS
+                               /* if there is a link named /dev/root skip that too */
+                               if (strcmp(myname, "root")==0)
+                                       continue;
+#endif
                                fileName = concat_path_file("/dev", myname);
 
                                /* Some char devices have the same dev_t as block
index 0bc46ec..b059d70 100644 (file)
@@ -345,7 +345,7 @@ static void show_mounts(char *onlytype)
                        if (strcmp(blockDevice, "rootfs") == 0) {
                                continue;
                        } else if (strcmp(blockDevice, "/dev/root") == 0) {
-                               blockDevice = find_real_root_device_name(blockDevice);
+                               blockDevice = find_real_root_device_name();
                        }
                        if (!onlytype || (strcmp(m->mnt_type, onlytype) == 0)) {
                                printf("%s on %s type %s (%s)\n", blockDevice, m->mnt_dir,
index 37a8f06..21c2e6e 100644 (file)
@@ -115,7 +115,7 @@ static char *mtab_getinfo(const char *match, const char which)
                                } else if (strcmp(cur->device, "/dev/root") == 0) {
                                        /* Adjusts device to be the real root device,
                                         * or leaves device alone if it can't find it */
-                                       cur->device = find_real_root_device_name(cur->device);
+                                       cur->device = find_real_root_device_name();
                                }
 #endif
                                return cur->device;