PERFORCE change 182294 for review

David Forsythe dforsyth at FreeBSD.org
Thu Aug 12 02:26:11 UTC 2010


http://p4web.freebsd.org/@@182294?ac=10

Change 182294 by dforsyth at skunk on 2010/08/12 02:25:45

	   Sync with main repository

Affected files ...

.. //depot/projects/soc2010/dforsyth_libpkg/doc/man/pkg_property.3#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/Makefile#2 edit
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/base.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/database.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/database.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/database_internal.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/exec.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/exec.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/exec_internal.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_database_directorydb.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_database_directorydb.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_plist.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_plist.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_repository_ftp.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_repository_ftp.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_repository_path.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_repository_path.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/internal.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/logger.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/logger.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg.c#2 edit
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg.h#2 edit
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_database.c#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_database.o#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_database.po#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_depend.c#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_file.c#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_freebsd.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_freebsd.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_freebsd_directorydb.c#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_freebsd_directorydb.h#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_freebsd_ftp.c#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_freebsd_ftp.h#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_freebsd_plist.c#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_freebsd_plist.h#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_install.c#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_install.h#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_internal.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_pkg.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_repository_local.c#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_repository_local.h#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_util.c#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_util.h#2 delete
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/property.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/property.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/repository.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/repository.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/repository_internal.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/util.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/util.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/lib/pkg_install.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_delete/Makefile#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_delete/pkg_delete.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_dump/Makefile#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_dump/pkg_dump.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_dump/pkg_dump.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_validate/Makefile#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_validate/validate.c#1 add

Differences ...

==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/Makefile#2 (text+ko) ====

@@ -11,14 +11,22 @@
 
 
 SRCS=	pkg.c \
-	pkg_util.c \
-  pkg_freebsd_plist.c \
-	pkg_freebsd_directorydb.c \
-  pkg_freebsd_ftp.c
+        property.c \
+        database.c \
+        repository.c \
+        pkg_freebsd.c \
+        freebsd_plist.c \
+        freebsd_database_directorydb.c \
+        freebsd_repository_ftp.c \
+        util.c \
+        exec.c 
 
 
 CFLAGS+=  -std=c99
-DEBUG_FLAGS=  -g
+DEBUG_FLAGS+=  -g
+.if defined(PROFILE_BUILD)
+DEBUG_FLAGS+=    -pg
+.endif
 NO_MAN=	  yes
 
 .include <bsd.lib.mk>

==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg.c#2 (text+ko) ====

@@ -8,231 +8,191 @@
 #include <string.h>
 #include <err.h>
 
-#include "pkg_util.h"
+#include "internal.h"
 #include "pkg.h"
 
-/* FreeBSD callbacks. */
-#include "pkg_freebsd_plist.h"
-#include "pkg_freebsd_directorydb.h"
-#include "pkg_freebsd_ftp.h"
+#define MAGIC                           0x09999999
 
-#define INITIALALLOC_conflict           16
-#define INITIALALLOC_depend             16
-/* 
- * Huge for performance.
- */
-#define INITIALALLOC_file               4096
-#define INITIALALLOC_exec               64
-#define INITIALALLOC_unexec             64
-#define INITIALALLOC_required_by        16
-#define INITIALALLOC_blob               16
+/* Create and initialize a pkg for use with libpkg. */
+struct pkg *
+pkg_create(void)
+{
+        struct pkg *p;
 
-#define MAGIC                           0x09999999
+        p = calloc(1, sizeof(*p));
+        if (p == NULL) {
+                return (NULL);
+        }
+        
+        /* Set magic. */
+        p->magic = MAGIC;
+        /* No property list. */
+        p->plist = NULL;
+        p->vt = NULL;
+        p->mt = NULL;
+        TAILQ_INIT(&p->scripts);
+        strcpy(p->key, "");
+        
+        return (p);
+}
 
 /*
- * Initialize a pkg for use with libpkg.  Needs to be called before any safe
- * interaction with a pkgdb can take place.
+ * Check the magic number in a package.  Frontends should use this to check for
+ * package validity before modifying properties.  The package database functions
+ * will always use this to check the validity of a package before adding it to
+ * disk or copying information into it.
  */
 void
-pkg_init(struct pkg *p, enum pkgtype t)
+_pkg_check_magic(struct pkg *p, const char *func)
 {
-        p->__magic      = MAGIC;
-        
-        p->depend       = NULL;
-        p->depend_count = 0;
-        p->__depend_alloc       = 0;
-        
-        p->blob         = NULL;
-        p->blob_count   = 0;
-        p->__blob_alloc = 0;
-        
-        p->required_by  = NULL;
-        p->required_by_count    = 0;
-        p->__required_by_alloc  = 0;
-
-        p->file         = NULL;
-        p->file_count   = 0;
-        p->__file_alloc = 0;
-        
-        p->conflict     = NULL;
-        p->conflict_count       = 0;
-        p->__conflict_alloc     = 0;
-        
-        p->exec         = NULL;
-        p->exec_count   = 0;
-        p->__exec_alloc = 0;
-        
-        p->unexec       = NULL;
-        p->unexec_count = 0;
-        p->__unexec_alloc       = 0;
-        
-        /* Set up parser callbacks. */
-        switch (t) {
-        case (FREEBSD_PLIST):
-                p->parse_FILE   = __freebsd_plist_parse_FILE;
-                p->parse_fd     = __freebsd_plist_parse_fd;
-                p->parse        = __freebsd_plist_parse;
-                p->write_FILE   = __freebsd_plist_write_FILE;
-                p->write_fd     = __freebsd_plist_write_fd;
-                p->write        = __freebsd_plist_write;
-                p->meta         = __freebsd_plist_meta;
-        default:
-                break;
+        if (p->magic != MAGIC) {
+                PKG_CLIENT_CRASH(func, "magic number mismatch.");
         }
 }
 
-/* Dealloc macros for pkg_clear. */
-#define OBJDEALLOC(pkg, pname)   \
-        if (pkg->__##pname##_alloc > 0) { \
-                free(pkg->pname); \
-                pkg->pname = NULL; \
-                pkg->__##pname##_alloc = 0; \
-                pkg->pname##_count = 0; \
+/* Clear all fields in a package except for its vtables. */
+void
+pkg_clear(struct pkg *p)
+{
+        struct _script *s;
+
+        if (p->plist != NULL) {
+                pkg_property_release(p->plist);
+                p->plist = NULL;
         }
-
-#define STRDEALLOC(pkg, pname, c) \
-        if (pkg->__##pname##_alloc > 0) { \
-                for (c = 0; c < pkg->pname##_count; ++c) {\
-                        free(pkg->pname[c]); \
-                } \
-                free(pkg->pname); \
-                pkg->pname = NULL; \
-                pkg->__##pname##_alloc = 0; \
-                pkg->pname##_count = 0; \
+        while (!TAILQ_EMPTY(&p->scripts)) {
+                s = TAILQ_FIRST(&p->scripts);
+                TAILQ_REMOVE(&p->scripts, s, next);
+                free(s->pathname);
+                free(s);
         }
+        TAILQ_INIT(&p->scripts);
+}
 
-/*
- * Returns a pkg to it's "just-init'd" state.  Only works on pkgs that have been
- * initalized.
- */
 void
-pkg_clear(struct pkg *p)
+pkg_release(struct pkg *p)
 {
-        int i;
+        pkg_clear(p);
+        free(p);
+}
 
-        if (p->__magic != MAGIC) {
-                /* Crash the client. */
-                errx(1, "Pkg not initialized.\n");
+/* Retrieve the Plist from a package.  If there is no Plist, it is created. */
+struct pkg_property *
+pkg_get_property_list(struct pkg *p)
+{
+        /* "plist" could just be "" */
+        if (p->plist == NULL) {
+                p->plist = pkg_property_plist_create("plist");
         }
+        return (p->plist);
+}
 
-        OBJDEALLOC(p, depend);
-        OBJDEALLOC(p, file);
+/* 
+ * Get and set the name of the key that this package uses when registering in a
+ * package database.  The key must be in the root dictionary of the package
+ * property list.  Making it something other than a PLSTRING is probably pretty
+ * stupid, because most databases probably won't have logic to interpret other
+ * types of property nodes.
+ */
+const char *
+pkg_get_key(struct pkg *p)
+{
+        return (p->key);
+}
 
-        /* Blobs have an allocated field. */
-        if (p->__blob_alloc > 0) {
-                for (i = 0; i < p->blob_count; ++i) {
-                        free(p->blob[i].blob);
-                }
-                free(p->blob);
-                p->blob = NULL;
-                p->__blob_alloc = 0;
-                p->blob_count = 0;
+void
+pkg_set_key(struct pkg *p, const char *key)
+{
+        if (key == NULL) {
+                PKG_CLIENT_CRASH(__func__, "Invalid input.  key is NULL");
         }
+        strcpy(p->key, key);
+}
 
-        STRDEALLOC(p, conflict, i);
-        STRDEALLOC(p, required_by, i);
-        STRDEALLOC(p, exec, i);
-        STRDEALLOC(p, unexec, i);
+void
+pkg_set_parser_writer_vtable(struct pkg *p, struct parser_writer_vtable *vt) 
+{
+        p->vt = vt;
 }
 
+void
+pkg_set_meta_entry_table(struct pkg *p, struct meta_entry *mt)
+{
+        p->mt = mt;
+}
 
-/*
- * Make space for a new element if there isn't any.  Return a reference to the
- * element on success, return NULL on failure.
- */
+struct meta_entry *
+pkg_get_meta_entry_table(struct pkg *p)
+{
+        return (p->mt);
+}
 
-/* Object name, name in pkg, allocation field name. */
-#define DEFINEOBJADD_FN(objname, pname) \
-struct objname * \
-pkg_##pname##_add(struct pkg *p) \
-{ \
-        int newalloc; \
-        struct objname *tmp; \
-        if (p->pname##_count >= p->__##pname##_alloc) { \
-                newalloc = p->__##pname##_alloc * 2; \
-                if (newalloc <= 0) { \
-                        newalloc = INITIALALLOC_##pname; \
-                } \
-                tmp = p->pname; \
-                p->pname = realloc(tmp, sizeof(*tmp) * newalloc); \
-                if (p->pname == NULL) { \
-                        p->pname = tmp; \
-                        return (NULL); \
-                } \
-                p->__##pname##_alloc = newalloc; \
-        } \
-        p->pname##_count++; \
-        return (p->pname + p->pname##_count - 1); \
+int
+pkg_parse_FILE(struct pkg *p, FILE *fp, const char *metaname)
+{
+        if (p->vt == NULL) {
+                PKG_CLIENT_CRASH(__func__, "Callback unsupported.");
+        }
+        return (p->vt->parse_FILE(p, fp, metaname));
 }
 
-DEFINEOBJADD_FN(pkg_depend, depend);
-DEFINEOBJADD_FN(pkg_file, file);
-DEFINEOBJADD_FN(pkg_blob, blob);
+int
+pkg_parse_fd(struct pkg *p, int fd, size_t size, const char *metaname)
+{
+        if (p->vt == NULL) {
+                PKG_CLIENT_CRASH(__func__, "Callback unsupported.");
+        }
+        return (p->vt->parse_fd(p, fd, size, metaname));
+}
 
-/* 
- * Allocate space in the array if we need some.  Returns the index that the
- * string was placed at.
- */
+int
+pkg_parse(struct pkg *p, char *data, const char *metaname)
+{
+        if (p->vt == NULL) {
+                PKG_CLIENT_CRASH(__func__, "Callback unsupported.");
+        }
+        return (p->vt->parse(p, data, metaname));
+}
 
-#define DEFINESTRADD_FN(pname) \
-int \
-pkg_##pname##_add(struct pkg *p, const char *str) \
-{ \
-        int newalloc; \
-        char **tmp; \
-        if (p->pname##_count >= p->__##pname##_alloc) { \
-                newalloc = p->__##pname##_alloc * 2; \
-                if (newalloc <= 0) { \
-                        newalloc = INITIALALLOC_##pname; \
-                } \
-                tmp = p->pname; \
-                p->pname = realloc(tmp, sizeof(*tmp) * newalloc); \
-                if (p->pname == NULL) { \
-                        p->pname = tmp; \
-                        return (-1); \
-                } \
-                p->__##pname##_alloc = newalloc; \
-        } \
-        p->pname[p->pname##_count] = strdup(str); \
-        if (p->pname[p->pname##_count] == NULL) { \
-                return (-1); \
-        } \
-        p->pname##_count++; \
-        return (p->pname##_count - 1); \
+int
+pkg_write_FILE(struct pkg *p, FILE *fp, const char *metaname)
+{
+        return (p->vt->write_FILE(p, fp, metaname));
 }
 
-DEFINESTRADD_FN(conflict);
-DEFINESTRADD_FN(required_by);
-DEFINESTRADD_FN(exec);
-DEFINESTRADD_FN(unexec);
+int
+pkg_register_script(struct pkg *p, const char *name, const char *pathname)
+{
+        struct _script *script;
+        
+
+        TAILQ_FOREACH(script, &p->scripts, next) {
+                if (STRMATCH(script->name, name)) {
+                        TAILQ_REMOVE(&p->scripts, script, next);
+                        free(script->pathname);
+                        free(script);
+                        break;
+                }
+        }
 
-void
-pkg_database_init(struct pkg_database *db, enum pkgdbtype type)
-{
-        switch (type) {
-        case (FREEBSD_DIRDB):
-                db->open        = __freebsd_directorydb_open;
-                db->close       = __freebsd_directorydb_close;
-                db->match       = __freebsd_directorydb_match;
-                db->add         = __freebsd_directorydb_add;
-                db->delete      = __freebsd_directorydb_delete;
-                break;
-        default:
-                break;
+        script = calloc(1, sizeof(*script));
+        if (script == NULL) {
+                return (PKG_NOT_OK);
         }
+        script->name = name;
+        script->pathname = strdup(pathname);
+        TAILQ_INSERT_TAIL(&p->scripts, script, next);
+        return (PKG_OK);
 }
 
-/* Repository initalizer. */
-void
-pkg_repository_init(struct pkg_repository *repo, enum pkgrepotype type)
+const char *
+pkg_get_script_pathname(struct pkg *p, const char *name)
 {
-        switch (type) {
-        case (FREEBSD_FTP):
-                repo->open      = __freebsd_ftp_open;
-                repo->close     = __freebsd_ftp_close;
-                repo->fetch     = __freebsd_ftp_fetch;
-                break;
-        default:
-                break;
+        struct _script *script;
+        TAILQ_FOREACH(script, &p->scripts, next) {
+                if (strcmp(script->name, name) == 0) {
+                        return (script->pathname);
+                }
         }
+        return (NULL);
 }

==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg.h#2 (text+ko) ====

@@ -3,233 +3,25 @@
  * See LICENSE file for license details.
  */
 
-#ifndef __PKG_H__
-#define __PKG_H__
+#ifndef __LIBPKG_PKG_H__
+#define __LIBPKG_PKG_H__
 
-#include <archive.h> /* For archive_entry. */
-#include <limits.h>
-#include <stdio.h> /* For FILE. */
-#include <sys/types.h>
-
 /* Versioning is "YYYYMMDD" */
 #define LIBPKG_VERSION          00000000
 
+/* TODO: Move most of this needs to be moved into constants.h and database.h */
+
 /* General Errors. */
-#define PKG_OK				0
-#define PKG_NOT_OK			(-1)
-#define PKG_FATAL                       (-2)
+#define PKG_OK			0
+/* Maybe try again. */
+#define PKG_NOT_OK		(-1)
+/* You messed up, don't try again. */
+#define PKG_FATAL               (-2)
 
-/* Lower 16 bits for skip codes, upper 16 for database op flags. */
+#include "base.h"
+#include "database.h"
+#include "property.h"
+#include "repository.h"
+#include "exec.h"
 
-/* Skip codes. */
-#define P_SKIPCOMMENT           0x00000001
-#define P_SKIPDESC              0x00000002
-#define P_SKIPDISPLAY           0x00000004
-#define P_SKIPMANIFEST          0x00000008
-#define P_SKIPMTREEDIRS         0x00000010
-#define P_SKIPREQUIREDBY        0x00000020
-
-/* Reset database cursor. */
-#define P_FIRST                 0x10000000
-/* No locks. */
-#define P_NOLOCK                0x20000000
-/* Only lock on add/delete. */
-#define P_LOCKONACT             0x40000000
-/* Create the database if it does not exist. */
-#define P_CREATE                0x80000000
-/* For non-skipped blobs, print to stdout and do not store. */
-#define P_SPIT                  0x01000000
-/* Do not overwrite. */
-#define P_NOOVERWRITE           0x02000000
-
-/* typedef? */
-enum pkgtype{
-        FREEBSD_PLIST
-};
-
-enum pkgdbtype{
-        FREEBSD_DIRDB,
-        FREEBSD_BERK
-};
-
-enum pkgrepotype {
-        FREEBSD_LOCAL,
-        FREEBSD_FTP
-};
-
-enum pkgmatch{
-        PKGMATCH_ALL,
-        PKGMATCH_EXACT,
-        PKGMATCH_GLOB,
-        PKGMATCH_NGLOB,
-        PKGMATCH_REGEX,
-        PKGMATCH_EREGEX
-};
-
-struct pkg {
-        int      __magic; /* Init. */
-        int      __type;
-        int      __log_fd;
-
-        char     name[PATH_MAX];
-        char     origin[PATH_MAX];
-        char     install_date[15];
-        
-        int      fmtrev_major;
-        int      fmtrev_minor;
-        
-        char     srcdir[PATH_MAX];
-        char     mtree[PATH_MAX];
-
-        int      extract_in_place;
-        int      preserve;
-
-        int      conflict_count;
-        char   **conflict;
-        int      __conflict_alloc;
-
-        int      depend_count;
-        struct pkg_depend *depend;
-        int      __depend_alloc;
-
-        int      file_count;
-        struct pkg_file *file;
-        int      __file_alloc;
-
-        int      exec_count;
-        char   **exec;
-        int      __exec_alloc;
-
-        int      unexec_count;
-        char   **unexec;
-        int      __unexec_alloc;
-
-        int      blob_count;
-        struct pkg_blob *blob;
-        int      __blob_alloc;
-
-        int      required_by_count;
-        char   **required_by;
-        int      __required_by_alloc;
-        
-        int (*parse_FILE) (struct pkg *, FILE *, const char *);
-        int (*parse_fd) (struct pkg *, int fd, size_t len, const char *);
-        int (*parse) (struct pkg *, char *, const char *);
-        int (*write_FILE) (struct pkg *, FILE *, const char *);
-        int (*write_fd) (struct pkg *, int, const char *);
-        int (*write) (struct pkg *, char **, const char *);
-        int (*meta) (const char *);
-};
-
-struct pkg_depend {
-        char     name[PATH_MAX];
-        char     origin[PATH_MAX];
-        char     version[32];
-};
-
-struct pkg_file {
-        /* XXX: Find constants for these. */
-        char     group[17];
-        char     hash[33];
-        mode_t   mode;
-        char     owner[17];
-        char     name[PATH_MAX]; /* LOGIN_NAME_MAX? */
-        char     prefix[PATH_MAX];
-	
-	int      ignore;
-};
-
-struct pkg_blob {
-	char     name[PATH_MAX];
-        char    *blob;
-};
-
-struct pkg_database {
-        void    *__internal;
-        int      __locking; /* Remove? */
-        int      __type;
-
-        /* 
-         * XXX: 'add' and 'delete' should really be renamed to 'register' and
-         * 'unregister' or something to that effect.
-         */
-	int (*add) (struct pkg_database *, struct pkg *, u_int);
-	int (*close) (struct pkg_database *);
-        int (*delete) (struct pkg_database *, const char *, u_int);
-        int (*match) (struct pkg_database *, const char *, enum pkgmatch,
-                struct pkg *, u_int);
-        int (*open) (struct pkg_database *, const char *, u_int);
-};
-
-struct pkg_repository {
-        void    *__internal;
-        int      __type;
-
-        int (*open) (struct pkg_repository *, const char *, u_int);
-        int (*close) (struct pkg_repository *);
-        FILE *(*fetch) (struct pkg_repository *, const char *, char *, size_t *,
-                u_int);
-};
-
-/* pkg */
-void
-pkg_init(struct pkg *, enum pkgtype);
-
-void
-pkg_clear(struct pkg *);
-
-int
-pkg_conflict_add(struct pkg *, const char *);
-
-struct pkg_depend *
-pkg_depend_add(struct pkg *);
-
-struct pkg_file *
-pkg_file_add(struct pkg *);
-
-int
-pkg_exec_add(struct pkg *, const char *);
-
-int
-pkg_unexec_add(struct pkg *, const char *);
-
-struct pkg_blob *
-pkg_blob_add(struct pkg *);
-
-int
-pkg_required_by_add(struct pkg *, const char *);
-
-/* pkg_db */
-void
-pkg_database_init(struct pkg_database *, enum pkgdbtype);
-
-/* pkgrepo */
-void
-pkg_repository_init(struct pkg_repository *, enum pkgrepotype);
-
-/* pkg_install */
-int
-pkg_install_check(const char *);
-
-int
-pkg_install_start(struct pkg *, const char *);
-
-int
-pkg_install_finish(struct pkg *);
-
-int
-pkg_install_extract(struct pkg *, struct archive *, struct archive_entry *, 
-        u_int);
-int
-pkg_install_undo(const char *);
-
-int
-pkg_install_log(struct pkg *, const char *, ...);
-
-const char *
-pkg_install_log_last_line(struct pkg *);
-
-int
-pkg_install_undo(const char *);
-
-#endif
+#endif 


More information about the p4-projects mailing list