main.c revision 1520
1327Sjkh#ifndef lint 21520Salmstatic const char *rcsid = "$Id: main.c,v 1.6 1994/04/16 21:50:53 jkh Exp $"; 3327Sjkh#endif 4327Sjkh 5327Sjkh/* 6327Sjkh * FreeBSD install - a package for the installation and maintainance 7327Sjkh * of non-core utilities. 8327Sjkh * 9327Sjkh * Jordan K. Hubbard 10327Sjkh * 18 July 1993 11327Sjkh * 12327Sjkh * This is the create module. 13327Sjkh * 14327Sjkh */ 15327Sjkh 16327Sjkh#include "lib.h" 17327Sjkh#include "create.h" 18327Sjkh 191364Sjkhstatic char Options[] = "YNhvf:p:c:d:i:k:r:t:X:"; 20327Sjkh 21327Sjkhchar *Prefix = NULL; 22327Sjkhchar *Comment = NULL; 23327Sjkhchar *Desc = NULL; 24327Sjkhchar *Install = NULL; 25327Sjkhchar *DeInstall = NULL; 26327Sjkhchar *Contents = NULL; 27327Sjkhchar *Require = NULL; 28383Sjkhchar *PlayPen = NULL; 29445Sjkhchar *ExcludeFrom = NULL; 301520Salmint Dereference = 0; 31327Sjkh 32327Sjkhint 33327Sjkhmain(int argc, char **argv) 34327Sjkh{ 35327Sjkh int ch; 36327Sjkh char **pkgs, **start; 37327Sjkh char *prog_name = argv[0]; 38327Sjkh 39327Sjkh pkgs = start = argv; 40327Sjkh while ((ch = getopt(argc, argv, Options)) != EOF) 41327Sjkh switch(ch) { 42327Sjkh case 'v': 43327Sjkh Verbose = TRUE; 44327Sjkh break; 45327Sjkh 461337Sjkh case 'N': 471337Sjkh AutoAnswer = NO; 481337Sjkh break; 491337Sjkh 501337Sjkh case 'Y': 511337Sjkh AutoAnswer = YES; 521337Sjkh break; 531337Sjkh 54327Sjkh case 'p': 55327Sjkh Prefix = optarg; 56327Sjkh break; 57327Sjkh 58327Sjkh case 'f': 59327Sjkh Contents = optarg; 60327Sjkh break; 61327Sjkh 62327Sjkh case 'c': 63327Sjkh Comment = optarg; 64327Sjkh break; 65327Sjkh 66327Sjkh case 'd': 67327Sjkh Desc = optarg; 68327Sjkh break; 69327Sjkh 70327Sjkh case 'i': 71327Sjkh Install = optarg; 72327Sjkh break; 73327Sjkh 74327Sjkh case 'k': 75327Sjkh DeInstall = optarg; 76327Sjkh break; 77327Sjkh 78327Sjkh case 'r': 79327Sjkh Require = optarg; 80327Sjkh break; 81327Sjkh 82383Sjkh case 't': 83383Sjkh PlayPen = optarg; 84383Sjkh break; 85383Sjkh 86445Sjkh case 'X': 87445Sjkh ExcludeFrom = optarg; 88445Sjkh break; 89445Sjkh 90327Sjkh case 'h': 911520Salm Dereference = 1; 921520Salm break; 931520Salm 94327Sjkh case '?': 95327Sjkh default: 96327Sjkh usage(prog_name, NULL); 97327Sjkh break; 98327Sjkh } 99327Sjkh 100327Sjkh argc -= optind; 101327Sjkh argv += optind; 102327Sjkh 103327Sjkh /* Get all the remaining package names, if any */ 104327Sjkh while (*argv) 105327Sjkh *pkgs++ = *argv++; 106327Sjkh 107327Sjkh /* If no packages, yelp */ 108327Sjkh if (pkgs == start) 109327Sjkh usage(prog_name, "Missing package name"); 110327Sjkh *pkgs = NULL; 111327Sjkh if (start[1]) 112327Sjkh usage(prog_name, "Only one package name allowed\n\t('%s' extraneous)", 113327Sjkh start[1]); 114327Sjkh if (!pkg_perform(start)) { 115327Sjkh if (Verbose) 116327Sjkh fprintf(stderr, "Package creation failed.\n"); 117327Sjkh return 1; 118327Sjkh } 119327Sjkh else 120327Sjkh return 0; 121327Sjkh} 122327Sjkh 123327Sjkhvoid 124327Sjkhusage(const char *name, const char *fmt, ...) 125327Sjkh{ 126327Sjkh va_list args; 127327Sjkh 128327Sjkh va_start(args, fmt); 129327Sjkh if (fmt) { 130327Sjkh fprintf(stderr, "%s: ", name); 131327Sjkh vfprintf(stderr, fmt, args); 132327Sjkh fprintf(stderr, "\n\n"); 133327Sjkh } 134327Sjkh va_end(args); 135327Sjkh fprintf(stderr, "Usage: %s [args] pkg\n\n", name); 136327Sjkh fprintf(stderr, "Where args are one or more of:\n\n"); 137327Sjkh 138327Sjkh fprintf(stderr, "-c [-]file Get one-line comment from file (-or arg)\n"); 139327Sjkh fprintf(stderr, "-d [-]file Get description from file (-or arg)\n"); 140327Sjkh fprintf(stderr, "-f file get list of files from file (- for stdin)\n"); 1411520Salm fprintf(stderr, "-h follow symbolic links\n"); 142327Sjkh fprintf(stderr, "-i script install script\n"); 143327Sjkh fprintf(stderr, "-p arg install prefix will be arg\n"); 144327Sjkh fprintf(stderr, "-k script de-install script\n"); 145327Sjkh fprintf(stderr, "-r script pre/post requirements script\n"); 146383Sjkh fprintf(stderr, "-t temp use temp as template for mktemp()\n"); 147445Sjkh fprintf(stderr, "-X file exclude files listed in file\n"); 148327Sjkh fprintf(stderr, "-v verbose\n"); 149327Sjkh exit(1); 150327Sjkh} 151