main.c revision 383
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 19383Sjkhstatic char Options[] = "hvf:p:c:d:i:k:r:t:"; 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; 29327Sjkh 30327Sjkhint 31327Sjkhmain(int argc, char **argv) 32327Sjkh{ 33327Sjkh int ch; 34327Sjkh char **pkgs, **start; 35327Sjkh char *prog_name = argv[0]; 36327Sjkh 37327Sjkh pkgs = start = argv; 38327Sjkh while ((ch = getopt(argc, argv, Options)) != EOF) 39327Sjkh switch(ch) { 40327Sjkh case 'v': 41327Sjkh Verbose = TRUE; 42327Sjkh break; 43327Sjkh 44327Sjkh case 'p': 45327Sjkh Prefix = optarg; 46327Sjkh break; 47327Sjkh 48327Sjkh case 'f': 49327Sjkh Contents = optarg; 50327Sjkh break; 51327Sjkh 52327Sjkh case 'c': 53327Sjkh Comment = optarg; 54327Sjkh break; 55327Sjkh 56327Sjkh case 'd': 57327Sjkh Desc = optarg; 58327Sjkh break; 59327Sjkh 60327Sjkh case 'i': 61327Sjkh Install = optarg; 62327Sjkh break; 63327Sjkh 64327Sjkh case 'k': 65327Sjkh DeInstall = optarg; 66327Sjkh break; 67327Sjkh 68327Sjkh case 'r': 69327Sjkh Require = optarg; 70327Sjkh break; 71327Sjkh 72383Sjkh case 't': 73383Sjkh PlayPen = optarg; 74383Sjkh break; 75383Sjkh 76327Sjkh case 'h': 77327Sjkh case '?': 78327Sjkh default: 79327Sjkh usage(prog_name, NULL); 80327Sjkh break; 81327Sjkh } 82327Sjkh 83327Sjkh argc -= optind; 84327Sjkh argv += optind; 85327Sjkh 86327Sjkh /* Get all the remaining package names, if any */ 87327Sjkh while (*argv) 88327Sjkh *pkgs++ = *argv++; 89327Sjkh 90327Sjkh /* If no packages, yelp */ 91327Sjkh if (pkgs == start) 92327Sjkh usage(prog_name, "Missing package name"); 93327Sjkh *pkgs = NULL; 94327Sjkh if (start[1]) 95327Sjkh usage(prog_name, "Only one package name allowed\n\t('%s' extraneous)", 96327Sjkh start[1]); 97327Sjkh if (!pkg_perform(start)) { 98327Sjkh if (Verbose) 99327Sjkh fprintf(stderr, "Package creation failed.\n"); 100327Sjkh return 1; 101327Sjkh } 102327Sjkh else 103327Sjkh return 0; 104327Sjkh} 105327Sjkh 106327Sjkhvoid 107327Sjkhusage(const char *name, const char *fmt, ...) 108327Sjkh{ 109327Sjkh va_list args; 110327Sjkh 111327Sjkh va_start(args, fmt); 112327Sjkh if (fmt) { 113327Sjkh fprintf(stderr, "%s: ", name); 114327Sjkh vfprintf(stderr, fmt, args); 115327Sjkh fprintf(stderr, "\n\n"); 116327Sjkh } 117327Sjkh va_end(args); 118327Sjkh fprintf(stderr, "Usage: %s [args] pkg\n\n", name); 119327Sjkh fprintf(stderr, "Where args are one or more of:\n\n"); 120327Sjkh 121327Sjkh fprintf(stderr, "-c [-]file Get one-line comment from file (-or arg)\n"); 122327Sjkh fprintf(stderr, "-d [-]file Get description from file (-or arg)\n"); 123327Sjkh fprintf(stderr, "-f file get list of files from file (- for stdin)\n"); 124327Sjkh fprintf(stderr, "-i script install script\n"); 125327Sjkh fprintf(stderr, "-p arg install prefix will be arg\n"); 126327Sjkh fprintf(stderr, "-k script de-install script\n"); 127327Sjkh fprintf(stderr, "-r script pre/post requirements script\n"); 128383Sjkh fprintf(stderr, "-t temp use temp as template for mktemp()\n"); 129327Sjkh fprintf(stderr, "-v verbose\n"); 130327Sjkh exit(1); 131327Sjkh} 132