Tito, farmatito at tiscali dot it writes:

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
This commit is contained in:
Eric Andersen 2004-08-03 00:14:02 +00:00
parent ec91de762a
commit 93d7fba892
5 changed files with 10 additions and 6 deletions

View 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;
}
}

View 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);

View 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

View 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,

View 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;