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