main.c revision 50479
1177867Sjfv#ifndef lint 2169240Sjfvstatic const char rcsid[] = 3286833Ssbruno "$FreeBSD: head/usr.sbin/pkg_install/create/main.c 50479 1999-08-28 01:35:59Z peter $"; 4169240Sjfv#endif 5169240Sjfv 6169240Sjfv/* 7169240Sjfv * FreeBSD install - a package for the installation and maintainance 8169240Sjfv * of non-core utilities. 9169240Sjfv * 10169240Sjfv * Jordan K. Hubbard 11169240Sjfv * 18 July 1993 12169240Sjfv * 13169240Sjfv * This is the create module. 14169240Sjfv * 15169240Sjfv */ 16169240Sjfv 17169240Sjfv#include <err.h> 18169240Sjfv#include "lib.h" 19169240Sjfv#include "create.h" 20169240Sjfv 21169240Sjfvstatic char Options[] = "YNOhvf:p:P:c:d:i:I:k:K:r:t:X:D:m:s:"; 22169240Sjfv 23169240Sjfvchar *Prefix = NULL; 24169240Sjfvchar *Comment = NULL; 25169240Sjfvchar *Desc = NULL; 26169240Sjfvchar *SrcDir = NULL; 27169240Sjfvchar *Display = NULL; 28169240Sjfvchar *Install = NULL; 29169240Sjfvchar *PostInstall = NULL; 30169240Sjfvchar *DeInstall = NULL; 31169240Sjfvchar *PostDeInstall = NULL; 32177867Sjfvchar *Contents = NULL; 33177867Sjfvchar *Require = NULL; 34169240Sjfvchar *ExcludeFrom = NULL; 35169240Sjfvchar *Mtree = NULL; 36169240Sjfvchar *Pkgdeps = NULL; 37169240Sjfvchar PlayPen[FILENAME_MAX]; 38169240Sjfvint Dereference = 0; 39169240Sjfvint PlistOnly = 0; 40169240Sjfv 41169240Sjfvstatic void usage __P((void)); 42169240Sjfv 43169240Sjfvint 44228386Sjfvmain(int argc, char **argv) 45228386Sjfv{ 46256200Sjfv int ch; 47256200Sjfv char **pkgs, **start; 48228386Sjfv 49169240Sjfv pkgs = start = argv; 50169240Sjfv while ((ch = getopt(argc, argv, Options)) != -1) 51228386Sjfv switch(ch) { 52228386Sjfv case 'v': 53228386Sjfv Verbose = TRUE; 54228386Sjfv break; 55228386Sjfv 56228386Sjfv case 'N': 57228386Sjfv AutoAnswer = NO; 58228386Sjfv break; 59169240Sjfv 60169240Sjfv case 'Y': 61228386Sjfv AutoAnswer = YES; 62228386Sjfv break; 63228386Sjfv 64228386Sjfv case 'O': 65228386Sjfv PlistOnly = YES; 66169240Sjfv break; 67169240Sjfv 68247064Sjfv case 'p': 69228386Sjfv Prefix = optarg; 70228386Sjfv break; 71228386Sjfv 72176667Sjfv case 's': 73228386Sjfv SrcDir = optarg; 74228386Sjfv break; 75228386Sjfv 76247064Sjfv case 'f': 77228386Sjfv Contents = optarg; 78181027Sjfv break; 79228386Sjfv 80267935Sjfv case 'c': 81228386Sjfv Comment = optarg; 82228386Sjfv break; 83228386Sjfv 84228386Sjfv case 'd': 85228386Sjfv Desc = optarg; 86228386Sjfv break; 87228386Sjfv 88228386Sjfv case 'i': 89228386Sjfv Install = optarg; 90228386Sjfv break; 91228386Sjfv 92228386Sjfv case 'I': 93228386Sjfv PostInstall = optarg; 94228386Sjfv break; 95228386Sjfv 96228386Sjfv case 'k': 97228386Sjfv DeInstall = optarg; 98228386Sjfv break; 99228386Sjfv 100228386Sjfv case 'K': 101228386Sjfv PostDeInstall = optarg; 102228386Sjfv break; 103228386Sjfv 104228386Sjfv case 'r': 105228386Sjfv Require = optarg; 106228386Sjfv break; 107228386Sjfv 108228386Sjfv case 't': 109228386Sjfv strcpy(PlayPen, optarg); 110228386Sjfv break; 111228386Sjfv 112228386Sjfv case 'X': 113169240Sjfv ExcludeFrom = optarg; 114176667Sjfv break; 115228386Sjfv 116228386Sjfv case 'h': 117228386Sjfv Dereference = 1; 118228386Sjfv break; 119228386Sjfv 120228386Sjfv case 'D': 121228386Sjfv Display = optarg; 122228386Sjfv break; 123228386Sjfv 124228386Sjfv case 'm': 125228386Sjfv Mtree = optarg; 126228386Sjfv break; 127228386Sjfv 128228386Sjfv case 'P': 129228386Sjfv Pkgdeps = optarg; 130228386Sjfv break; 131228386Sjfv 132228386Sjfv case '?': 133228386Sjfv default: 134169240Sjfv usage(); 135267935Sjfv break; 136228386Sjfv } 137228386Sjfv 138228386Sjfv argc -= optind; 139228386Sjfv argv += optind; 140228386Sjfv 141228386Sjfv /* Get all the remaining package names, if any */ 142228386Sjfv while (*argv) 143228386Sjfv *pkgs++ = *argv++; 144169240Sjfv 145169240Sjfv /* If no packages, yelp */ 146169240Sjfv if (pkgs == start) 147228386Sjfv warnx("missing package name"), usage(); 148228386Sjfv *pkgs = NULL; 149228386Sjfv if (start[1]) 150228386Sjfv warnx("only one package name allowed ('%s' extraneous)", start[1]), 151228386Sjfv usage(); 152169240Sjfv if (!pkg_perform(start)) { 153169240Sjfv if (Verbose) 154169240Sjfv warnx("package creation failed"); 155228386Sjfv return 1; 156228386Sjfv } 157228386Sjfv else 158228386Sjfv return 0; 159228386Sjfv} 160169240Sjfv 161283959Ssbrunostatic void 162228386Sjfvusage() 163228386Sjfv{ 164228386Sjfv fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n", 165228386Sjfv"usage: pkg_create [-YNOhv] [-P pkgs] [-p prefix] [-f contents] [-i iscript]", 166283959Ssbruno" [-I piscript] [-k dscript] [-K pdscript] [-r rscript] ", 167228386Sjfv" [-t template] [-X excludefile] [-D displayfile] ", 168228386Sjfv" [-m mtreefile] -c comment -d description -f packlist ", 169169240Sjfv" pkg-name"); 170228386Sjfv exit(1); 171169240Sjfv} 172169240Sjfv