diff options
author | Poul-Henning Kamp <phk@FreeBSD.org> | 1999-11-27 16:10:31 +0000 |
---|---|---|
committer | Poul-Henning Kamp <phk@FreeBSD.org> | 1999-11-27 16:10:31 +0000 |
commit | 703eaae72d9615bfdf411d1353adb20e60bd6467 (patch) | |
tree | 7d2a5b4e98fa31de8a0384c7eb47cb7bfe0c9c3f /sbin/quotacheck/preen.c | |
parent | f55c07ab9321e7baaa3d8e1612911e36e957e495 (diff) | |
download | src-703eaae72d9615bfdf411d1353adb20e60bd6467.tar.gz src-703eaae72d9615bfdf411d1353adb20e60bd6467.zip |
Allow root-reloading also for chr devices.
Notes
Notes:
svn path=/head/; revision=53754
Diffstat (limited to 'sbin/quotacheck/preen.c')
-rw-r--r-- | sbin/quotacheck/preen.c | 47 |
1 files changed, 3 insertions, 44 deletions
diff --git a/sbin/quotacheck/preen.c b/sbin/quotacheck/preen.c index 94baefa7d266..aedb5921cd99 100644 --- a/sbin/quotacheck/preen.c +++ b/sbin/quotacheck/preen.c @@ -71,10 +71,8 @@ char hotroot; static void addpart __P((char *name, char *fsname, long auxdata)); static struct disk *finddisk __P((char *name)); -static char *rawname __P((char *name)); static int startdisk __P((struct disk *dk, int (*checkit)(char *, char *, long, int))); -static char *unrawname __P((char *name)); int checkfstab(preen, maxrun, docheck, chkit) @@ -311,10 +309,11 @@ retry: printf("Can't stat %s: %s\n", newname, strerror(errno)); return (origname); } - if ((stblock.st_mode & S_IFMT) == S_IFBLK) { + if ((stblock.st_mode & S_IFMT) == S_IFBLK || + (stblock.st_mode & S_IFMT) == S_IFCHR) { if (stslash.st_dev == stblock.st_rdev) hotroot++; - raw = rawname(newname); + raw = newname; if (stat(raw, &stchar) < 0) { printf("Can't stat %s: %s\n", raw, strerror(errno)); return (origname); @@ -327,10 +326,6 @@ retry: printf("%s is not a character device\n", raw); return (origname); } - } else if ((stblock.st_mode & S_IFMT) == S_IFCHR && !retried) { - newname = unrawname(newname); - retried++; - goto retry; } else if ((stblock.st_mode & S_IFMT) == S_IFDIR && !retried) { len = strlen(origname) - 1; if (len > 0 && origname[len] == '/') @@ -351,39 +346,3 @@ retry: */ return (origname); } - -static char * -unrawname(name) - char *name; -{ - char *dp; - struct stat stb; - - if ((dp = strrchr(name, '/')) == 0) - return (name); - if (stat(name, &stb) < 0) - return (name); - if ((stb.st_mode & S_IFMT) != S_IFCHR) - return (name); - if (dp[1] != 'r') - return (name); - (void)strcpy(&dp[1], &dp[2]); - return (name); -} - -static char * -rawname(name) - char *name; -{ - static char rawbuf[32]; - char *dp; - - if ((dp = strrchr(name, '/')) == 0) - return (0); - *dp = 0; - (void)strcpy(rawbuf, name); - *dp = '/'; - (void)strcat(rawbuf, "/r"); - (void)strcat(rawbuf, &dp[1]); - return (rawbuf); -} |