main.c revision 392
1327Sjkh#ifndef lint 2379Sjkhstatic char *rcsid = "$Header: /usr1/cvs/jkh/pkg_install/info/main.c,v 1.5 1993/09/04 05:06:41 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 29392Sjkhstatic char Options[] = "acde:fikrpIvhl:"; 30327Sjkh 31327Sjkhint Flags = 0; 32327SjkhBoolean AllInstalled = FALSE; 33379Sjkhchar *InfoPrefix = ""; 34383Sjkhchar *PlayPen = NULL; 35392Sjkhchar *CheckPkg = NULL; 36327Sjkh 37327Sjkhint 38327Sjkhmain(int argc, char **argv) 39327Sjkh{ 40327Sjkh int ch; 41327Sjkh char **pkgs, **start; 42327Sjkh char *prog_name = argv[0]; 43327Sjkh 44327Sjkh pkgs = start = argv; 45327Sjkh while ((ch = getopt(argc, argv, Options)) != EOF) 46327Sjkh switch(ch) { 47327Sjkh case 'a': 48327Sjkh AllInstalled = TRUE; 49327Sjkh break; 50327Sjkh 51327Sjkh case 'v': 52327Sjkh Verbose = TRUE; 53327Sjkh /* Reasonable definition of 'everything' */ 54327Sjkh Flags = SHOW_COMMENT | SHOW_DESC | SHOW_PLIST | SHOW_INSTALL | 55327Sjkh SHOW_DEINSTALL | SHOW_REQUIRE; 56327Sjkh break; 57327Sjkh 58327Sjkh case 'I': 59327Sjkh Flags |= SHOW_INDEX; 60327Sjkh break; 61327Sjkh 62327Sjkh case 'p': 63327Sjkh Flags |= SHOW_PREFIX; 64327Sjkh break; 65327Sjkh 66327Sjkh case 'c': 67327Sjkh Flags |= SHOW_COMMENT; 68327Sjkh break; 69327Sjkh 70327Sjkh case 'd': 71327Sjkh Flags |= SHOW_DESC; 72327Sjkh break; 73327Sjkh 74327Sjkh case 'f': 75327Sjkh Flags |= SHOW_PLIST; 76327Sjkh break; 77327Sjkh 78327Sjkh case 'i': 79327Sjkh Flags |= SHOW_INSTALL; 80327Sjkh break; 81327Sjkh 82327Sjkh case 'k': 83327Sjkh Flags |= SHOW_DEINSTALL; 84327Sjkh break; 85327Sjkh 86327Sjkh case 'r': 87327Sjkh Flags |= SHOW_REQUIRE; 88327Sjkh break; 89327Sjkh 90379Sjkh case 'l': 91379Sjkh InfoPrefix = optarg; 92379Sjkh break; 93379Sjkh 94383Sjkh case 't': 95383Sjkh PlayPen = optarg; 96383Sjkh break; 97383Sjkh 98392Sjkh case 'e': 99392Sjkh CheckPkg = optarg; 100392Sjkh break; 101392Sjkh 102327Sjkh case 'h': 103327Sjkh case '?': 104327Sjkh default: 105327Sjkh usage(prog_name, NULL); 106327Sjkh break; 107327Sjkh } 108327Sjkh 109327Sjkh argc -= optind; 110327Sjkh argv += optind; 111327Sjkh 112327Sjkh /* Set some reasonable defaults */ 113327Sjkh if (!Flags) 114327Sjkh Flags = SHOW_COMMENT | SHOW_DESC; 115327Sjkh 116327Sjkh /* Get all the remaining package names, if any */ 117327Sjkh while (*argv) 118327Sjkh *pkgs++ = *argv++; 119327Sjkh 120327Sjkh /* If no packages, yelp */ 121392Sjkh if (pkgs == start && !AllInstalled && !CheckPkg) 122327Sjkh usage(prog_name, "Missing package name(s)"); 123327Sjkh *pkgs = NULL; 124327Sjkh return pkg_perform(start); 125327Sjkh} 126327Sjkh 127327Sjkhvoid 128327Sjkhusage(const char *name, const char *fmt, ...) 129327Sjkh{ 130327Sjkh va_list args; 131327Sjkh 132327Sjkh va_start(args, fmt); 133327Sjkh if (fmt) { 134327Sjkh fprintf(stderr, "%s: ", name); 135327Sjkh vfprintf(stderr, fmt, args); 136327Sjkh fprintf(stderr, "\n\n"); 137327Sjkh } 138327Sjkh va_end(args); 139327Sjkh fprintf(stderr, "Usage: %s [args] pkg [ .. pkg ]\n", name); 140327Sjkh fprintf(stderr, "Where args are one or more of:\n\n"); 141327Sjkh fprintf(stderr, "-a show all installed packages (if any)\n"); 142327Sjkh fprintf(stderr, "-I print 'index' of packages\n"); 143327Sjkh fprintf(stderr, "-c print `one line comment'\n"); 144327Sjkh fprintf(stderr, "-d print description\n"); 145327Sjkh fprintf(stderr, "-f show packing list\n"); 146327Sjkh fprintf(stderr, "-i show install script\n"); 147327Sjkh fprintf(stderr, "-k show deinstall script\n"); 148327Sjkh fprintf(stderr, "-r show requirements script\n"); 149327Sjkh fprintf(stderr, "-p show prefix\n"); 150379Sjkh fprintf(stderr, "-l <str> Prefix each info catagory with <str>\n"); 151327Sjkh fprintf(stderr, "-v show all information\n"); 152383Sjkh fprintf(stderr, "-t temp use temp as template for mktemp()\n"); 153327Sjkh fprintf(stderr, "\n[no args = -c -d]\n"); 154327Sjkh exit(1); 155327Sjkh} 156