Annotation of pkgsrc/pkgtools/pkg_install/files/create/main.c, Revision 1.5
1.4 jlam 1: /* $NetBSD: main.c,v 1.26 2003/09/02 07:34:53 jlam Exp $ */
1.1 schmonz 2:
1.3 jlam 3: #if HAVE_CONFIG_H
4: #include "config.h"
5: #endif
1.4 jlam 6: #include <nbcompat.h>
1.3 jlam 7: #if HAVE_SYS_CDEFS_H
1.1 schmonz 8: #include <sys/cdefs.h>
1.3 jlam 9: #endif
1.1 schmonz 10: #ifndef lint
11: #if 0
12: static const char *rcsid = "from FreeBSD Id: main.c,v 1.17 1997/10/08 07:46:23 charnier Exp";
13: #else
1.4 jlam 14: __RCSID("$NetBSD: main.c,v 1.26 2003/09/02 07:34:53 jlam Exp $");
1.1 schmonz 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:
1.3 jlam 29: #if HAVE_ERR_H
1.1 schmonz 30: #include <err.h>
31: #endif
32: #include "lib.h"
33: #include "create.h"
34:
1.3 jlam 35: static const char Options[] = "B:C:D:EFI:K:L:OP:RS:UVX:b:c:d:f:hi:k:lm:n:p:r:s:t:v";
1.1 schmonz 36:
37: char *Prefix = NULL;
38: char *Comment = NULL;
39: char *Desc = NULL;
40: char *Display = NULL;
41: char *Install = NULL;
42: char *DeInstall = NULL;
43: char *Contents = NULL;
44: char *Require = NULL;
45: char *ExcludeFrom = NULL;
46: char *Mtree = NULL;
47: char *Pkgdeps = NULL;
48: char *Pkgcfl = NULL;
49: char *BuildVersion = NULL;
50: char *BuildInfo = NULL;
51: char *SizePkg = NULL;
52: char *SizeAll = NULL;
1.2 jschauma 53: char *Preserve = NULL;
1.1 schmonz 54: char *SrcDir = NULL;
55: char *realprefix = NULL;
56: char PlayPen[FILENAME_MAX];
57: size_t PlayPenSize = sizeof(PlayPen);
58: int update_pkgdb = 1;
1.3 jlam 59: int create_views = 0;
1.1 schmonz 60: int Dereference = 0;
61: int PlistOnly = 0;
62: int RelativeLinks = 0;
63: int ReorderDirs = 0;
64: Boolean File2Pkg = FALSE;
65:
66: static void
67: usage(void)
68: {
69: fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n",
1.3 jlam 70: "usage: pkg_create [-ORUEhlVv] [-P dpkgs] [-C cpkgs] [-p prefix] [-f contents]",
1.1 schmonz 71: " [-i iscript] [-k dscript] [-r rscript] [-t template]",
72: " [-X excludefile] [-D displayfile] [-m mtreefile]",
73: " [-b build-version-file] [-B build-info-file]",
74: " [-I realprefix]",
75: " -c comment -d description -f packlist pkg-name");
76: exit(1);
77: }
78:
79: int
80: main(int argc, char **argv)
81: {
82: int ch;
83: lpkg_head_t pkgs;
84: lpkg_t *lpp;
85:
86: setprogname(argv[0]);
87: while ((ch = getopt(argc, argv, Options)) != -1)
88: switch (ch) {
89: case 'v':
90: Verbose = TRUE;
91: break;
92:
1.3 jlam 93: case 'E':
94: create_views = 1;
95: break;
96:
1.1 schmonz 97: case 'I':
98: realprefix = optarg;
99: break;
100:
101: case 'O':
102: PlistOnly = 1;
103: break;
104:
105: case 'R':
106: ReorderDirs = 1;
107: break;
108:
109: case 'U':
110: update_pkgdb = 0;
111: break;
112:
113: case 'p':
114: Prefix = optarg;
115: break;
116:
117: case 's':
118: SizePkg = optarg;
119: break;
120:
121: case 'S':
122: SizeAll = optarg;
123: break;
124:
125: case 'f':
126: Contents = optarg;
127: break;
128:
129: case 'c':
130: Comment = optarg;
131: break;
132:
133: case 'd':
134: Desc = optarg;
135: break;
136:
137: case 'i':
138: Install = optarg;
139: break;
140:
1.3 jlam 141: case 'K':
142: _pkgdb_setPKGDB_DIR(optarg);
143: break;
144:
1.1 schmonz 145: case 'k':
146: DeInstall = optarg;
147: break;
148:
149: case 'l':
150: RelativeLinks = 1;
151: break;
152:
153: case 'L':
154: SrcDir = optarg;
155: break;
156:
157: case 'r':
158: Require = optarg;
159: break;
160:
161: case 't':
1.3 jlam 162: strlcpy(PlayPen, optarg, sizeof(PlayPen));
1.1 schmonz 163: break;
164:
165: case 'X':
166: ExcludeFrom = optarg;
167: break;
168:
169: case 'h':
170: Dereference = 1;
171: break;
172:
173: case 'D':
174: Display = optarg;
175: break;
176:
177: case 'm':
178: Mtree = optarg;
1.2 jschauma 179: break;
180:
181: case 'n':
182: Preserve = optarg;
1.1 schmonz 183: break;
184:
185: case 'P':
186: Pkgdeps = optarg;
187: break;
188:
189: case 'C':
190: Pkgcfl = optarg;
191: break;
192:
193: case 'b':
194: BuildVersion = optarg;
195: break;
196:
197: case 'B':
198: BuildInfo = optarg;
199: break;
200:
201: case 'V':
202: show_version();
203: /* NOTREACHED */
204:
205: case '?':
206: default:
207: usage();
208: break;
209: }
210:
211: argc -= optind;
212: argv += optind;
213:
214: TAILQ_INIT(&pkgs);
215:
216: /* Get all the remaining package names, if any */
217: while (*argv) {
218: lpp = alloc_lpkg(*argv);
219: TAILQ_INSERT_TAIL(&pkgs, lpp, lp_link);
220: argv++;
221: }
222:
223: /* If no packages, yelp */
224: lpp = TAILQ_FIRST(&pkgs);
225: if (lpp == NULL)
226: warnx("missing package name"), usage();
227: lpp = TAILQ_NEXT(lpp, lp_link);
228: if (lpp != NULL)
229: warnx("only one package name allowed ('%s' extraneous)",
230: lpp->lp_name),
231: usage();
232: if (!pkg_perform(&pkgs)) {
233: if (Verbose)
234: warnx("package creation failed");
235: return 1;
236: } else
237: return 0;
238: }
CVSweb <webmaster@jp.NetBSD.org>