aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/dev_mkdb/dev_mkdb.c
diff options
context:
space:
mode:
authorIan Dowse <iedowse@FreeBSD.org>2001-11-18 17:24:28 +0000
committerIan Dowse <iedowse@FreeBSD.org>2001-11-18 17:24:28 +0000
commit00a2029a0e3a03150ec602c46cb88bb45e7ba892 (patch)
treee59b73f4fcb0de865bfbc1c9e3a2f2914b40632c /usr.sbin/dev_mkdb/dev_mkdb.c
parent56f7305f58e489346155bc33a75da66a785bb482 (diff)
Notes
Diffstat (limited to 'usr.sbin/dev_mkdb/dev_mkdb.c')
-rw-r--r--usr.sbin/dev_mkdb/dev_mkdb.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/usr.sbin/dev_mkdb/dev_mkdb.c b/usr.sbin/dev_mkdb/dev_mkdb.c
index 0a0e2c1857a8..d79674ee7bb6 100644
--- a/usr.sbin/dev_mkdb/dev_mkdb.c
+++ b/usr.sbin/dev_mkdb/dev_mkdb.c
@@ -76,12 +76,18 @@ main(argc, argv)
} bkey;
DB *db;
DBT data, key;
- int ch;
+ int ch, fflag;
u_char buf[MAXNAMLEN + 1];
char dbtmp[MAXPATHLEN + 1], dbname[MAXPATHLEN + 1];
+ const char *dirname;
- while ((ch = getopt(argc, argv, "")) != -1)
+ fflag = 0;
+ while ((ch = getopt(argc, argv, "f:")) != -1)
switch((char)ch) {
+ case 'f':
+ strlcpy(dbname, optarg, sizeof(dbname));
+ fflag = 1;
+ break;
case '?':
default:
usage();
@@ -89,16 +95,24 @@ main(argc, argv)
argc -= optind;
argv += optind;
- if (argc > 0)
+ if (argc > 1)
usage();
+ if (argc == 1)
+ dirname = argv[0];
+ else
+ dirname = _PATH_DEV;
- if (chdir(_PATH_DEV))
- err(1, "%s", _PATH_DEV);
+ if (!fflag) {
+ (void)snprintf(dbname, sizeof(dbtmp), "%sdev.db", _PATH_VARRUN);
+ (void)snprintf(dbtmp, sizeof(dbtmp), "%sdev.tmp", _PATH_VARRUN);
+ } else
+ (void)snprintf(dbtmp, sizeof(dbtmp), "%s.tmp", dbname);
+
+ if (chdir(dirname))
+ err(1, "%s", dirname);
dirp = opendir(".");
- (void)snprintf(dbtmp, sizeof(dbtmp), "%sdev.tmp", _PATH_VARRUN);
- (void)snprintf(dbname, sizeof(dbtmp), "%sdev.db", _PATH_VARRUN);
db = dbopen(dbtmp, O_CREAT|O_EXLOCK|O_RDWR|O_TRUNC,
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, DB_HASH, NULL);
if (db == NULL)
@@ -148,6 +162,6 @@ main(argc, argv)
static void
usage()
{
- (void)fprintf(stderr, "usage: dev_mkdb\n");
+ (void)fprintf(stderr, "usage: dev_mkdb [-f file] [directory]\n");
exit(1);
}