main.c revision 30221
1327Sjkh#ifndef lint 230221Scharnierstatic const char rcsid[] = 330221Scharnier "$Id: main.c,v 1.16 1997/06/06 12:19:11 jkh Exp $"; 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 2126473Sjkhstatic char Options[] = "YNOhvf:p:P:c:d:i:k:r:t:X:D:m:s:"; 22327Sjkh 23327Sjkhchar *Prefix = NULL; 24327Sjkhchar *Comment = NULL; 25327Sjkhchar *Desc = NULL; 2626473Sjkhchar *SrcDir = NULL; 274996Sjkhchar *Display = NULL; 28327Sjkhchar *Install = NULL; 29327Sjkhchar *DeInstall = NULL; 30327Sjkhchar *Contents = NULL; 31327Sjkhchar *Require = NULL; 32445Sjkhchar *ExcludeFrom = NULL; 334996Sjkhchar *Mtree = NULL; 347713Sjkhchar *Pkgdeps = NULL; 3526473Sjkhchar PlayPen[FILENAME_MAX]; 361520Salmint Dereference = 0; 377986Sjkhint PlistOnly = 0; 38327Sjkh 3930221Scharnierstatic void usage __P((void)); 4030221Scharnier 41327Sjkhint 42327Sjkhmain(int argc, char **argv) 43327Sjkh{ 44327Sjkh int ch; 45327Sjkh char **pkgs, **start; 46327Sjkh 47327Sjkh pkgs = start = argv; 4824428Simp while ((ch = getopt(argc, argv, Options)) != -1) 49327Sjkh switch(ch) { 50327Sjkh case 'v': 51327Sjkh Verbose = TRUE; 52327Sjkh break; 53327Sjkh 541337Sjkh case 'N': 551337Sjkh AutoAnswer = NO; 561337Sjkh break; 571337Sjkh 581337Sjkh case 'Y': 591337Sjkh AutoAnswer = YES; 601337Sjkh break; 611337Sjkh 627986Sjkh case 'O': 637986Sjkh PlistOnly = YES; 647986Sjkh break; 657986Sjkh 66327Sjkh case 'p': 67327Sjkh Prefix = optarg; 68327Sjkh break; 69327Sjkh 7026473Sjkh case 's': 7126473Sjkh SrcDir = optarg; 7226473Sjkh break; 7326473Sjkh 74327Sjkh case 'f': 75327Sjkh Contents = optarg; 76327Sjkh break; 77327Sjkh 78327Sjkh case 'c': 79327Sjkh Comment = optarg; 80327Sjkh break; 81327Sjkh 82327Sjkh case 'd': 83327Sjkh Desc = optarg; 84327Sjkh break; 85327Sjkh 86327Sjkh case 'i': 87327Sjkh Install = optarg; 88327Sjkh break; 89327Sjkh 90327Sjkh case 'k': 91327Sjkh DeInstall = optarg; 92327Sjkh break; 93327Sjkh 94327Sjkh case 'r': 95327Sjkh Require = optarg; 96327Sjkh break; 97327Sjkh 98383Sjkh case 't': 9911780Sjkh strcpy(PlayPen, optarg); 100383Sjkh break; 101383Sjkh 102445Sjkh case 'X': 103445Sjkh ExcludeFrom = optarg; 104445Sjkh break; 105445Sjkh 106327Sjkh case 'h': 1071520Salm Dereference = 1; 1081520Salm break; 1091520Salm 1104996Sjkh case 'D': 1114996Sjkh Display = optarg; 1124996Sjkh break; 1134996Sjkh 1144996Sjkh case 'm': 1154996Sjkh Mtree = optarg; 1164996Sjkh break; 1174996Sjkh 1187713Sjkh case 'P': 1197713Sjkh Pkgdeps = optarg; 1207713Sjkh break; 1217713Sjkh 122327Sjkh case '?': 123327Sjkh default: 12430221Scharnier usage(); 125327Sjkh break; 126327Sjkh } 127327Sjkh 1288857Srgrimes argc -= optind; 129327Sjkh argv += optind; 130327Sjkh 131327Sjkh /* Get all the remaining package names, if any */ 132327Sjkh while (*argv) 133327Sjkh *pkgs++ = *argv++; 134327Sjkh 135327Sjkh /* If no packages, yelp */ 136327Sjkh if (pkgs == start) 13730221Scharnier warnx("missing package name"), usage(); 138327Sjkh *pkgs = NULL; 139327Sjkh if (start[1]) 14030221Scharnier warnx("only one package name allowed ('%s' extraneous)", start[1]), 14130221Scharnier usage(); 142327Sjkh if (!pkg_perform(start)) { 143327Sjkh if (Verbose) 14430221Scharnier warnx("package creation failed"); 145327Sjkh return 1; 146327Sjkh } 147327Sjkh else 148327Sjkh return 0; 149327Sjkh} 150327Sjkh 15130221Scharnierstatic void 15230221Scharnierusage() 153327Sjkh{ 15430221Scharnier fprintf(stderr, "%s\n%s\n%s\n%s\n", 15530221Scharnier"usage: pkg_create [-YNOhv] [-P pkgs] [-p prefix] [-f contents] [-i iscript]", 15630221Scharnier" [-k dscript] [-r rscript] [-t template] [-X excludefile]", 15730221Scharnier" [-D displayfile] [-m mtreefile] -c comment -d description", 15830221Scharnier" -f packlist pkg-name"); 159327Sjkh exit(1); 160327Sjkh} 161