X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=lib%2Fzpm.c;h=3abbc37d5d07f87ebbe5836dcfd1c2c700d6e634;hb=9dcf3393d1ee93a26ceeccc8a62ffde8e736a51f;hp=5bcf9da4e56a10544a439205c1affd34e87cb1b9;hpb=9e2f2f4108fdfb7abfea7772ae35270b915c2630;p=zpackage diff --git a/lib/zpm.c b/lib/zpm.c index 5bcf9da..3abbc37 100644 --- a/lib/zpm.c +++ b/lib/zpm.c @@ -293,10 +293,7 @@ int zpm_open(struct zpm *pkg, char *path) { pkg->db = 0; pkg->path = 0; - pkg->version = 0; - pkg->release = 0; - pkg->pkgname = 0; - pkg->installed = 0; + pkg->current_package = 0; rc = sqlite3_open_v2(path, &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); if (rc) { @@ -371,24 +368,29 @@ int zpm_addvercmp(struct zpm *pkg) { } /* set package struct variables, database, environment, then command line */ -int zpm_readopts(struct zpm *pkg, int ac, char **av) { +int zpm_readopts(struct zpm *zpm, int ac, char **av) { char *ev; + struct zpm_package *pkg; - if (!pkg) { + if (!zpm) { return -1; } - ev = getenv("ZPMPACKAGE"); - if (ev) { - pkg->pkgname = dupstr(ev); - } - ev = getenv("ZPMPKGREL"); - if (ev) { - pkg->release = strtol(ev, 0, 0); - } - ev = getenv("ZPMPKGVER"); - if (ev) { - pkg->version = dupstr(ev); + pkg = zpm->current_package; + + if (pkg) { + ev = getenv("ZPMPACKAGE"); + if (ev) { + pkg->name = dupstr(ev); + } + ev = getenv("ZPMPKGREL"); + if (ev) { + pkg->release = strtol(ev, 0, 0); + } + ev = getenv("ZPMPKGVER"); + if (ev) { + pkg->version = dupstr(ev); + } } /* now, parse the options, return optind so the caller can adjust if needed */ @@ -632,7 +634,7 @@ static int set_elf_info(sqlite3 *db, char *hash, char *content, size_t length) { } #if 1 -int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { +int zpm_import(struct zpm *zpm, char *path, uint32_t flags, char *hash) { int fd; void *content; struct stat sbuf; @@ -647,7 +649,7 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { size_t outlen = 0; void *outbuf; - if (!pkg || !pkg->db || !path) { + if (!zpm || !zpm->db || !path) { return 0; } @@ -662,12 +664,12 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { /* mmap the file */ fd = open(path, O_RDONLY); if (fd == -1) { - pkg->error = errno; + zpm->error = errno; fprintf(stderr, "%s can't open %s: %s\n", __FUNCTION__, path,strerror(errno)); return 0; } if (fstat(fd, &sbuf) == -1) { - pkg->error = errno; + zpm->error = errno; fprintf(stderr, "%s can't fstat %s: %s\n", __FUNCTION__, path,strerror(errno)); return 0; } @@ -685,14 +687,14 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { } /* TODO this is ok, just stored differently */ fprintf(stderr, "%s can't import %s file: %s\n", __FUNCTION__, ftype, path); - pkg->error = EINVAL; + zpm->error = EINVAL; return 0; } content = mmap(0, sbuf.st_size, PROT_READ,MAP_PRIVATE, fd, 0); close(fd); if (!content) { - pkg->error = errno; + zpm->error = errno; fprintf(stderr, "%s can't mmap %s: %s\n", __FUNCTION__, path,strerror(errno)); return 0; } @@ -708,7 +710,7 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { //fprintf(stderr, "file %s: %s\n", path, hash); /* TODO check null */ - sqlite3 *db = pkg->db; + sqlite3 *db = zpm->db; /* prepare and bind */ @@ -729,7 +731,7 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { if (rc != SQLITE_ROW) { /* didn't find a row */ SQLERROR(sqlite3_errmsg(db)); - zpm_rollback(pkg); + zpm_rollback(zpm); munmap(content, sbuf.st_size); return 0; } @@ -769,7 +771,7 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { /* start a transaction */ // do that outside of here - //zpm_begin(pkg); + //zpm_begin(zpm); /* insert */ if (haverow) { @@ -782,7 +784,7 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { if (rc != SQLITE_OK) { SQLERROR(sqlite3_errmsg(db)); fprintf(stderr, "cant prepare data\n"); - zpm_rollback(pkg); + zpm_rollback(zpm); munmap(content, sbuf.st_size); return 0; } @@ -791,7 +793,7 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { if (rc != SQLITE_OK) { SQLERROR(sqlite3_errmsg(db)); fprintf(stderr, "cant bind size\n"); - zpm_rollback(pkg); + zpm_rollback(zpm); munmap(content, sbuf.st_size); return 0; } @@ -799,7 +801,7 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { if (rc != SQLITE_OK) { SQLERROR(sqlite3_errmsg(db)); fprintf(stderr, "cant bind content\n"); - zpm_rollback(pkg); + zpm_rollback(zpm); munmap(content, sbuf.st_size); return 0; } @@ -807,7 +809,7 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { if (rc != SQLITE_OK) { SQLERROR(sqlite3_errmsg(db)); fprintf(stderr, "cant bind hash\n"); - zpm_rollback(pkg); + zpm_rollback(zpm); munmap(content, sbuf.st_size); return 0; } @@ -815,20 +817,20 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { if (rc != SQLITE_DONE) { SQLERROR(sqlite3_errmsg(db)); sqlite3_finalize(ifile); - zpm_rollback(pkg); + zpm_rollback(zpm); munmap(content, sbuf.st_size); return 0; } sqlite3_finalize(ifile); /* commit */ - //zpm_commit(pkg); + //zpm_commit(zpm); /* don't need the original file now */ } - if (!set_elf_info(pkg->db, hash, content, sbuf.st_size)) { + if (!set_elf_info(zpm->db, hash, content, sbuf.st_size)) { fprintf(stderr, "setting elf info failed\n"); munmap(content, sbuf.st_size); return 0; @@ -837,7 +839,7 @@ int zpm_import(struct zpm *pkg, char *path, uint32_t flags, char *hash) { munmap(content, sbuf.st_size); /* if package and not nopackage flag, add to package */ - if (pkg->pkgname && (!ZPM_NOPACKAGE)) { + if (zpm->current_package->name && (!ZPM_NOPACKAGE)) { /* TODO */ }