main.c revision 327
1327Sjkh#ifndef lint
2327Sjkhstatic char *rcsid = "$Header: /usr1/cvs/jkh/pkg_install/info/main.c,v 1.4 1993/08/26 08:47:05 jkh Exp $";
3327Sjkh#endif
4327Sjkh
5327Sjkh/*
6327Sjkh *
7327Sjkh * FreeBSD install - a package for the installation and maintainance
8327Sjkh * of non-core utilities.
9327Sjkh *
10327Sjkh * Redistribution and use in source and binary forms, with or without
11327Sjkh * modification, are permitted provided that the following conditions
12327Sjkh * are met:
13327Sjkh * 1. Redistributions of source code must retain the above copyright
14327Sjkh *    notice, this list of conditions and the following disclaimer.
15327Sjkh * 2. Redistributions in binary form must reproduce the above copyright
16327Sjkh *    notice, this list of conditions and the following disclaimer in the
17327Sjkh *    documentation and/or other materials provided with the distribution.
18327Sjkh *
19327Sjkh * Jordan K. Hubbard
20327Sjkh * 18 July 1993
21327Sjkh *
22327Sjkh * This is the add module.
23327Sjkh *
24327Sjkh */
25327Sjkh
26327Sjkh#include "lib.h"
27327Sjkh#include "info.h"
28327Sjkh
29327Sjkhstatic char Options[] = "acdfikrpIvh";
30327Sjkh
31327Sjkhint	Flags		= 0;
32327SjkhBoolean AllInstalled	= FALSE;
33327Sjkh
34327Sjkhint
35327Sjkhmain(int argc, char **argv)
36327Sjkh{
37327Sjkh    int ch;
38327Sjkh    char **pkgs, **start;
39327Sjkh    char *prog_name = argv[0];
40327Sjkh
41327Sjkh    pkgs = start = argv;
42327Sjkh    while ((ch = getopt(argc, argv, Options)) != EOF)
43327Sjkh	switch(ch) {
44327Sjkh	case 'a':
45327Sjkh	    AllInstalled = TRUE;
46327Sjkh	    break;
47327Sjkh
48327Sjkh	case 'v':
49327Sjkh	    Verbose = TRUE;
50327Sjkh	    /* Reasonable definition of 'everything' */
51327Sjkh	    Flags = SHOW_COMMENT | SHOW_DESC | SHOW_PLIST | SHOW_INSTALL |
52327Sjkh		SHOW_DEINSTALL | SHOW_REQUIRE;
53327Sjkh	    break;
54327Sjkh
55327Sjkh	case 'I':
56327Sjkh	    Flags |= SHOW_INDEX;
57327Sjkh	    break;
58327Sjkh
59327Sjkh	case 'p':
60327Sjkh	    Flags |= SHOW_PREFIX;
61327Sjkh	    break;
62327Sjkh
63327Sjkh	case 'c':
64327Sjkh	    Flags |= SHOW_COMMENT;
65327Sjkh	    break;
66327Sjkh
67327Sjkh	case 'd':
68327Sjkh	    Flags |= SHOW_DESC;
69327Sjkh	    break;
70327Sjkh
71327Sjkh	case 'f':
72327Sjkh	    Flags |= SHOW_PLIST;
73327Sjkh	    break;
74327Sjkh
75327Sjkh	case 'i':
76327Sjkh	    Flags |= SHOW_INSTALL;
77327Sjkh	    break;
78327Sjkh
79327Sjkh	case 'k':
80327Sjkh	    Flags |= SHOW_DEINSTALL;
81327Sjkh	    break;
82327Sjkh
83327Sjkh	case 'r':
84327Sjkh	    Flags |= SHOW_REQUIRE;
85327Sjkh	    break;
86327Sjkh
87327Sjkh	case 'h':
88327Sjkh	case '?':
89327Sjkh	default:
90327Sjkh	    usage(prog_name, NULL);
91327Sjkh	    break;
92327Sjkh	}
93327Sjkh
94327Sjkh    argc -= optind;
95327Sjkh    argv += optind;
96327Sjkh
97327Sjkh    /* Set some reasonable defaults */
98327Sjkh    if (!Flags)
99327Sjkh	Flags = SHOW_COMMENT | SHOW_DESC;
100327Sjkh
101327Sjkh    /* Get all the remaining package names, if any */
102327Sjkh    while (*argv)
103327Sjkh	*pkgs++ = *argv++;
104327Sjkh
105327Sjkh    /* If no packages, yelp */
106327Sjkh    if (pkgs == start && !AllInstalled)
107327Sjkh	usage(prog_name, "Missing package name(s)");
108327Sjkh    *pkgs = NULL;
109327Sjkh    return pkg_perform(start);
110327Sjkh}
111327Sjkh
112327Sjkhvoid
113327Sjkhusage(const char *name, const char *fmt, ...)
114327Sjkh{
115327Sjkh    va_list args;
116327Sjkh
117327Sjkh    va_start(args, fmt);
118327Sjkh    if (fmt) {
119327Sjkh	fprintf(stderr, "%s: ", name);
120327Sjkh	vfprintf(stderr, fmt, args);
121327Sjkh	fprintf(stderr, "\n\n");
122327Sjkh    }
123327Sjkh    va_end(args);
124327Sjkh    fprintf(stderr, "Usage: %s [args] pkg [ .. pkg ]\n", name);
125327Sjkh    fprintf(stderr, "Where args are one or more of:\n\n");
126327Sjkh    fprintf(stderr, "-a         show all installed packages (if any)\n");
127327Sjkh    fprintf(stderr, "-I         print 'index' of packages\n");
128327Sjkh    fprintf(stderr, "-c         print `one line comment'\n");
129327Sjkh    fprintf(stderr, "-d         print description\n");
130327Sjkh    fprintf(stderr, "-f         show packing list\n");
131327Sjkh    fprintf(stderr, "-i         show install script\n");
132327Sjkh    fprintf(stderr, "-k         show deinstall script\n");
133327Sjkh    fprintf(stderr, "-r         show requirements script\n");
134327Sjkh    fprintf(stderr, "-p         show prefix\n");
135327Sjkh    fprintf(stderr, "-v         show all information\n");
136327Sjkh    fprintf(stderr, "\n[no args = -c -d]\n");
137327Sjkh    exit(1);
138327Sjkh}
139