main.c revision 445
1327Sjkh#ifndef lint 2379Sjkhstatic const char *rcsid = "$Id: main.c,v 1.4 1993/09/04 05:06:33 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 19445Sjkhstatic char Options[] = "hvf: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 45327Sjkh case 'p': 46327Sjkh Prefix = optarg; 47327Sjkh break; 48327Sjkh 49327Sjkh case 'f': 50327Sjkh Contents = optarg; 51327Sjkh break; 52327Sjkh 53327Sjkh case 'c': 54327Sjkh Comment = optarg; 55327Sjkh break; 56327Sjkh 57327Sjkh case 'd': 58327Sjkh Desc = optarg; 59327Sjkh break; 60327Sjkh 61327Sjkh case 'i': 62327Sjkh Install = optarg; 63327Sjkh break; 64327Sjkh 65327Sjkh case 'k': 66327Sjkh DeInstall = optarg; 67327Sjkh break; 68327Sjkh 69327Sjkh case 'r': 70327Sjkh Require = optarg; 71327Sjkh break; 72327Sjkh 73383Sjkh case 't': 74383Sjkh PlayPen = optarg; 75383Sjkh break; 76383Sjkh 77445Sjkh case 'X': 78445Sjkh ExcludeFrom = optarg; 79445Sjkh break; 80445Sjkh 81327Sjkh case 'h': 82327Sjkh case '?': 83327Sjkh default: 84327Sjkh usage(prog_name, NULL); 85327Sjkh break; 86327Sjkh } 87327Sjkh 88327Sjkh argc -= optind; 89327Sjkh argv += optind; 90327Sjkh 91327Sjkh /* Get all the remaining package names, if any */ 92327Sjkh while (*argv) 93327Sjkh *pkgs++ = *argv++; 94327Sjkh 95327Sjkh /* If no packages, yelp */ 96327Sjkh if (pkgs == start) 97327Sjkh usage(prog_name, "Missing package name"); 98327Sjkh *pkgs = NULL; 99327Sjkh if (start[1]) 100327Sjkh usage(prog_name, "Only one package name allowed\n\t('%s' extraneous)", 101327Sjkh start[1]); 102327Sjkh if (!pkg_perform(start)) { 103327Sjkh if (Verbose) 104327Sjkh fprintf(stderr, "Package creation failed.\n"); 105327Sjkh return 1; 106327Sjkh } 107327Sjkh else 108327Sjkh return 0; 109327Sjkh} 110327Sjkh 111327Sjkhvoid 112327Sjkhusage(const char *name, const char *fmt, ...) 113327Sjkh{ 114327Sjkh va_list args; 115327Sjkh 116327Sjkh va_start(args, fmt); 117327Sjkh if (fmt) { 118327Sjkh fprintf(stderr, "%s: ", name); 119327Sjkh vfprintf(stderr, fmt, args); 120327Sjkh fprintf(stderr, "\n\n"); 121327Sjkh } 122327Sjkh va_end(args); 123327Sjkh fprintf(stderr, "Usage: %s [args] pkg\n\n", name); 124327Sjkh fprintf(stderr, "Where args are one or more of:\n\n"); 125327Sjkh 126327Sjkh fprintf(stderr, "-c [-]file Get one-line comment from file (-or arg)\n"); 127327Sjkh fprintf(stderr, "-d [-]file Get description from file (-or arg)\n"); 128327Sjkh fprintf(stderr, "-f file get list of files from file (- for stdin)\n"); 129327Sjkh fprintf(stderr, "-i script install script\n"); 130327Sjkh fprintf(stderr, "-p arg install prefix will be arg\n"); 131327Sjkh fprintf(stderr, "-k script de-install script\n"); 132327Sjkh fprintf(stderr, "-r script pre/post requirements script\n"); 133383Sjkh fprintf(stderr, "-t temp use temp as template for mktemp()\n"); 134445Sjkh fprintf(stderr, "-X file exclude files listed in file\n"); 135327Sjkh fprintf(stderr, "-v verbose\n"); 136327Sjkh exit(1); 137327Sjkh} 138