Tito, farmatito at tiscali dot it writes:
authorEric Andersen <andersen@codepoet.org>
Tue, 3 Aug 2004 00:14:02 +0000 (00:14 -0000)
committerEric Andersen <andersen@codepoet.org>
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

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

index cff69fe1a8fbc65932c7340b6ddad6478ca6dbb2..ba2e7ccc95ef3a829e106837a40659bf8523598f 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 c52e65555e16a1f116516ed78415de9d120b2cfd..afbd0203e7c53f0d7a4cc0d1269cbbeb096349db 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 81824a216e6dec0d975607145120bd0241f11163..2600ce5e08e30c595869a8d7dbf62b1ebac6e64d 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 0bc46ecb58edea80e3ed15e4e1bc5e53b7c11fe4..b059d7094cca787dbebec6701cd942a229b5352d 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 37a8f061e8e4ef213a7957fba991078411d13f46..21c2e6e4d422d84775bcd3db1298c6409f9505a8 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;