main.c revision 1.1
1/*	$NetBSD: main.c,v 1.1 2008/09/30 19:00:26 joerg Exp $	*/
2
3#if HAVE_CONFIG_H
4#include "config.h"
5#endif
6#include <nbcompat.h>
7#if HAVE_SYS_CDEFS_H
8#include <sys/cdefs.h>
9#endif
10#ifndef lint
11#if 0
12static const char *rcsid = "from FreeBSD Id: main.c,v 1.17 1997/10/08 07:46:23 charnier Exp";
13#else
14__RCSID("$NetBSD: main.c,v 1.1 2008/09/30 19:00:26 joerg Exp $");
15#endif
16#endif
17
18/*
19 * FreeBSD install - a package for the installation and maintainance
20 * of non-core utilities.
21 *
22 * Jordan K. Hubbard
23 * 18 July 1993
24 *
25 * This is the create module.
26 *
27 */
28
29#if HAVE_ERR_H
30#include <err.h>
31#endif
32#include "lib.h"
33#include "create.h"
34
35static const char Options[] = "B:C:D:EFI:K:L:OP:RS:T:UVb:c:d:f:g:i:k:ln:p:r:s:u:v";
36
37char   *Prefix = NULL;
38char   *Comment = NULL;
39char   *Desc = NULL;
40char   *Display = NULL;
41char   *Install = NULL;
42char   *DeInstall = NULL;
43char   *Contents = NULL;
44char   *Pkgdeps = NULL;
45char   *BuildPkgdeps = NULL;
46char   *Pkgcfl = NULL;
47char   *BuildVersion = NULL;
48char   *BuildInfo = NULL;
49char   *SizePkg = NULL;
50char   *SizeAll = NULL;
51char   *Preserve = NULL;
52char   *SrcDir = NULL;
53char   *DefaultOwner = NULL;
54char   *DefaultGroup = NULL;
55char   *realprefix = NULL;
56char    PlayPen[MaxPathSize];
57size_t  PlayPenSize = sizeof(PlayPen);
58int	update_pkgdb = 1;
59int	create_views = 0;
60int     PlistOnly = 0;
61int     RelativeLinks = 0;
62int     ReorderDirs = 0;
63Boolean File2Pkg = FALSE;
64
65static void
66usage(void)
67{
68	fprintf(stderr,
69	    "usage: pkg_create [-ElORUVv] [-B build-info-file] [-b build-version-file]\n"
70            "                  [-C cpkgs] [-D displayfile] [-I realprefix] [-i iscript]\n"
71            "                  [-K pkg_dbdir] [-k dscript] [-L SrcDir]\n"
72            "                  [-n preserve-file] [-P dpkgs] [-p prefix] [-r rscript]\n"
73            "                  [-S size-all-file] [-s size-pkg-file]\n"
74	    "                  [-T buildpkgs] [-u owner] [-g group]\n"
75            "                  -c comment -d description -f packlist\n"
76            "                  pkg-name\n");
77	exit(1);
78}
79
80void
81cleanup(int in_signal)
82{
83}
84
85int
86main(int argc, char **argv)
87{
88	int     ch;
89
90	setprogname(argv[0]);
91	while ((ch = getopt(argc, argv, Options)) != -1)
92		switch (ch) {
93		case 'v':
94			Verbose = TRUE;
95			break;
96
97		case 'E':
98			create_views = 1;
99			break;
100
101		case 'I':
102			realprefix = optarg;
103			break;
104
105		case 'O':
106			PlistOnly = 1;
107			break;
108
109		case 'R':
110			ReorderDirs = 1;
111			break;
112
113		case 'U':
114			update_pkgdb = 0;
115			break;
116
117		case 'p':
118			Prefix = optarg;
119			break;
120
121		case 's':
122			SizePkg = optarg;
123			break;
124
125		case 'S':
126			SizeAll = optarg;
127			break;
128
129		case 'f':
130			Contents = optarg;
131			break;
132
133		case 'c':
134			Comment = optarg;
135			break;
136
137		case 'd':
138			Desc = optarg;
139			break;
140
141		case 'g':
142			DefaultGroup = optarg;
143			break;
144
145		case 'i':
146			Install = optarg;
147			break;
148
149		case 'K':
150			_pkgdb_setPKGDB_DIR(optarg);
151			break;
152
153		case 'k':
154			DeInstall = optarg;
155			break;
156
157		case 'l':
158			RelativeLinks = 1;
159			break;
160
161		case 'L':
162			SrcDir = optarg;
163			break;
164
165		case 'u':
166			DefaultOwner = optarg;
167			break;
168
169		case 'D':
170			Display = optarg;
171			break;
172
173		case 'n':
174			Preserve = optarg;
175			break;
176
177		case 'P':
178			Pkgdeps = optarg;
179			break;
180
181		case 'T':
182			BuildPkgdeps = optarg;
183			break;
184
185		case 'C':
186			Pkgcfl = optarg;
187			break;
188
189		case 'b':
190			BuildVersion = optarg;
191			break;
192
193		case 'B':
194			BuildInfo = optarg;
195			break;
196
197		case 'V':
198			show_version();
199			/* NOTREACHED */
200
201		case '?':
202		default:
203			usage();
204			break;
205		}
206
207	argc -= optind;
208	argv += optind;
209
210	if (argc == 0) {
211		warnx("missing package name");
212		usage();
213	}
214	if (argc != 1) {
215		warnx("only one package name allowed");
216		usage();
217	}
218
219	if (pkg_perform(*argv))
220		return 0;
221	if (Verbose) {
222		if (PlistOnly)
223			warnx("package registration failed");
224		else
225			warnx("package creation failed");
226	}
227	return 1;
228}
229