int complete, addcontent, isconfig, opt_l, recursive, verbose;
int followsymlinks;
int xargs, noclear;
- int striparg;
+ int striparg, init;
mode_t clmode;
char *cltype, *clhash, *clmtime, *prefix, *strip, *cltarget;
struct opts opt = { 0 };
int i;
int option;
+ char *pkgstr = 0, *pkgid = 0;
+
+ char package[128];
+ char version[64];
+ int release;
char hash[ZPM_HASH_STRLEN+1];
opt.addcontent = 1;
- while ((option = getopt(ac, av, "CF:H:M:NP:S:T:cf:g:hlm:ru:vxz")) != -1) {
+ while ((option = getopt(ac, av, "iCF:H:M:NP:S:T:cf:g:hlm:ru:vxzp:")) != -1) {
switch (option) {
+ case 'f': dbfile = optarg; break;
+ case 'i': opt.init = 1; break;
case 'C': opt.complete = 1; break;
case 'F': opt.cltype = optarg; break;
case 'H': opt.clhash = optarg; break;
case 's': opt.striparg = 1; break;
case 'T': opt.cltarget = optarg; break;
case 'c': opt.isconfig = 1; break;
- case 'f': dbfile = optarg; break;
case 'g': opt.clgroup = optarg; break;
case 'h': opt.followsymlinks = 1; break;
case 'l': opt.opt_l = 1; break;
case 'v': opt.verbose++; break;
case 'x': opt.xargs = 1; dieval = 255; break;
case 'z': opt.noclear = 1; break;
+ case 'p': pkgstr = optarg; break;
default:
exit(EXIT_FAILURE);
break;
exit(EXIT_FAILURE);
}
- if (!zpm_open(&zpm, dbfile)) {
- die("can't open zpm db %s", dbfile);
+ if (opt.init) {
+ if (!zpm_init(&zpm, dbfile)) {
+ die("can't open zpm db %s", dbfile);
+ }
+ if (opt.verbose) {
+ fprintf(stderr, "inited %s\n", dbfile);
+ }
+ } else {
+ if (!zpm_open(&zpm, dbfile)) {
+ die("can't open zpm db %s", dbfile);
+ }
}
+
#if 0
i = sqlite3_config(SQLITE_CONFIG_MMAP_SIZE,98222080);
if (i != SQLITE_OK) {
}
#endif
- /* package is first arg */
- char *pkgstr;
- char *pkgid;
- pkgstr = av[optind++];
+ if (!pkgstr) {
+ pkgstr = dbfile;
+ }
pkgid = zpm_findpkg(&zpm, pkgstr, NULL);
if (!pkgid) {
- die("package %s not found\n", pkgstr);
+ int rv;
+ if (opt.init) {
+ rv = zpm_parse_package(pkgstr, package, version, &release);
+ if (rv != 3) {
+ die("incomplete package string '%s'\n", pkgstr);
+ } else {
+ rv = zpm_create_package(&zpm, package, version, release);
+ pkgid = zpm_findpkg(&zpm, pkgstr, NULL);
+ if (!rv) {
+ die("unable to create package %s\n", pkgstr);
+ }
+ }
+ } else {
+ die("package %s not found\n", pkgstr);
+ }
}
- char package[128];
- char version[64];
- int release;
-
zpm_parse_package(pkgid, package, version, &release);
opt.package = package;
opt.version = version;