main.c revision 71095
1327Sjkh#ifndef lint 230221Scharnierstatic const char rcsid[] = 350479Speter "$FreeBSD: head/usr.sbin/pkg_install/create/main.c 71095 2001-01-16 08:27:28Z sobomax $"; 4327Sjkh#endif 5327Sjkh 6327Sjkh/* 7327Sjkh * FreeBSD install - a package for the installation and maintainance 8327Sjkh * of non-core utilities. 9327Sjkh * 10327Sjkh * Jordan K. Hubbard 11327Sjkh * 18 July 1993 12327Sjkh * 13327Sjkh * This is the create module. 14327Sjkh * 15327Sjkh */ 16327Sjkh 1730221Scharnier#include <err.h> 18327Sjkh#include "lib.h" 19327Sjkh#include "create.h" 20327Sjkh 2167454Ssobomaxstatic char Options[] = "YNOhvf:p:P:c:d:i:I:k:K:r:t:X:D:m:s:o:"; 22327Sjkh 23327Sjkhchar *Prefix = NULL; 24327Sjkhchar *Comment = NULL; 25327Sjkhchar *Desc = NULL; 2626473Sjkhchar *SrcDir = NULL; 274996Sjkhchar *Display = NULL; 28327Sjkhchar *Install = NULL; 2941866Sjkhchar *PostInstall = NULL; 30327Sjkhchar *DeInstall = NULL; 3141866Sjkhchar *PostDeInstall = NULL; 32327Sjkhchar *Contents = NULL; 33327Sjkhchar *Require = NULL; 34445Sjkhchar *ExcludeFrom = NULL; 354996Sjkhchar *Mtree = NULL; 367713Sjkhchar *Pkgdeps = NULL; 3767454Ssobomaxchar *Origin = NULL; 3826473Sjkhchar PlayPen[FILENAME_MAX]; 3971095Ssobomaxint Dereference = FALSE; 4071095Ssobomaxint PlistOnly = FALSE; 41327Sjkh 4230221Scharnierstatic void usage __P((void)); 4330221Scharnier 44327Sjkhint 45327Sjkhmain(int argc, char **argv) 46327Sjkh{ 47327Sjkh int ch; 48327Sjkh char **pkgs, **start; 49327Sjkh 50327Sjkh pkgs = start = argv; 5124428Simp while ((ch = getopt(argc, argv, Options)) != -1) 52327Sjkh switch(ch) { 53327Sjkh case 'v': 54327Sjkh Verbose = TRUE; 55327Sjkh break; 56327Sjkh 571337Sjkh case 'N': 581337Sjkh AutoAnswer = NO; 591337Sjkh break; 601337Sjkh 611337Sjkh case 'Y': 621337Sjkh AutoAnswer = YES; 631337Sjkh break; 641337Sjkh 657986Sjkh case 'O': 6671095Ssobomax PlistOnly = TRUE; 677986Sjkh break; 687986Sjkh 69327Sjkh case 'p': 70327Sjkh Prefix = optarg; 71327Sjkh break; 72327Sjkh 7326473Sjkh case 's': 7426473Sjkh SrcDir = optarg; 7526473Sjkh break; 7626473Sjkh 77327Sjkh case 'f': 78327Sjkh Contents = optarg; 79327Sjkh break; 80327Sjkh 81327Sjkh case 'c': 82327Sjkh Comment = optarg; 83327Sjkh break; 84327Sjkh 85327Sjkh case 'd': 86327Sjkh Desc = optarg; 87327Sjkh break; 88327Sjkh 89327Sjkh case 'i': 90327Sjkh Install = optarg; 91327Sjkh break; 92327Sjkh 9341866Sjkh case 'I': 9441866Sjkh PostInstall = optarg; 9541866Sjkh break; 9641866Sjkh 97327Sjkh case 'k': 98327Sjkh DeInstall = optarg; 99327Sjkh break; 100327Sjkh 10141866Sjkh case 'K': 10241866Sjkh PostDeInstall = optarg; 10341866Sjkh break; 10441866Sjkh 105327Sjkh case 'r': 106327Sjkh Require = optarg; 107327Sjkh break; 108327Sjkh 109383Sjkh case 't': 11011780Sjkh strcpy(PlayPen, optarg); 111383Sjkh break; 112383Sjkh 113445Sjkh case 'X': 114445Sjkh ExcludeFrom = optarg; 115445Sjkh break; 116445Sjkh 117327Sjkh case 'h': 11871095Ssobomax Dereference = TRUE; 1191520Salm break; 1201520Salm 1214996Sjkh case 'D': 1224996Sjkh Display = optarg; 1234996Sjkh break; 1244996Sjkh 1254996Sjkh case 'm': 1264996Sjkh Mtree = optarg; 1274996Sjkh break; 1284996Sjkh 1297713Sjkh case 'P': 1307713Sjkh Pkgdeps = optarg; 1317713Sjkh break; 1327713Sjkh 13367454Ssobomax case 'o': 13467454Ssobomax Origin = optarg; 13567454Ssobomax break; 13667454Ssobomax 137327Sjkh case '?': 138327Sjkh default: 13930221Scharnier usage(); 140327Sjkh break; 141327Sjkh } 142327Sjkh 1438857Srgrimes argc -= optind; 144327Sjkh argv += optind; 145327Sjkh 146327Sjkh /* Get all the remaining package names, if any */ 147327Sjkh while (*argv) 148327Sjkh *pkgs++ = *argv++; 149327Sjkh 150327Sjkh /* If no packages, yelp */ 151327Sjkh if (pkgs == start) 15230221Scharnier warnx("missing package name"), usage(); 153327Sjkh *pkgs = NULL; 154327Sjkh if (start[1]) 15530221Scharnier warnx("only one package name allowed ('%s' extraneous)", start[1]), 15630221Scharnier usage(); 157327Sjkh if (!pkg_perform(start)) { 158327Sjkh if (Verbose) 15930221Scharnier warnx("package creation failed"); 160327Sjkh return 1; 161327Sjkh } 162327Sjkh else 163327Sjkh return 0; 164327Sjkh} 165327Sjkh 16630221Scharnierstatic void 16730221Scharnierusage() 168327Sjkh{ 16941866Sjkh fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n", 17030221Scharnier"usage: pkg_create [-YNOhv] [-P pkgs] [-p prefix] [-f contents] [-i iscript]", 17141866Sjkh" [-I piscript] [-k dscript] [-K pdscript] [-r rscript] ", 17241866Sjkh" [-t template] [-X excludefile] [-D displayfile] ", 17367454Ssobomax" [-m mtreefile] [-o origin] -c comment -d description ", 17467454Ssobomax" -f packlist pkg-name"); 175327Sjkh exit(1); 176327Sjkh} 177