Fixed ln, df, and removed redundant stuff from mtab.
This commit is contained in:
42
mtab.c
42
mtab.c
@@ -59,48 +59,6 @@ erase_mtab(const char * name)
|
||||
perror(mtab_file);
|
||||
}
|
||||
|
||||
/*
|
||||
* Given a block device, find the mount table entry if that block device
|
||||
* is mounted.
|
||||
*
|
||||
* Given any other file (or directory), find the mount table entry for its
|
||||
* filesystem.
|
||||
*/
|
||||
static struct mntent *
|
||||
findMountPoint(const char * name, const char * table)
|
||||
{
|
||||
struct stat s;
|
||||
dev_t mountDevice;
|
||||
FILE* mountTable;
|
||||
struct mntent* mountEntry;
|
||||
|
||||
if ( stat(name, &s) != 0 )
|
||||
return 0;
|
||||
|
||||
if ( (s.st_mode & S_IFMT) == S_IFBLK )
|
||||
mountDevice = s.st_rdev;
|
||||
else
|
||||
mountDevice = s.st_dev;
|
||||
|
||||
|
||||
if ( (mountTable = setmntent(table, "r")) == 0 )
|
||||
return 0;
|
||||
|
||||
while ( (mountEntry = getmntent(mountTable)) != 0 ) {
|
||||
if ( strcmp(name, mountEntry->mnt_dir) == 0 ||
|
||||
strcmp(name, mountEntry->mnt_fsname) == 0 ) /* String match. */
|
||||
break;
|
||||
if ( stat(mountEntry->mnt_fsname, &s) == 0 &&
|
||||
s.st_rdev == mountDevice ) /* Match the device. */
|
||||
break;
|
||||
if ( stat(mountEntry->mnt_dir, &s) == 0 &&
|
||||
s.st_dev == mountDevice ) /* Match the directory's mount point. */
|
||||
break;
|
||||
}
|
||||
endmntent(mountTable);
|
||||
return mountEntry;
|
||||
}
|
||||
|
||||
extern void
|
||||
write_mtab(char* blockDevice, char* directory,
|
||||
char* filesystemType, long flags, char* string_flags)
|
||||
|
Reference in New Issue
Block a user