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.
This commit is contained in:
Joerg Wunsch 2000-04-02 10:16:40 +00:00
parent 45b318264e
commit 04285c0615
2 changed files with 14 additions and 6 deletions

View File

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

View File

@ -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 *