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