]> pd.if.org Git - zpackage/blobdiff - lib/zpm.c
add structs for packages and other objects
[zpackage] / lib / zpm.c
index 5bcf9da4e56a10544a439205c1affd34e87cb1b9..3abbc37d5d07f87ebbe5836dcfd1c2c700d6e634 100644 (file)
--- 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 */
        }