NetBSD/dist/pkg_install/create/main.c

229 lines
3.8 KiB
C
Raw Normal View History

2007-08-03 17:58:16 +04:00
/* $NetBSD: main.c,v 1.1.1.2 2007/08/03 13:58:20 joerg Exp $ */
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <nbcompat.h>
#if HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
#endif
#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
2007-08-03 17:58:16 +04:00
__RCSID("$NetBSD: main.c,v 1.1.1.2 2007/08/03 13:58:20 joerg Exp $");
#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.
*
*/
#if HAVE_ERR_H
#include <err.h>
#endif
#include "lib.h"
#include "create.h"
2007-08-03 17:58:16 +04:00
static 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";
char *Prefix = NULL;
char *Comment = NULL;
char *Desc = NULL;
char *Display = NULL;
char *Install = NULL;
char *DeInstall = NULL;
char *Contents = NULL;
char *Pkgdeps = NULL;
char *BuildPkgdeps = NULL;
char *Pkgcfl = NULL;
char *BuildVersion = NULL;
char *BuildInfo = NULL;
char *SizePkg = NULL;
char *SizeAll = NULL;
char *Preserve = NULL;
char *SrcDir = NULL;
2007-08-03 17:58:16 +04:00
char *DefaultOwner = NULL;
char *DefaultGroup = NULL;
char *realprefix = NULL;
char PlayPen[MaxPathSize];
size_t PlayPenSize = sizeof(PlayPen);
int update_pkgdb = 1;
int create_views = 0;
int PlistOnly = 0;
int RelativeLinks = 0;
int ReorderDirs = 0;
Boolean File2Pkg = FALSE;
static void
usage(void)
{
fprintf(stderr,
"usage: pkg_create [-ElORUVv] [-B build-info-file] [-b build-version-file]\n"
" [-C cpkgs] [-D displayfile] [-I realprefix] [-i iscript]\n"
2007-08-03 17:58:16 +04:00
" [-K pkg_dbdir] [-k dscript] [-L SrcDir]\n"
" [-n preserve-file] [-P dpkgs] [-p prefix] [-r rscript]\n"
2007-08-03 17:58:16 +04:00
" [-S size-all-file] [-s size-pkg-file]\n"
" [-T buildpkgs] [-u owner] [-g group]\n"
" -c comment -d description -f packlist\n"
" pkg-name\n");
exit(1);
}
2007-08-03 17:58:16 +04:00
void
cleanup(int in_signal)
{
}
int
main(int argc, char **argv)
{
int ch;
setprogname(argv[0]);
while ((ch = getopt(argc, argv, Options)) != -1)
switch (ch) {
case 'v':
Verbose = TRUE;
break;
case 'E':
create_views = 1;
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;
2007-08-03 17:58:16 +04:00
case 'g':
DefaultGroup = optarg;
break;
case 'i':
Install = optarg;
break;
case 'K':
_pkgdb_setPKGDB_DIR(optarg);
break;
case 'k':
DeInstall = optarg;
break;
case 'l':
RelativeLinks = 1;
break;
case 'L':
SrcDir = optarg;
break;
2007-08-03 17:58:16 +04:00
case 'u':
DefaultOwner = optarg;
break;
case 'D':
Display = optarg;
break;
case 'n':
Preserve = optarg;
break;
case 'P':
Pkgdeps = optarg;
break;
case 'T':
BuildPkgdeps = 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;
2007-08-03 17:58:16 +04:00
if (argc == 0) {
warnx("missing package name");
usage();
}
if (argc != 1) {
warnx("only one package name allowed");
usage();
}
2007-08-03 17:58:16 +04:00
if (pkg_perform(*argv))
return 0;
2007-08-03 17:58:16 +04:00
if (Verbose) {
if (PlistOnly)
warnx("package registration failed");
else
warnx("package creation failed");
}
return 1;
}