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