summaryrefslogtreecommitdiff
path: root/pkgtools/pkg_install/files/create/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'pkgtools/pkg_install/files/create/main.c')
-rw-r--r--pkgtools/pkg_install/files/create/main.c225
1 files changed, 225 insertions, 0 deletions
diff --git a/pkgtools/pkg_install/files/create/main.c b/pkgtools/pkg_install/files/create/main.c
new file mode 100644
index 00000000000..c4d94393d64
--- /dev/null
+++ b/pkgtools/pkg_install/files/create/main.c
@@ -0,0 +1,225 @@
+/* $NetBSD: main.c,v 1.1.1.1 2002/12/20 18:14:09 schmonz Exp $ */
+
+#if 0
+#include <sys/cdefs.h>
+#ifndef lint
+#if 0
+static const char *rcsid = "from FreeBSD Id: main.c,v 1.17 1997/10/08 07:46:23 charnier Exp";
+#else
+__RCSID("$NetBSD: main.c,v 1.1.1.1 2002/12/20 18:14:09 schmonz Exp $");
+#endif
+#endif
+#endif
+
+/*
+ * FreeBSD install - a package for the installation and maintainance
+ * of non-core utilities.
+ *
+ * Jordan K. Hubbard
+ * 18 July 1993
+ *
+ * This is the create module.
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef HAVE_ERR_H
+#include <err.h>
+#endif
+
+#include "lib.h"
+#include "create.h"
+
+static const char Options[] = "ORhlVvFf:p:P:C:c:d:i:k:L:r:t:X:D:m:s:S:b:B:UI:";
+
+char *Prefix = NULL;
+char *Comment = NULL;
+char *Desc = NULL;
+char *Display = NULL;
+char *Install = NULL;
+char *DeInstall = NULL;
+char *Contents = NULL;
+char *Require = NULL;
+char *ExcludeFrom = NULL;
+char *Mtree = NULL;
+char *Pkgdeps = NULL;
+char *Pkgcfl = NULL;
+char *BuildVersion = NULL;
+char *BuildInfo = NULL;
+char *SizePkg = NULL;
+char *SizeAll = NULL;
+char *SrcDir = NULL;
+char *realprefix = NULL;
+char PlayPen[FILENAME_MAX];
+size_t PlayPenSize = sizeof(PlayPen);
+int update_pkgdb = 1;
+int Dereference = 0;
+int PlistOnly = 0;
+int RelativeLinks = 0;
+int ReorderDirs = 0;
+Boolean File2Pkg = FALSE;
+
+static void
+usage(void)
+{
+ fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n",
+ "usage: pkg_create [-ORUhlVv] [-P dpkgs] [-C cpkgs] [-p prefix] [-f contents]",
+ " [-i iscript] [-k dscript] [-r rscript] [-t template]",
+ " [-X excludefile] [-D displayfile] [-m mtreefile]",
+ " [-b build-version-file] [-B build-info-file]",
+ " [-I realprefix]",
+ " -c comment -d description -f packlist pkg-name");
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ int ch;
+ lpkg_head_t pkgs;
+ lpkg_t *lpp;
+
+ setprogname(argv[0]);
+
+ while ((ch = getopt(argc, argv, Options)) != -1)
+ switch (ch) {
+ case 'v':
+ Verbose = TRUE;
+ break;
+
+ case 'I':
+ realprefix = optarg;
+ break;
+
+ case 'O':
+ PlistOnly = 1;
+ break;
+
+ case 'R':
+ ReorderDirs = 1;
+ break;
+
+ case 'U':
+ update_pkgdb = 0;
+ break;
+
+ case 'p':
+ Prefix = optarg;
+ break;
+
+ case 's':
+ SizePkg = optarg;
+ break;
+
+ case 'S':
+ SizeAll = optarg;
+ break;
+
+ case 'f':
+ Contents = optarg;
+ break;
+
+ case 'c':
+ Comment = optarg;
+ break;
+
+ case 'd':
+ Desc = optarg;
+ break;
+
+ case 'i':
+ Install = optarg;
+ break;
+
+ case 'k':
+ DeInstall = optarg;
+ break;
+
+ case 'l':
+ RelativeLinks = 1;
+ break;
+
+ case 'L':
+ SrcDir = optarg;
+ break;
+
+ case 'r':
+ Require = optarg;
+ break;
+
+ case 't':
+ strcpy(PlayPen, optarg);
+ break;
+
+ case 'X':
+ ExcludeFrom = optarg;
+ break;
+
+ case 'h':
+ Dereference = 1;
+ break;
+
+ case 'D':
+ Display = optarg;
+ break;
+
+ case 'm':
+ Mtree = optarg;
+ break;
+
+ case 'P':
+ Pkgdeps = optarg;
+ break;
+
+ case 'C':
+ Pkgcfl = optarg;
+ break;
+
+ case 'b':
+ BuildVersion = optarg;
+ break;
+
+ case 'B':
+ BuildInfo = optarg;
+ break;
+
+ case 'V':
+ show_version();
+ /* NOTREACHED */
+
+ case '?':
+ default:
+ usage();
+ break;
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ TAILQ_INIT(&pkgs);
+
+ /* Get all the remaining package names, if any */
+ while (*argv) {
+ lpp = alloc_lpkg(*argv);
+ TAILQ_INSERT_TAIL(&pkgs, lpp, lp_link);
+ argv++;
+ }
+
+ /* If no packages, yelp */
+ lpp = TAILQ_FIRST(&pkgs);
+ if (lpp == NULL)
+ warnx("missing package name"), usage();
+ lpp = TAILQ_NEXT(lpp, lp_link);
+ if (lpp != NULL)
+ warnx("only one package name allowed ('%s' extraneous)",
+ lpp->lp_name),
+ usage();
+ if (!pkg_perform(&pkgs)) {
+ if (Verbose)
+ warnx("package creation failed");
+ return 1;
+ } else
+ return 0;
+}