diff options
author | joerg <joerg@FreeBSD.org> | 2000-04-02 10:16:40 +0000 |
---|---|---|
committer | joerg <joerg@FreeBSD.org> | 2000-04-02 10:16:40 +0000 |
commit | bc42f462b19ace826d8a1c8b89ff67cc86bc63c7 (patch) | |
tree | 7b520c89a2e7bd090418fc9c18c2c3e3d7bc5eea | |
parent | 09620cee8745269f88ae1e587393c963de9bd9c4 (diff) | |
download | FreeBSD-src-bc42f462b19ace826d8a1c8b89ff67cc86bc63c7.zip FreeBSD-src-bc42f462b19ace826d8a1c8b89ff67cc86bc63c7.tar.gz |
Avoid rawname() stupidly prepending an `r' before the device name even
in cases where the supplied name was already pointing to a character
special device. This fixes the breakage that occured when trying to
dump a filesystem by name (e. g. /usr), with an fstab already
mentioning the raw device name (like /dev/rda0g) where dump attempted
to use /dev/rrda0g then.
Also removed the now obsolete remark that fstab were carrying block
special names.
-rw-r--r-- | sbin/dump/main.c | 15 | ||||
-rw-r--r-- | sbin/dump/optr.c | 5 |
2 files changed, 14 insertions, 6 deletions
diff --git a/sbin/dump/main.c b/sbin/dump/main.c index 30be0c9..d7783b1 100644 --- a/sbin/dump/main.c +++ b/sbin/dump/main.c @@ -46,6 +46,7 @@ static const char rcsid[] = #endif /* not lint */ #include <sys/param.h> +#include <sys/stat.h> #include <sys/time.h> #ifdef sunos #include <sys/vnode.h> @@ -548,7 +549,19 @@ rawname(cp) char *cp; { static char rawbuf[MAXPATHLEN]; - char *dp = strrchr(cp, '/'); + char *dp; + struct stat sb; + + if (stat(cp, &sb) == 0) { + /* + * If the name already refers to a raw device, return + * it immediately without tampering. + */ + if ((sb.st_mode & S_IFMT) == S_IFCHR) + return (cp); + } + + dp = strrchr(cp, '/'); if (dp == NULL) return (NULL); diff --git a/sbin/dump/optr.c b/sbin/dump/optr.c index 71dd8d1..bb4c262 100644 --- a/sbin/dump/optr.c +++ b/sbin/dump/optr.c @@ -437,11 +437,6 @@ getfstab() * Search in the fstab for a file name. * This file name can be either the special or the path file name. * - * The entries in the fstab are the BLOCK special names, not the - * character special names. - * The caller of fstabsearch assures that the character device - * is dumped (that is much faster) - * * The file name can omit the leading '/'. */ struct fstab * |