main.c revision 445
1#ifndef lint 2static const char *rcsid = "$Id: main.c,v 1.4 1993/09/04 05:06:33 jkh Exp $"; 3#endif 4 5/* 6 * FreeBSD install - a package for the installation and maintainance 7 * of non-core utilities. 8 * 9 * Jordan K. Hubbard 10 * 18 July 1993 11 * 12 * This is the create module. 13 * 14 */ 15 16#include "lib.h" 17#include "create.h" 18 19static char Options[] = "hvf:p:c:d:i:k:r:t:X:"; 20 21char *Prefix = NULL; 22char *Comment = NULL; 23char *Desc = NULL; 24char *Install = NULL; 25char *DeInstall = NULL; 26char *Contents = NULL; 27char *Require = NULL; 28char *PlayPen = NULL; 29char *ExcludeFrom = NULL; 30 31int 32main(int argc, char **argv) 33{ 34 int ch; 35 char **pkgs, **start; 36 char *prog_name = argv[0]; 37 38 pkgs = start = argv; 39 while ((ch = getopt(argc, argv, Options)) != EOF) 40 switch(ch) { 41 case 'v': 42 Verbose = TRUE; 43 break; 44 45 case 'p': 46 Prefix = optarg; 47 break; 48 49 case 'f': 50 Contents = optarg; 51 break; 52 53 case 'c': 54 Comment = optarg; 55 break; 56 57 case 'd': 58 Desc = optarg; 59 break; 60 61 case 'i': 62 Install = optarg; 63 break; 64 65 case 'k': 66 DeInstall = optarg; 67 break; 68 69 case 'r': 70 Require = optarg; 71 break; 72 73 case 't': 74 PlayPen = optarg; 75 break; 76 77 case 'X': 78 ExcludeFrom = optarg; 79 break; 80 81 case 'h': 82 case '?': 83 default: 84 usage(prog_name, NULL); 85 break; 86 } 87 88 argc -= optind; 89 argv += optind; 90 91 /* Get all the remaining package names, if any */ 92 while (*argv) 93 *pkgs++ = *argv++; 94 95 /* If no packages, yelp */ 96 if (pkgs == start) 97 usage(prog_name, "Missing package name"); 98 *pkgs = NULL; 99 if (start[1]) 100 usage(prog_name, "Only one package name allowed\n\t('%s' extraneous)", 101 start[1]); 102 if (!pkg_perform(start)) { 103 if (Verbose) 104 fprintf(stderr, "Package creation failed.\n"); 105 return 1; 106 } 107 else 108 return 0; 109} 110 111void 112usage(const char *name, const char *fmt, ...) 113{ 114 va_list args; 115 116 va_start(args, fmt); 117 if (fmt) { 118 fprintf(stderr, "%s: ", name); 119 vfprintf(stderr, fmt, args); 120 fprintf(stderr, "\n\n"); 121 } 122 va_end(args); 123 fprintf(stderr, "Usage: %s [args] pkg\n\n", name); 124 fprintf(stderr, "Where args are one or more of:\n\n"); 125 126 fprintf(stderr, "-c [-]file Get one-line comment from file (-or arg)\n"); 127 fprintf(stderr, "-d [-]file Get description from file (-or arg)\n"); 128 fprintf(stderr, "-f file get list of files from file (- for stdin)\n"); 129 fprintf(stderr, "-i script install script\n"); 130 fprintf(stderr, "-p arg install prefix will be arg\n"); 131 fprintf(stderr, "-k script de-install script\n"); 132 fprintf(stderr, "-r script pre/post requirements script\n"); 133 fprintf(stderr, "-t temp use temp as template for mktemp()\n"); 134 fprintf(stderr, "-X file exclude files listed in file\n"); 135 fprintf(stderr, "-v verbose\n"); 136 exit(1); 137} 138