pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/pkgtools/pkg_install/files Start abstracting pkgdb acc...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/e5d1e83f0a16
branches:  trunk
changeset: 532254:e5d1e83f0a16
user:      joerg <joerg%pkgsrc.org@localhost>
date:      Wed Aug 15 02:08:40 2007 +0000

description:
Start abstracting pkgdb access by introducing pkgdb_pkg_file.
The function returns the path name of the given file for the package.
The memory needs to be freed by the caller.

diffstat:

 pkgtools/pkg_install/files/admin/main.c    |  30 +++++++++---------------------
 pkgtools/pkg_install/files/info/show.c     |  19 +++++++++----------
 pkgtools/pkg_install/files/lib/automatic.c |  24 +++++++++++++-----------
 pkgtools/pkg_install/files/lib/lib.h       |   4 +++-
 pkgtools/pkg_install/files/lib/pkgdb.c     |  15 +++++++++++++--
 5 files changed, 47 insertions(+), 45 deletions(-)

diffs (246 lines):

diff -r 65aec473d0de -r e5d1e83f0a16 pkgtools/pkg_install/files/admin/main.c
--- a/pkgtools/pkg_install/files/admin/main.c   Wed Aug 15 02:08:00 2007 +0000
+++ b/pkgtools/pkg_install/files/admin/main.c   Wed Aug 15 02:08:40 2007 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: main.c,v 1.30 2007/08/15 01:49:02 joerg Exp $  */
+/*     $NetBSD: main.c,v 1.31 2007/08/15 02:08:40 joerg Exp $  */
 
 #if HAVE_CONFIG_H
 #include "config.h"
@@ -8,7 +8,7 @@
 #include <sys/cdefs.h>
 #endif
 #ifndef lint
-__RCSID("$NetBSD: main.c,v 1.30 2007/08/15 01:49:02 joerg Exp $");
+__RCSID("$NetBSD: main.c,v 1.31 2007/08/15 02:08:40 joerg Exp $");
 #endif
 
 /*
@@ -229,7 +229,7 @@
        FILE           *f;
        plist_t        *p;
        package_t       Plist;
-       char            contents[MaxPathSize];
+       char           *contents;
        const char      *PkgDBDir;
        char *PkgName, *dirp;
        char            file[MaxPathSize];
@@ -240,14 +240,10 @@
                err(EXIT_FAILURE, "cannot open pkgdb");
 
        PkgDBDir = _pkgdb_getPKGDB_DIR();
-       (void) snprintf(contents, sizeof(contents), "%s/%s", PkgDBDir, pkgdir);
-       if (!(isdir(contents) || islinktodir(contents)))
-               errx(EXIT_FAILURE, "`%s' does not exist.", contents);
-
-       (void) strlcat(contents, "/", sizeof(contents));
-       (void) strlcat(contents, CONTENTS_FNAME, sizeof(contents));
+       contents = pkgdb_pkg_file(pkgdir, CONTENTS_FNAME);
        if ((f = fopen(contents, "r")) == NULL)
                errx(EXIT_FAILURE, "%s: can't open `%s'", pkgdir, CONTENTS_FNAME);
+       free(contents);
 
        Plist.head = Plist.tail = NULL;
        read_plist(&Plist, f);
@@ -456,9 +452,7 @@
 {
        char *path;
 
-       if (asprintf(&path, "%s/%s/%s", _pkgdb_getPKGDB_DIR(), pkgname,
-                    REQUIRED_BY_FNAME) == -1)
-               errx(EXIT_FAILURE, "asprintf failed");
+       path = pkgdb_pkg_file(pkgname, REQUIRED_BY_FNAME);
 
        if (unlink(path) == -1 && errno != ENOENT)
                err(EXIT_FAILURE, "Cannot remove %s", path);
@@ -481,9 +475,7 @@
                return;
        }
 
-       if (asprintf(&path, "%s/%s/%s", _pkgdb_getPKGDB_DIR(), best_installed,
-                    REQUIRED_BY_FNAME) == -1)
-               errx(EXIT_FAILURE, "asprintf failed");
+       path = pkgdb_pkg_file(best_installed, REQUIRED_BY_FNAME);
        free(best_installed);
 
        if ((fd = open(path, O_WRONLY | O_APPEND | O_CREAT, 0644)) == -1)
@@ -506,9 +498,7 @@
        package_t plist;
        char *path;
 
-       if (asprintf(&path, "%s/%s/%s", _pkgdb_getPKGDB_DIR(), pkgname,
-                    CONTENTS_FNAME) == -1)
-               errx(EXIT_FAILURE, "asprintf failed");
+       path = pkgdb_pkg_file(pkgname, CONTENTS_FNAME);
        if ((fp = fopen(path, "r")) == NULL)
                errx(EXIT_FAILURE, "Cannot read %s of package %s",
                    CONTENTS_FNAME, pkgname);
@@ -848,9 +838,7 @@
        char *filename;
        int retval;
 
-       if (asprintf(&filename, "%s/%s/%s", _pkgdb_getPKGDB_DIR(), name,
-                    INSTALLED_INFO_FNAME) == -1)
-               errx(EXIT_FAILURE, "asprintf failed");
+       filename = pkgdb_pkg_file(name, INSTALLED_INFO_FNAME);
 
        retval = var_set(filename, arg->variable, arg->value);
 
diff -r 65aec473d0de -r e5d1e83f0a16 pkgtools/pkg_install/files/info/show.c
--- a/pkgtools/pkg_install/files/info/show.c    Wed Aug 15 02:08:00 2007 +0000
+++ b/pkgtools/pkg_install/files/info/show.c    Wed Aug 15 02:08:40 2007 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: show.c,v 1.16 2007/08/09 23:54:17 joerg Exp $  */
+/*     $NetBSD: show.c,v 1.17 2007/08/15 02:08:40 joerg Exp $  */
 
 #if HAVE_CONFIG_H
 #include "config.h"
@@ -11,7 +11,7 @@
 #if 0
 static const char *rcsid = "from FreeBSD Id: show.c,v 1.11 1997/10/08 07:47:38 charnier Exp";
 #else
-__RCSID("$NetBSD: show.c,v 1.16 2007/08/09 23:54:17 joerg Exp $");
+__RCSID("$NetBSD: show.c,v 1.17 2007/08/15 02:08:40 joerg Exp $");
 #endif
 #endif
 
@@ -139,16 +139,15 @@
 void
 show_var(const char *pkg, const char *fname, const char *variable)
 {
-       char   *value;
-       char    filename[BUFSIZ];
+       char   *filename, *value;
+
+       filename = pkgdb_pkg_file(pkg, fname);
 
-       (void)snprintf(filename, sizeof(filename), "%s/%s/%s",
-           _pkgdb_getPKGDB_DIR(), pkg, fname);
-
-       if ((value=var_get(fname, variable)) != NULL) {
-           (void) printf("%s\n", value);
-           free(value);
+       if ((value = var_get(filename, variable)) != NULL) {
+               (void) printf("%s\n", value);
+               free(value);
        }
+       free(filename);
 }
 
 void
diff -r 65aec473d0de -r e5d1e83f0a16 pkgtools/pkg_install/files/lib/automatic.c
--- a/pkgtools/pkg_install/files/lib/automatic.c        Wed Aug 15 02:08:00 2007 +0000
+++ b/pkgtools/pkg_install/files/lib/automatic.c        Wed Aug 15 02:08:40 2007 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: automatic.c,v 1.3 2007/08/09 23:18:31 joerg Exp $      */
+/*     $NetBSD: automatic.c,v 1.4 2007/08/15 02:08:40 joerg Exp $      */
 
 /*-
  * Copyright (c) 2005 The NetBSD Foundation, Inc.
@@ -40,7 +40,7 @@
 #include <sys/cdefs.h>
 #endif
 #ifndef lint
-__RCSID("$NetBSD: automatic.c,v 1.3 2007/08/09 23:18:31 joerg Exp $");
+__RCSID("$NetBSD: automatic.c,v 1.4 2007/08/15 02:08:40 joerg Exp $");
 #endif
 
 #if HAVE_ASSERT_H
@@ -69,14 +69,12 @@
 Boolean
 is_automatic_installed(const char *pkg)
 {
-       char    filename[BUFSIZ];
-       char   *value;
+       char *filename, *value;
        Boolean ret;
 
        assert(pkg[0] != '/');
 
-       (void)snprintf(filename, sizeof(filename), "%s/%s/%s",
-           _pkgdb_getPKGDB_DIR(), pkg, INSTALLED_INFO_FNAME);
+       filename = pkgdb_pkg_file(pkg, INSTALLED_INFO_FNAME);
 
        value = var_get(filename, AUTOMATIC_VARNAME);
 
@@ -86,6 +84,7 @@
            ret = FALSE;
        
        free(value);
+       free(filename);
 
        return ret;
 }
@@ -93,13 +92,16 @@
 int
 mark_as_automatic_installed(const char *pkg, int value)
 {
-       char filename[BUFSIZ];
+       char *filename;
+       int retval;
 
        assert(pkg[0] != '/');
 
-       (void)snprintf(filename, sizeof(filename), "%s/%s/%s",
-           _pkgdb_getPKGDB_DIR(), pkg, INSTALLED_INFO_FNAME);
+       filename = pkgdb_pkg_file(pkg, INSTALLED_INFO_FNAME);
+
+       retval = var_set(filename, AUTOMATIC_VARNAME, value ? "yes" : NULL);
 
-       return var_set(filename, AUTOMATIC_VARNAME,
-                      value ? "yes" : NULL);
+       free(filename);
+
+       return retval;
 }
diff -r 65aec473d0de -r e5d1e83f0a16 pkgtools/pkg_install/files/lib/lib.h
--- a/pkgtools/pkg_install/files/lib/lib.h      Wed Aug 15 02:08:00 2007 +0000
+++ b/pkgtools/pkg_install/files/lib/lib.h      Wed Aug 15 02:08:40 2007 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lib.h,v 1.35 2007/08/15 01:49:02 joerg Exp $ */
+/* $NetBSD: lib.h,v 1.36 2007/08/15 02:08:40 joerg Exp $ */
 
 /* from FreeBSD Id: lib.h,v 1.25 1997/10/08 07:48:03 charnier Exp */
 
@@ -403,6 +403,8 @@
 const char *_pkgdb_getPKGDB_DIR(void);
 void   _pkgdb_setPKGDB_DIR(const char *);
 
+char   *pkgdb_pkg_file(const char *, const char *);
+
 /* List of packages functions */
 lpkg_t *alloc_lpkg(const char *);
 lpkg_t *find_on_queue(lpkg_head_t *, const char *);
diff -r 65aec473d0de -r e5d1e83f0a16 pkgtools/pkg_install/files/lib/pkgdb.c
--- a/pkgtools/pkg_install/files/lib/pkgdb.c    Wed Aug 15 02:08:00 2007 +0000
+++ b/pkgtools/pkg_install/files/lib/pkgdb.c    Wed Aug 15 02:08:40 2007 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pkgdb.c,v 1.27 2007/08/15 01:49:02 joerg Exp $ */
+/*     $NetBSD: pkgdb.c,v 1.28 2007/08/15 02:08:41 joerg Exp $ */
 
 #if HAVE_CONFIG_H
 #include "config.h"
@@ -8,7 +8,7 @@
 #include <sys/cdefs.h>
 #endif
 #ifndef lint
-__RCSID("$NetBSD: pkgdb.c,v 1.27 2007/08/15 01:49:02 joerg Exp $");
+__RCSID("$NetBSD: pkgdb.c,v 1.28 2007/08/15 02:08:41 joerg Exp $");
 #endif
 
 /*
@@ -338,3 +338,14 @@
        (void) snprintf(pkgdb_cache, sizeof(pkgdb_cache), "%s", dir);
        pkgdb_dir = pkgdb_cache;
 }
+
+char *
+pkgdb_pkg_file(const char *pkg, const char *file)
+{
+       char *buf;
+
+       if (asprintf(&buf, "%s/%s/%s", _pkgdb_getPKGDB_DIR(), pkg, file) == -1)
+               err(EXIT_FAILURE, "asprintf failed");
+
+       return buf;
+}



Home | Main Index | Thread Index | Old Index