From 4fe63c7eb9bcc302358408f7cc23805a0e6fe748 Mon Sep 17 00:00:00 2001 From: agc Date: Thu, 18 Sep 2003 09:56:20 +0000 Subject: [PATCH] Let pkg_admin(1) have a -S argument - some vendors' xargs(1) don't pass a null ("") argument properly (hi, Sun), so make -S a synonym for -s "". Don't dump core if no command is given to pkg_admin(1). Print usage message to stderr, not stdout, and use the program name by which it was invoked. Bump pkg_install version to 20030918. --- usr.sbin/pkg_install/admin/main.c | 100 ++++++++++++++----------- usr.sbin/pkg_install/admin/pkg_admin.1 | 10 ++- usr.sbin/pkg_install/lib/version.h | 4 +- 3 files changed, 66 insertions(+), 48 deletions(-) diff --git a/usr.sbin/pkg_install/admin/main.c b/usr.sbin/pkg_install/admin/main.c index 80219640db9b..1dc4c04c3567 100644 --- a/usr.sbin/pkg_install/admin/main.c +++ b/usr.sbin/pkg_install/admin/main.c @@ -1,8 +1,8 @@ -/* $NetBSD: main.c,v 1.40 2003/09/13 05:48:50 jlam Exp $ */ +/* $NetBSD: main.c,v 1.41 2003/09/18 09:56:21 agc Exp $ */ #include #ifndef lint -__RCSID("$NetBSD: main.c,v 1.40 2003/09/13 05:48:50 jlam Exp $"); +__RCSID("$NetBSD: main.c,v 1.41 2003/09/18 09:56:21 agc Exp $"); #endif /* @@ -49,15 +49,35 @@ __RCSID("$NetBSD: main.c,v 1.40 2003/09/13 05:48:50 jlam Exp $"); #define DEFAULT_SFX ".t[bg]z" /* default suffix for ls{all,best} */ -static const char Options[] = "bd:K:s:V"; - -void usage(void); +static const char Options[] = "K:SVbd:s:"; int filecnt; int pkgcnt; static int checkpattern_fn(const char *, void *); +/* print usage message and exit */ +static void +usage(const char *prog) +{ + (void) fprintf(stderr, "usage: %s [-b] [-d lsdir] [-V] [-s sfx] command args ...\n" + "Where 'commands' and 'args' are:\n" + " rebuild - rebuild pkgdb from +CONTENTS files\n" + " check [pkg ...] - check md5 checksum of installed files\n" + " add pkg ... - add pkg files to database\n" + " delete pkg ... - delete file entries for pkg in database\n" +#ifdef PKGDB_DEBUG + " addkey key value - add key and value\n" + " delkey key - delete reference to key\n" +#endif + " lsall /path/to/pkgpattern - list all pkgs matching the pattern\n" + " lsbest /path/to/pkgpattern - list pkgs matching the pattern best\n" + " dump - dump database\n" + " pmatch pattern pkg - returns true if pkg matches pattern, otherwise false\n", + prog); + exit(EXIT_FAILURE); +} + /* * Assumes CWD is in /var/db/pkg/! */ @@ -377,20 +397,34 @@ lsbasepattern_fn(const char *pkg, void *vp) int main(int argc, char *argv[]) { - int ch; - char lsdir[FILENAME_MAX]; - char *lsdirp = NULL; - char sfx[FILENAME_MAX]; - Boolean use_default_sfx = TRUE; - Boolean show_basename_only = FALSE; + const char *prog; + Boolean use_default_sfx = TRUE; + Boolean show_basename_only = FALSE; + char lsdir[FILENAME_MAX]; + char sfx[FILENAME_MAX]; + char *lsdirp = NULL; + int ch; - setprogname(argv[0]); + setprogname(prog = argv[0]); if (argc < 2) - usage(); + usage(prog); while ((ch = getopt(argc, argv, Options)) != -1) switch (ch) { + case 'K': + _pkgdb_setPKGDB_DIR(optarg); + break; + + case 'S': + sfx[0] = 0x0; + use_default_sfx = FALSE; + break; + + case 'V': + show_version(); + /* NOTREACHED */ + case 'b': show_basename_only = TRUE; break; @@ -400,26 +434,23 @@ main(int argc, char *argv[]) lsdirp = lsdir; break; - case 'K': - _pkgdb_setPKGDB_DIR(optarg); - break; - case 's': (void) strlcpy(sfx, optarg, sizeof(sfx)); use_default_sfx = FALSE; break; - case 'V': - show_version(); - /* NOTREACHED */ - default: - usage(); + usage(prog); /* NOTREACHED */ } + argc -= optind; argv += optind; + if (argc <= 0) { + usage(prog); + } + if (use_default_sfx) (void) snprintf(sfx, sizeof(sfx), "%s", DEFAULT_SFX); @@ -433,7 +464,7 @@ main(int argc, char *argv[]) pkg = argv[1]; if (pattern == NULL || pkg == NULL) { - usage(); + usage(prog); } if (pmatch(pattern, pkg)){ @@ -648,34 +679,13 @@ main(int argc, char *argv[]) } #endif else { - usage(); + usage(prog); } return 0; } -void -usage(void) -{ - printf("usage: pkg_admin [-b] [-d lsdir] [-V] [-s sfx] command args ...\n" - "Where 'commands' and 'args' are:\n" - " rebuild - rebuild pkgdb from +CONTENTS files\n" - " check [pkg ...] - check md5 checksum of installed files\n" - " add pkg ... - add pkg files to database\n" - " delete pkg ... - delete file entries for pkg in database\n" -#ifdef PKGDB_DEBUG - " addkey key value - add key and value\n" - " delkey key - delete reference to key\n" -#endif - " lsall /path/to/pkgpattern - list all pkgs matching the pattern\n" - " lsbest /path/to/pkgpattern - list pkgs matching the pattern best\n" - " dump - dump database\n" - " pmatch pattern pkg - returns true if pkg matches pattern, otherwise false\n"); - exit(EXIT_FAILURE); -} - void cleanup(int signo) { - ; } diff --git a/usr.sbin/pkg_install/admin/pkg_admin.1 b/usr.sbin/pkg_install/admin/pkg_admin.1 index b3715fd94e00..ef3e559f3ac2 100644 --- a/usr.sbin/pkg_install/admin/pkg_admin.1 +++ b/usr.sbin/pkg_install/admin/pkg_admin.1 @@ -1,4 +1,4 @@ -.\" $NetBSD: pkg_admin.1,v 1.25 2003/09/13 05:48:50 jlam Exp $ +.\" $NetBSD: pkg_admin.1,v 1.26 2003/09/18 09:56:22 agc Exp $ .\" .\" Copyright (c) 1999-2002 Hubert Feyrer. All rights reserved. .\" @@ -72,6 +72,14 @@ taken from the value of the environment variable .Ev PKG_DBDIR if it's set, otherwise it defaults to .Pa /var/db/pkg . +.It Fl S +Set the shell glob pattern for package suffices when matching package +names for +.Cm lsall +and +.Cm lsbest +to be the null suffix. +The default pattern is ".t[bg]z". .It Fl s Ar sfx_pattern Set the shell glob pattern for package suffices when matching package names for diff --git a/usr.sbin/pkg_install/lib/version.h b/usr.sbin/pkg_install/lib/version.h index 7976cbfd5aef..fd7ce3406f77 100644 --- a/usr.sbin/pkg_install/lib/version.h +++ b/usr.sbin/pkg_install/lib/version.h @@ -1,4 +1,4 @@ -/* $NetBSD: version.h,v 1.33 2003/09/14 04:58:31 jlam Exp $ */ +/* $NetBSD: version.h,v 1.34 2003/09/18 09:56:20 agc Exp $ */ /* * Copyright (c) 2001 Thomas Klausner. All rights reserved. @@ -33,6 +33,6 @@ #ifndef _INST_LIB_VERSION_H_ #define _INST_LIB_VERSION_H_ -#define PKGTOOLS_VERSION "20030914" +#define PKGTOOLS_VERSION "20030918" #endif /* _INST_LIB_VERSION_H_ */