main.c revision 1364
1327Sjkh#ifndef lint 21364Sjkhstatic const char *rcsid = "$Id: main.c,v 1.5 1994/04/05 14:05:38 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; 30327Sjkh 31327Sjkhint 32327Sjkhmain(int argc, char **argv) 33327Sjkh{ 34327Sjkh int ch; 35327Sjkh char **pkgs, **start; 36327Sjkh char *prog_name = argv[0]; 37327Sjkh 38327Sjkh pkgs = start = argv; 39327Sjkh while ((ch = getopt(argc, argv, Options)) != EOF) 40327Sjkh switch(ch) { 41327Sjkh case 'v': 42327Sjkh Verbose = TRUE; 43327Sjkh break; 44327Sjkh 451337Sjkh case 'N': 461337Sjkh AutoAnswer = NO; 471337Sjkh break; 481337Sjkh 491337Sjkh case 'Y': 501337Sjkh AutoAnswer = YES; 511337Sjkh break; 521337Sjkh 53327Sjkh case 'p': 54327Sjkh Prefix = optarg; 55327Sjkh break; 56327Sjkh 57327Sjkh case 'f': 58327Sjkh Contents = optarg; 59327Sjkh break; 60327Sjkh 61327Sjkh case 'c': 62327Sjkh Comment = optarg; 63327Sjkh break; 64327Sjkh 65327Sjkh case 'd': 66327Sjkh Desc = optarg; 67327Sjkh break; 68327Sjkh 69327Sjkh case 'i': 70327Sjkh Install = optarg; 71327Sjkh break; 72327Sjkh 73327Sjkh case 'k': 74327Sjkh DeInstall = optarg; 75327Sjkh break; 76327Sjkh 77327Sjkh case 'r': 78327Sjkh Require = optarg; 79327Sjkh break; 80327Sjkh 81383Sjkh case 't': 82383Sjkh PlayPen = optarg; 83383Sjkh break; 84383Sjkh 85445Sjkh case 'X': 86445Sjkh ExcludeFrom = optarg; 87445Sjkh break; 88445Sjkh 89327Sjkh case 'h': 90327Sjkh case '?': 91327Sjkh default: 92327Sjkh usage(prog_name, NULL); 93327Sjkh break; 94327Sjkh } 95327Sjkh 96327Sjkh argc -= optind; 97327Sjkh argv += optind; 98327Sjkh 99327Sjkh /* Get all the remaining package names, if any */ 100327Sjkh while (*argv) 101327Sjkh *pkgs++ = *argv++; 102327Sjkh 103327Sjkh /* If no packages, yelp */ 104327Sjkh if (pkgs == start) 105327Sjkh usage(prog_name, "Missing package name"); 106327Sjkh *pkgs = NULL; 107327Sjkh if (start[1]) 108327Sjkh usage(prog_name, "Only one package name allowed\n\t('%s' extraneous)", 109327Sjkh start[1]); 110327Sjkh if (!pkg_perform(start)) { 111327Sjkh if (Verbose) 112327Sjkh fprintf(stderr, "Package creation failed.\n"); 113327Sjkh return 1; 114327Sjkh } 115327Sjkh else 116327Sjkh return 0; 117327Sjkh} 118327Sjkh 119327Sjkhvoid 120327Sjkhusage(const char *name, const char *fmt, ...) 121327Sjkh{ 122327Sjkh va_list args; 123327Sjkh 124327Sjkh va_start(args, fmt); 125327Sjkh if (fmt) { 126327Sjkh fprintf(stderr, "%s: ", name); 127327Sjkh vfprintf(stderr, fmt, args); 128327Sjkh fprintf(stderr, "\n\n"); 129327Sjkh } 130327Sjkh va_end(args); 131327Sjkh fprintf(stderr, "Usage: %s [args] pkg\n\n", name); 132327Sjkh fprintf(stderr, "Where args are one or more of:\n\n"); 133327Sjkh 134327Sjkh fprintf(stderr, "-c [-]file Get one-line comment from file (-or arg)\n"); 135327Sjkh fprintf(stderr, "-d [-]file Get description from file (-or arg)\n"); 136327Sjkh fprintf(stderr, "-f file get list of files from file (- for stdin)\n"); 137327Sjkh fprintf(stderr, "-i script install script\n"); 138327Sjkh fprintf(stderr, "-p arg install prefix will be arg\n"); 139327Sjkh fprintf(stderr, "-k script de-install script\n"); 140327Sjkh fprintf(stderr, "-r script pre/post requirements script\n"); 141383Sjkh fprintf(stderr, "-t temp use temp as template for mktemp()\n"); 142445Sjkh fprintf(stderr, "-X file exclude files listed in file\n"); 143327Sjkh fprintf(stderr, "-v verbose\n"); 144327Sjkh exit(1); 145327Sjkh} 146