main.c revision 30221
1327Sjkh#ifndef lint 230221Scharnierstatic const char rcsid[] = 330221Scharnier "$Id: main.c,v 1.13 1997/03/31 05:10:50 imp Exp $"; 4327Sjkh#endif 5327Sjkh 6327Sjkh/* 7327Sjkh * 8327Sjkh * FreeBSD install - a package for the installation and maintainance 9327Sjkh * of non-core utilities. 10327Sjkh * 11327Sjkh * Redistribution and use in source and binary forms, with or without 12327Sjkh * modification, are permitted provided that the following conditions 13327Sjkh * are met: 14327Sjkh * 1. Redistributions of source code must retain the above copyright 15327Sjkh * notice, this list of conditions and the following disclaimer. 16327Sjkh * 2. Redistributions in binary form must reproduce the above copyright 17327Sjkh * notice, this list of conditions and the following disclaimer in the 18327Sjkh * documentation and/or other materials provided with the distribution. 19327Sjkh * 20327Sjkh * Jordan K. Hubbard 21327Sjkh * 18 July 1993 22327Sjkh * 23327Sjkh * This is the add module. 24327Sjkh * 25327Sjkh */ 26327Sjkh 2730221Scharnier#include <err.h> 28327Sjkh#include "lib.h" 29327Sjkh#include "info.h" 30327Sjkh 314996Sjkhstatic char Options[] = "acdDe:fikrRpLqImvhl:"; 32327Sjkh 33327Sjkhint Flags = 0; 34327SjkhBoolean AllInstalled = FALSE; 35411SjkhBoolean Quiet = FALSE; 36379Sjkhchar *InfoPrefix = ""; 3711780Sjkhchar PlayPen[FILENAME_MAX]; 38392Sjkhchar *CheckPkg = NULL; 39327Sjkh 4030221Scharnierstatic void usage __P((void)); 4130221Scharnier 42327Sjkhint 43327Sjkhmain(int argc, char **argv) 44327Sjkh{ 45327Sjkh int ch; 46327Sjkh char **pkgs, **start; 47327Sjkh 48327Sjkh pkgs = start = argv; 4924428Simp while ((ch = getopt(argc, argv, Options)) != -1) 50327Sjkh switch(ch) { 51327Sjkh case 'a': 52327Sjkh AllInstalled = TRUE; 53327Sjkh break; 54327Sjkh 55327Sjkh case 'v': 56327Sjkh Verbose = TRUE; 57327Sjkh /* Reasonable definition of 'everything' */ 58327Sjkh Flags = SHOW_COMMENT | SHOW_DESC | SHOW_PLIST | SHOW_INSTALL | 594996Sjkh SHOW_DEINSTALL | SHOW_REQUIRE | SHOW_DISPLAY | SHOW_MTREE; 60327Sjkh break; 61327Sjkh 62327Sjkh case 'I': 63327Sjkh Flags |= SHOW_INDEX; 64327Sjkh break; 65327Sjkh 66327Sjkh case 'p': 67327Sjkh Flags |= SHOW_PREFIX; 68327Sjkh break; 69327Sjkh 70327Sjkh case 'c': 71327Sjkh Flags |= SHOW_COMMENT; 72327Sjkh break; 73327Sjkh 74327Sjkh case 'd': 75327Sjkh Flags |= SHOW_DESC; 76327Sjkh break; 77327Sjkh 784996Sjkh case 'D': 794996Sjkh Flags |= SHOW_DISPLAY; 804996Sjkh break; 814996Sjkh 82327Sjkh case 'f': 83327Sjkh Flags |= SHOW_PLIST; 84327Sjkh break; 85327Sjkh 86327Sjkh case 'i': 87327Sjkh Flags |= SHOW_INSTALL; 88327Sjkh break; 89327Sjkh 90327Sjkh case 'k': 91327Sjkh Flags |= SHOW_DEINSTALL; 92327Sjkh break; 93327Sjkh 94327Sjkh case 'r': 95327Sjkh Flags |= SHOW_REQUIRE; 96327Sjkh break; 97327Sjkh 984996Sjkh case 'R': 994996Sjkh Flags |= SHOW_REQBY; 1004996Sjkh break; 1014996Sjkh 102411Sjkh case 'L': 103411Sjkh Flags |= SHOW_FILES; 104411Sjkh break; 105411Sjkh 1064996Sjkh case 'm': 1074996Sjkh Flags |= SHOW_MTREE; 1084996Sjkh break; 1094996Sjkh 110379Sjkh case 'l': 111379Sjkh InfoPrefix = optarg; 112379Sjkh break; 113379Sjkh 114411Sjkh case 'q': 115411Sjkh Quiet = TRUE; 116411Sjkh break; 117411Sjkh 118383Sjkh case 't': 11911780Sjkh strcpy(PlayPen, optarg); 120383Sjkh break; 121383Sjkh 122392Sjkh case 'e': 123392Sjkh CheckPkg = optarg; 124392Sjkh break; 125392Sjkh 126327Sjkh case 'h': 127327Sjkh case '?': 128327Sjkh default: 12930221Scharnier usage(); 130327Sjkh break; 131327Sjkh } 132327Sjkh 1338857Srgrimes argc -= optind; 134327Sjkh argv += optind; 135327Sjkh 136327Sjkh /* Set some reasonable defaults */ 137327Sjkh if (!Flags) 1384996Sjkh Flags = SHOW_COMMENT | SHOW_DESC | SHOW_REQBY; 139327Sjkh 140327Sjkh /* Get all the remaining package names, if any */ 141327Sjkh while (*argv) 142327Sjkh *pkgs++ = *argv++; 143327Sjkh 144327Sjkh /* If no packages, yelp */ 145392Sjkh if (pkgs == start && !AllInstalled && !CheckPkg) 14630221Scharnier warnx("missing package name(s)"), usage(); 147327Sjkh *pkgs = NULL; 148327Sjkh return pkg_perform(start); 149327Sjkh} 150327Sjkh 15130221Scharnierstatic void 15230221Scharnierusage() 153327Sjkh{ 15430221Scharnier fprintf(stderr, "%s\n%s\n%s\n", 15530221Scharnier "usage: pkg_info [-cdDikrRpLqImv] [-e package] [-l prefix]", 15630221Scharnier " pkg-name [pkg-name ...]", 15730221Scharnier " pkg_info -a [flags]"); 158327Sjkh exit(1); 159327Sjkh} 160