Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sbin factor out rawname() from dump, fsck, savecore.



details:   https://anonhg.NetBSD.org/src/rev/bbdc919c7b42
branches:  trunk
changeset: 778660:bbdc919c7b42
user:      christos <christos%NetBSD.org@localhost>
date:      Sat Apr 07 16:44:10 2012 +0000

description:
factor out rawname() from dump, fsck, savecore.

diffstat:

 sbin/dump/main.c         |  30 +++++++++----------------
 sbin/dump/optr.c         |  14 ++++++-----
 sbin/fsck/fsutil.c       |  55 +++++++++++++----------------------------------
 sbin/fsck/fsutil.h       |   4 +--
 sbin/savecore/savecore.c |  35 ++++++++---------------------
 5 files changed, 46 insertions(+), 92 deletions(-)

diffs (truncated from 317 to 300 lines):

diff -r b8a3708b8a32 -r bbdc919c7b42 sbin/dump/main.c
--- a/sbin/dump/main.c  Sat Apr 07 16:39:32 2012 +0000
+++ b/sbin/dump/main.c  Sat Apr 07 16:44:10 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: main.c,v 1.68 2012/04/07 04:52:20 christos Exp $       */
+/*     $NetBSD: main.c,v 1.69 2012/04/07 16:44:10 christos Exp $       */
 
 /*-
  * Copyright (c) 1980, 1991, 1993, 1994
@@ -39,7 +39,7 @@
 #if 0
 static char sccsid[] = "@(#)main.c     8.6 (Berkeley) 5/1/95";
 #else
-__RCSID("$NetBSD: main.c,v 1.68 2012/04/07 04:52:20 christos Exp $");
+__RCSID("$NetBSD: main.c,v 1.69 2012/04/07 16:44:10 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -108,7 +108,7 @@
        char *mountpoint;
        int just_estimate = 0;
        char labelstr[LBLSIZE];
-       char buf[MAXPATHLEN];
+       char buf[MAXPATHLEN], rbuf[MAXPATHLEN];
        char *new_time_format;
        char *snap_backup = NULL;
 
@@ -408,11 +408,17 @@
        if ((dt = fstabsearch(disk)) != NULL) {
                if (getfsspecname(buf, sizeof(buf), dt->fs_spec) == NULL)
                        quit("%s (%s)", buf, strerror(errno));
-               disk = rawname(buf);
+               if (getdiskrawname(rbuf, sizeof(rbuf), buf) == NULL)
+                       quit("Can't get disk raw name for `%s' (%s)",
+                           buf, strerror(errno));
+               disk = rbuf;
                mountpoint = dt->fs_file;
                msg("Found %s on %s in %s\n", disk, mountpoint, _PATH_FSTAB);
        } else if (mntinfo != NULL) {
-               disk = rawname(mntinfo->f_mntfromname);
+               if (getdiskrawname(rbuf, sizeof(rbuf), mntinfo->f_mntfromname)
+                   == NULL)
+                       quit("Can't get disk raw name for `%s' (%s)",
+                           mntinfo->f_mntfromname, strerror(errno));
                mountpoint = mntinfo->f_mntonname;
                msg("Found %s on %s in mount table\n", disk, mountpoint);
        }
@@ -721,20 +727,6 @@
        }
 }
 
-char *
-rawname(char *cp)
-{
-       static char rawbuf[MAXPATHLEN];
-       char *dp = strrchr(cp, '/');
-
-       if (dp == NULL)
-               return (NULL);
-       *dp = '\0';
-       (void)snprintf(rawbuf, sizeof rawbuf, "%s/r%s", cp, dp + 1);
-       *dp = '/';
-       return (rawbuf);
-}
-
 /*
  * obsolete --
  *     Change set of key letters and ordered arguments into something
diff -r b8a3708b8a32 -r bbdc919c7b42 sbin/dump/optr.c
--- a/sbin/dump/optr.c  Sat Apr 07 16:39:32 2012 +0000
+++ b/sbin/dump/optr.c  Sat Apr 07 16:44:10 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: optr.c,v 1.37 2012/04/07 04:52:20 christos Exp $       */
+/*     $NetBSD: optr.c,v 1.38 2012/04/07 16:44:10 christos Exp $       */
 
 /*-
  * Copyright (c) 1980, 1988, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)optr.c     8.2 (Berkeley) 1/6/94";
 #else
-__RCSID("$NetBSD: optr.c,v 1.37 2012/04/07 04:52:20 christos Exp $");
+__RCSID("$NetBSD: optr.c,v 1.38 2012/04/07 16:44:10 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -391,14 +391,15 @@
 {
        struct pfstab *pf;
        struct fstab *fs;
-       char *rn;
+       const char *rn;
+       char buf[MAXPATHLEN];
 
        SLIST_FOREACH(pf, &table, pf_list) {
                fs = pf->pf_fstab;
                if (strcmp(fs->fs_file, key) == 0 ||
                    strcmp(fs->fs_spec, key) == 0)
                        return (fs);
-               rn = rawname(fs->fs_spec);
+               rn = getdiskrawname(buf, sizeof(buf), fs->fs_spec);
                if (rn != NULL && strcmp(rn, key) == 0)
                        return (fs);
                if (key[0] != '/') {
@@ -427,7 +428,8 @@
 {
        int i, mntbufc;
        struct statvfs *mntbuf, *fs;
-       char *rn;
+       const char *rn;
+       char buf[MAXPATHLEN];
 
        if ((mntbufc = getmntinfo(&mntbuf, MNT_NOWAIT)) == 0)
                quit("Can't get mount list: %s", strerror(errno));
@@ -443,7 +445,7 @@
                if (strcmp(fs->f_mntonname, key) == 0 ||
                    strcmp(fs->f_mntfromname, key) == 0)
                        return (fs);
-               rn = rawname(fs->f_mntfromname);
+               rn = getdiskrawname(buf, sizeof(buf), fs->f_mntfromname);
                if (rn != NULL && strcmp(rn, key) == 0)
                        return (fs);
        }
diff -r b8a3708b8a32 -r bbdc919c7b42 sbin/fsck/fsutil.c
--- a/sbin/fsck/fsutil.c        Sat Apr 07 16:39:32 2012 +0000
+++ b/sbin/fsck/fsutil.c        Sat Apr 07 16:44:10 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: fsutil.c,v 1.21 2012/04/07 04:52:20 christos Exp $     */
+/*     $NetBSD: fsutil.c,v 1.22 2012/04/07 16:44:10 christos Exp $     */
 
 /*
  * Copyright (c) 1990, 1993
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: fsutil.c,v 1.21 2012/04/07 04:52:20 christos Exp $");
+__RCSID("$NetBSD: fsutil.c,v 1.22 2012/04/07 16:44:10 christos Exp $");
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -167,45 +167,13 @@
 }
 
 const char *
-unrawname(const char *name)
-{
-       static char unrawbuf[MAXPATHLEN];
-       const char *dp;
-       struct stat stb;
-
-       if ((dp = strrchr(name, '/')) == 0)
-               return (name);
-       if (stat(name, &stb) < 0)
-               return (name);
-       if (!S_ISCHR(stb.st_mode))
-               return (name);
-       if (dp[1] != 'r')
-               return (name);
-       (void)snprintf(unrawbuf, sizeof(unrawbuf), "%.*s/%s",
-           (int)(dp - name), name, dp + 2);
-       return (unrawbuf);
-}
-
-const char *
-rawname(const char *name)
-{
-       static char rawbuf[MAXPATHLEN];
-       const char *dp;
-
-       if ((dp = strrchr(name, '/')) == 0)
-               return (0);
-       (void)snprintf(rawbuf, sizeof(rawbuf), "%.*s/r%s",
-           (int)(dp - name), name, dp + 1);
-       return (rawbuf);
-}
-
-const char *
 blockcheck(const char *origname)
 {
        struct stat stslash, stblock, stchar;
        const char *newname, *raw;
        struct fstab *fsp;
        int retried = 0;
+       static char buf[MAXPATHLEN];
 
        hot = 0;
        if (stat("/", &stslash) < 0) {
@@ -221,7 +189,11 @@
        if (S_ISBLK(stblock.st_mode)) {
                if (stslash.st_dev == stblock.st_rdev)
                        hot++;
-               raw = rawname(newname);
+               raw = getdiskrawname(buf, sizeof(buf), newname);
+               if (raw == NULL) {
+                       perr("Can't convert to raw `%s'", newname);
+                       return origname;
+               }
                if (stat(raw, &stchar) < 0) {
                        perr("Can't stat `%s'", raw);
                        return (origname);
@@ -233,12 +205,17 @@
                        return (origname);
                }
        } else if (S_ISCHR(stblock.st_mode) && !retried) {
-               newname = unrawname(newname);
+               raw = getdiskcookedname(buf, sizeof(buf), newname);
+               if (raw == NULL) {
+                       perr("Can't convert to cooked `%s'", newname);
+                       return origname;
+               } else
+                       newname = raw;
                retried++;
                goto retry;
        } else if ((fsp = getfsfile(newname)) != 0 && !retried) {
-               char buf[MAXPATHLEN];
-               newname = getfsspecname(buf, sizeof(buf), fsp->fs_spec);
+               char rbuf[MAXPATHLEN];
+               newname = getfsspecname(rbuf, sizeof(rbuf), fsp->fs_spec);
                if (newname == NULL)
                        perr("%s", buf);
                retried++;
diff -r b8a3708b8a32 -r bbdc919c7b42 sbin/fsck/fsutil.h
--- a/sbin/fsck/fsutil.h        Sat Apr 07 16:39:32 2012 +0000
+++ b/sbin/fsck/fsutil.h        Sat Apr 07 16:44:10 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: fsutil.h,v 1.18 2011/08/27 17:34:44 joerg Exp $        */
+/*     $NetBSD: fsutil.h,v 1.19 2012/04/07 16:44:10 christos Exp $     */
 
 /*
  * Copyright (c) 1996 Christos Zoulas.  All rights reserved.
@@ -33,8 +33,6 @@
 void perr(const char *, ...) __printflike(1, 2);
 void panic(const char *, ...) __printflike(1, 2) __dead;
 void vmsg(int, const char *, va_list) __printflike(2, 0);
-const char *rawname(const char *);
-const char *unrawname(const char *);
 const char *blockcheck(const char *);
 const char *cdevname(void);
 void setcdevname(const char *, int);
diff -r b8a3708b8a32 -r bbdc919c7b42 sbin/savecore/savecore.c
--- a/sbin/savecore/savecore.c  Sat Apr 07 16:39:32 2012 +0000
+++ b/sbin/savecore/savecore.c  Sat Apr 07 16:44:10 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: savecore.c,v 1.84 2011/09/13 19:55:28 christos Exp $   */
+/*     $NetBSD: savecore.c,v 1.85 2012/04/07 16:44:10 christos Exp $   */
 
 /*-
  * Copyright (c) 1986, 1992, 1993
@@ -39,7 +39,7 @@
 #if 0
 static char sccsid[] = "@(#)savecore.c 8.5 (Berkeley) 4/28/95";
 #else
-__RCSID("$NetBSD: savecore.c,v 1.84 2011/09/13 19:55:28 christos Exp $");
+__RCSID("$NetBSD: savecore.c,v 1.85 2012/04/07 16:44:10 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -166,7 +166,6 @@
 static void    kmem_setup(void);
 static void    Lseek(int, off_t, int);
 static int     Open(const char *, int rw);
-static char    *rawname(char *s);
 static void    save_core(void);
 __dead static void     usage(const char *fmt, ...) __printflike(1, 2);
 
@@ -656,7 +655,8 @@
 {
        FILE *fp;
        int bounds, ifd, nr, nw, ofd, tryksyms;
-       char *rawp, path[MAXPATHLEN];
+       char path[MAXPATHLEN], rbuf[MAXPATHLEN];
+       const char *rawp;
 
        ofd = -1;
        /*
@@ -701,7 +701,12 @@
 
        if (dumpcdev == NODEV) {
                /* Open the raw device. */
-               rawp = rawname(ddname);
+               rawp = getdiskrawname(rbuf, sizeof(rbuf), ddname);
+               if (rawp == NULL) {
+                       syslog(LOG_WARNING, "%s: %m; can't convert to raw",
+                           ddname);
+                       rawp = ddname;
+               }
                if ((ifd = open(rawp, O_RDONLY)) == -1) {
                        syslog(LOG_WARNING, "%s: %m; using block device",
                            rawp);
@@ -832,26 +837,6 @@
        exit(1);
 }
 
-static char *
-rawname(char *s)
-{
-       char *sl;
-       char name[MAXPATHLEN];
-



Home | Main Index | Thread Index | Old Index