summaryrefslogtreecommitdiffstats
path: root/usr.bin/devmenu/devmenu.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1996-09-06 23:05:55 +0000
committerphk <phk@FreeBSD.org>1996-09-06 23:05:55 +0000
commitef1c38f97487f515e2d140a6ae8206d725aa778f (patch)
treec36e058ebcb33dff174c46d1278daa1ea79294da /usr.bin/devmenu/devmenu.c
parent7d0d2d16096666a4387a4aa045b9246750336729 (diff)
downloadFreeBSD-src-ef1c38f97487f515e2d140a6ae8206d725aa778f.zip
FreeBSD-src-ef1c38f97487f515e2d140a6ae8206d725aa778f.tar.gz
Remove devmenu. Devconf never grew up.
Diffstat (limited to 'usr.bin/devmenu/devmenu.c')
-rw-r--r--usr.bin/devmenu/devmenu.c253
1 files changed, 0 insertions, 253 deletions
diff --git a/usr.bin/devmenu/devmenu.c b/usr.bin/devmenu/devmenu.c
deleted file mode 100644
index 2e5c69b..0000000
--- a/usr.bin/devmenu/devmenu.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * Copyright 1995 Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby
- * granted, provided that both the above copyright notice and this
- * permission notice appear in all copies, that both the above
- * copyright notice and this permission notice appear in all
- * supporting documentation, and that the name of M.I.T. not be used
- * in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. M.I.T. makes
- * no representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
- * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
- * SHALL M.I.T. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * devmenu - present a menu of installed devices of a specified
- * class or classes
- *
- * Garrett A. Wollman, April 1995
- */
-
-#ifndef lint
-static const char rcsid[] =
- "$Id: devmenu.c,v 1.2 1995/04/14 18:33:43 wollman Exp $";
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <sys/devconf.h>
-#include <sysexits.h>
-#include <err.h>
-#include <dialog.h>
-
-#include "devmenu.h"
-
-static enum dc_class interpret_class(char *str);
-static int interpret_state(char *str);
-static void dm_err_exit(int);
-static int err_writefn(void *cookie, const char *val, int nchars);
-static void usage(const char *);
-
-static FILE *errfp;
-
-int
-main(int argc, char **argv)
-{
- enum dc_class class = 0;
- enum mode { GENERIC, NETIF, INSTALL, DISK } mode = GENERIC;
- const char *title = 0, *hfile = 0;
- char **devnames = 0;
- int c;
- int states = 0;
- const char *fn = 0;
- const char *sel = "none";
-
- while ((c = getopt(argc, argv, "c:s:t:h:nidf:")) != EOF) {
- switch(c) {
- case 'c':
- class |= interpret_class(optarg);
- break;
- case 's':
- states |= interpret_state(optarg);
- break;
- case 't':
- title = optarg;
- break;
- case 'h':
- hfile = optarg;
- break;
- case 'n':
- mode = NETIF;
- break;
- case 'i':
- mode = INSTALL;
- break;
- case 'd':
- mode = DISK;
- break;
- case 'f':
- fn = optarg;
- break;
- case '?':
- default:
- usage(argv[0]);
- return EX_USAGE;
- }
- }
-
- if (optind < argc) {
- devnames = &argv[optind];
- }
-
- errfp = fwopen(0, err_writefn);
- if (!errfp) {
- err(EX_UNAVAILABLE, "fwopen");
- }
-
- setvbuf(errfp, (char *)0, _IOLBF, (size_t)0);
-
- init_dialog();
- err_set_exit(dm_err_exit);
- err_set_file(errfp);
-
- switch(mode) {
- case NETIF:
- sel = devmenu_netif(title, hfile, devnames, states);
- break;
- case INSTALL:
- sel = devmenu_common(title, hfile, devnames,
- "Select an installation device",
- "No installation devices found",
- DC_CLS_DISK | DC_CLS_RDISK | DC_CLS_TAPE,
- states);
- break;
- case DISK:
- sel = devmenu_common(title, hfile, devnames,
- "Select a disk",
- "No disks found",
- DC_CLS_DISK,
- states);
- break;
- case GENERIC:
- sel = devmenu_common(title, hfile, devnames,
- "Select a device",
- "No devices found",
- class,
- states);
- break;
- }
- err_set_file(0);
- fclose(errfp);
- end_dialog();
- err_set_exit(0);
- if (fn) {
- errfp = fopen(fn, "w");
- if (!errfp) {
- err(EX_OSERR, "fopen(%s)", fn);
- }
- fprintf(errfp, "%s\n", sel);
- fclose(errfp);
- } else {
- printf("%s\n", sel);
- }
- return 0;
-}
-
-static const char *classes[] = DC_CLASSNAMES;
-#define NCLASSES ((sizeof classes)/(sizeof classes[0]))
-
-static enum dc_class
-interpret_class(char *str)
-{
- int i;
- enum dc_class rv;
-
- for(i = 1; i < NCLASSES; i++) {
- if(! strcmp(classes[i], str)) {
- rv = (1 << (i - 1));
- break;
- }
- }
- if (i == NCLASSES) {
- err(EX_USAGE, "unknown class `%s'", str);
- }
-
- return rv;
-}
-
-static int
-interpret_state(char *str)
-{
- int rv = 0;
- int invert = 0;
-
- if (*str == '!' || *str == '~') {
- invert = 1;
- str++;
- }
-
- for (; *str; str++) {
- switch(*str) {
- case 'u':
- case 'U':
- rv |= 1 << DC_UNCONFIGURED;
- break;
- case '?':
- rv |= 1 << DC_UNKNOWN;
- break;
- case 'i':
- case 'I':
- rv |= 1 << DC_IDLE;
- break;
- case 'b':
- case 'B':
- rv |= 1 << DC_BUSY;
- break;
- default:
- err(EX_USAGE, "unknown state `%c'", *str);
- }
- }
-
- return (invert ? ~rv : rv);
-}
-
-static void
-dm_err_exit(int rval)
-{
- fflush(errfp);
- fclose(errfp);
- end_dialog();
- exit(rval);
-}
-
-static int
-err_writefn(void *cookie, const char *val, int nchars)
-{
- char buf[nchars + 1];
-
- strncpy(buf, val, nchars);
- buf[nchars] = '\0';
-
- dialog_msgbox("Error", buf, -1, -1, 1);
- return nchars;
-}
-
-static void
-usage(const char *argv0)
-{
- fprintf(stderr, "%s: usage:\n"
- "%s [-c class] [-s state] [-t title] [-h hfile] [-f outfile]"
- "[-n] [-i] [-d]\n", argv0, argv0);
-
-}
OpenPOWER on IntegriCloud