main.c revision 379
1327Sjkh#ifndef lint 2379Sjkhstatic char *rcsid = "$Header: /usr1/cvs/jkh/pkg_install/info/main.c,v 1.5 1993/09/04 05:06:41 jkh Exp $"; 3327Sjkh#endif 4327Sjkh 5327Sjkh/* 6327Sjkh * 7327Sjkh * FreeBSD install - a package for the installation and maintainance 8327Sjkh * of non-core utilities. 9327Sjkh * 10327Sjkh * Redistribution and use in source and binary forms, with or without 11327Sjkh * modification, are permitted provided that the following conditions 12327Sjkh * are met: 13327Sjkh * 1. Redistributions of source code must retain the above copyright 14327Sjkh * notice, this list of conditions and the following disclaimer. 15327Sjkh * 2. Redistributions in binary form must reproduce the above copyright 16327Sjkh * notice, this list of conditions and the following disclaimer in the 17327Sjkh * documentation and/or other materials provided with the distribution. 18327Sjkh * 19327Sjkh * Jordan K. Hubbard 20327Sjkh * 18 July 1993 21327Sjkh * 22327Sjkh * This is the add module. 23327Sjkh * 24327Sjkh */ 25327Sjkh 26327Sjkh#include "lib.h" 27327Sjkh#include "info.h" 28327Sjkh 29379Sjkhstatic char Options[] = "acdfikrpIvhl:"; 30327Sjkh 31327Sjkhint Flags = 0; 32327SjkhBoolean AllInstalled = FALSE; 33379Sjkhchar *InfoPrefix = ""; 34327Sjkh 35327Sjkhint 36327Sjkhmain(int argc, char **argv) 37327Sjkh{ 38327Sjkh int ch; 39327Sjkh char **pkgs, **start; 40327Sjkh char *prog_name = argv[0]; 41327Sjkh 42327Sjkh pkgs = start = argv; 43327Sjkh while ((ch = getopt(argc, argv, Options)) != EOF) 44327Sjkh switch(ch) { 45327Sjkh case 'a': 46327Sjkh AllInstalled = TRUE; 47327Sjkh break; 48327Sjkh 49327Sjkh case 'v': 50327Sjkh Verbose = TRUE; 51327Sjkh /* Reasonable definition of 'everything' */ 52327Sjkh Flags = SHOW_COMMENT | SHOW_DESC | SHOW_PLIST | SHOW_INSTALL | 53327Sjkh SHOW_DEINSTALL | SHOW_REQUIRE; 54327Sjkh break; 55327Sjkh 56327Sjkh case 'I': 57327Sjkh Flags |= SHOW_INDEX; 58327Sjkh break; 59327Sjkh 60327Sjkh case 'p': 61327Sjkh Flags |= SHOW_PREFIX; 62327Sjkh break; 63327Sjkh 64327Sjkh case 'c': 65327Sjkh Flags |= SHOW_COMMENT; 66327Sjkh break; 67327Sjkh 68327Sjkh case 'd': 69327Sjkh Flags |= SHOW_DESC; 70327Sjkh break; 71327Sjkh 72327Sjkh case 'f': 73327Sjkh Flags |= SHOW_PLIST; 74327Sjkh break; 75327Sjkh 76327Sjkh case 'i': 77327Sjkh Flags |= SHOW_INSTALL; 78327Sjkh break; 79327Sjkh 80327Sjkh case 'k': 81327Sjkh Flags |= SHOW_DEINSTALL; 82327Sjkh break; 83327Sjkh 84327Sjkh case 'r': 85327Sjkh Flags |= SHOW_REQUIRE; 86327Sjkh break; 87327Sjkh 88379Sjkh case 'l': 89379Sjkh InfoPrefix = optarg; 90379Sjkh break; 91379Sjkh 92327Sjkh case 'h': 93327Sjkh case '?': 94327Sjkh default: 95327Sjkh usage(prog_name, NULL); 96327Sjkh break; 97327Sjkh } 98327Sjkh 99327Sjkh argc -= optind; 100327Sjkh argv += optind; 101327Sjkh 102327Sjkh /* Set some reasonable defaults */ 103327Sjkh if (!Flags) 104327Sjkh Flags = SHOW_COMMENT | SHOW_DESC; 105327Sjkh 106327Sjkh /* Get all the remaining package names, if any */ 107327Sjkh while (*argv) 108327Sjkh *pkgs++ = *argv++; 109327Sjkh 110327Sjkh /* If no packages, yelp */ 111327Sjkh if (pkgs == start && !AllInstalled) 112327Sjkh usage(prog_name, "Missing package name(s)"); 113327Sjkh *pkgs = NULL; 114327Sjkh return pkg_perform(start); 115327Sjkh} 116327Sjkh 117327Sjkhvoid 118327Sjkhusage(const char *name, const char *fmt, ...) 119327Sjkh{ 120327Sjkh va_list args; 121327Sjkh 122327Sjkh va_start(args, fmt); 123327Sjkh if (fmt) { 124327Sjkh fprintf(stderr, "%s: ", name); 125327Sjkh vfprintf(stderr, fmt, args); 126327Sjkh fprintf(stderr, "\n\n"); 127327Sjkh } 128327Sjkh va_end(args); 129327Sjkh fprintf(stderr, "Usage: %s [args] pkg [ .. pkg ]\n", name); 130327Sjkh fprintf(stderr, "Where args are one or more of:\n\n"); 131327Sjkh fprintf(stderr, "-a show all installed packages (if any)\n"); 132327Sjkh fprintf(stderr, "-I print 'index' of packages\n"); 133327Sjkh fprintf(stderr, "-c print `one line comment'\n"); 134327Sjkh fprintf(stderr, "-d print description\n"); 135327Sjkh fprintf(stderr, "-f show packing list\n"); 136327Sjkh fprintf(stderr, "-i show install script\n"); 137327Sjkh fprintf(stderr, "-k show deinstall script\n"); 138327Sjkh fprintf(stderr, "-r show requirements script\n"); 139327Sjkh fprintf(stderr, "-p show prefix\n"); 140379Sjkh fprintf(stderr, "-l <str> Prefix each info catagory with <str>\n"); 141327Sjkh fprintf(stderr, "-v show all information\n"); 142327Sjkh fprintf(stderr, "\n[no args = -c -d]\n"); 143327Sjkh exit(1); 144327Sjkh} 145