From owner-p4-projects@FreeBSD.ORG Thu Oct 28 06:07:33 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CBD9F10656A9; Thu, 28 Oct 2010 06:07:33 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8CB99106567A for ; Thu, 28 Oct 2010 06:07:33 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 7780B8FC20 for ; Thu, 28 Oct 2010 06:07:33 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id o9S67XV4025537 for ; Thu, 28 Oct 2010 06:07:33 GMT (envelope-from dforsyth@FreeBSD.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id o9S67Xu0025534 for perforce@freebsd.org; Thu, 28 Oct 2010 06:07:33 GMT (envelope-from dforsyth@FreeBSD.org) Date: Thu, 28 Oct 2010 06:07:33 GMT Message-Id: <201010280607.o9S67Xu0025534@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to dforsyth@FreeBSD.org using -f From: David Forsythe To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 185173 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Oct 2010 06:07:34 -0000 http://p4web.freebsd.org/@@185173?ac=10 Change 185173 by dforsyth@skunk on 2010/10/28 06:06:54 Tabs to spaces, expose types so that I can use TAILQ_* instead of rolling my own queues, move api into pkg.h rather than spreading it between multiple headers. Affected files ... .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/Makefile#6 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/base.h#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/database.c#7 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/database.h#6 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/database_internal.h#5 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/depend.c#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/depend.h#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/exec.c#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/exec.h#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/exec_internal.h#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/file.c#5 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/file.h#5 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_database_directorydb.c#6 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_database_directorydb.h#6 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_plist.c#6 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_plist.h#5 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_repository_ftp.c#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_repository_ftp.h#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_repository_path.c#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_repository_path.h#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/internal.h#4 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/logger.c#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/logger.h#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg.c#9 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg.h#8 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_internal.h#7 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_pkg.h#8 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_types.h#1 add .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/repository.c#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/repository.h#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/repository_internal.h#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/reqby.c#2 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/reqby.h#2 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/util.c#4 edit .. //depot/projects/soc2010/dforsyth_libpkg/libpkg/util.h#4 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/lib/pkg_install.h#2 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_add/Makefile#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_add/pkg_add.c#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_add/pkg_add.h#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_delete/Makefile#2 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_delete/pkg_delete.c#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_dump/Makefile#2 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_dump/pkg_dump.c#5 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_dump/pkg_dump.h#2 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_info/Makefile#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_info/pkg_info.c#5 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_info/pkg_info.h#3 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_validate/Makefile#2 edit .. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_validate/validate.c#2 edit Differences ... ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/Makefile#6 (text+ko) ==== @@ -11,15 +11,12 @@ SRCS= pkg.c \ - database.c \ - repository.c \ - freebsd_plist.c \ - freebsd_database_directorydb.c \ - freebsd_repository_ftp.c \ - util.c \ - exec.c \ - file.c \ - depend.c + database.c \ + freebsd_plist.c \ + freebsd_database_directorydb.c \ + util.c \ + file.c \ + depend.c CFLAGS+= -std=c99 ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/base.h#3 (text+ko) ==== ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/database.c#7 (text+ko) ==== @@ -10,9 +10,9 @@ #include #include +#include "pkg.h" +#include "pkg_internal.h" #include "database.h" -/* Cool kids club. */ -#include "internal.h" #include "util.h" @@ -24,49 +24,49 @@ * Verify the magic value in a package database. If there is a mismatch, crash * the client application. */ -void +static void _pkg_db_check_magic(struct pkg_db *db, const char *func) { - if (db->magic != MAGIC) { - PKG_CLIENT_CRASH(func, "database magic number mismatch."); - } + if (db->magic != MAGIC) { + PKG_CLIENT_CRASH(func, "database magic number mismatch."); + } } struct pkg_db * pkg_db_create(void) { - struct pkg_db *db; + struct pkg_db *db; - db = calloc(1, sizeof(*db)); - if (db == NULL) { - return (NULL); - } + db = calloc(1, sizeof(*db)); + if (db == NULL) { + return (NULL); + } - db->magic = MAGIC; - /* If NULL, closed. If not NULL, open. */ - db->internal = NULL; + db->magic = MAGIC; + /* If NULL, closed. If not NULL, open. */ + db->internal = NULL; - /* TODO: NULL out callback pointers. */ - db->open = fbsd_directorydb_open; - db->all = fbsd_directorydb_all; - db->get = fbsd_directorydb_get; + /* TODO: NULL out callback pointers. */ + db->open = fbsd_directorydb_open; + db->all = fbsd_directorydb_all; + db->get = fbsd_directorydb_get; - return (db); + return (db); } int pkg_db_finish(struct pkg_db *db) { - if (db->internal != NULL) { - if (pkg_db_close(db) != PKG_OK) { - warnx("Could not close pkg_db (%s)\n", db->path); - return (PKG_NOT_OK); - } - } + if (db->internal != NULL) { + if (pkg_db_close(db) != PKG_OK) { + warnx("Could not close pkg_db (%s)\n", db->path); + return (PKG_NOT_OK); + } + } - free(db); + free(db); - return (PKG_OK); + return (PKG_OK); } /* @@ -75,127 +75,101 @@ int pkg_db_open(struct pkg_db *db, const char *path) { - int r; + int r; - _pkg_db_check_magic(db, __func__); - - r = PKG_NOT_OK; - if ((r = db->open(db, path)) == PKG_OK) { - strcpy(db->path, path); + _pkg_db_check_magic(db, __func__); + + r = PKG_NOT_OK; + if ((r = db->open(db, path)) == PKG_OK) { + strcpy(db->path, path); } - return (r); + return (r); } struct pkg_list * -pkg_db_all(struct pkg_db *db) +pkg_db_pkgs(struct pkg_db *db) { - return (db->all(db)); + return (db->all(db)); } +#if 0 uid_t pkg_db_owner(struct pkg_db *db) { - if (db->internal == NULL) { - return (PKG_NOT_OK); - } - return (db->owner(db)); + if (db->internal == NULL) { + return (PKG_NOT_OK); + } + return (db->owner(db)); } const char * pkg_db_path(struct pkg_db *db) { - if (db->internal == NULL) { - return (NULL); - } + if (db->internal == NULL) { + return (NULL); + } - return (db->path); + return (db->path); } +#endif int pkg_db_close(struct pkg_db *db) { - int r; + int r; - if (db->internal != NULL) { - if (db->close) { - r = db->close(db); - } else { - r = PKG_OK; - } - } else { - /* kaboom? */ - return (PKG_NOT_OK); - } + if (db->internal != NULL) { + if (db->close) { + r = db->close(db); + } else { + r = PKG_OK; + } + } else { + /* kaboom? */ + return (PKG_NOT_OK); + } - return (r); + return (r); } struct pkg * pkg_db_add(struct pkg_db *db, const char *name, const char *origin, - const char *comment, const char *description) + const char *comment, const char *description) { - struct pkg *pkg; - - pkg = pkg_alloc(); - if (pkg == NULL) { - return (NULL); - } + struct pkg *pkg; + + pkg = pkg_alloc(); + if (pkg == NULL) { + return (NULL); + } - /* Do the add and set up pkg. */ - if (db->add(db, pkg, name, origin, comment, description) != PKG_OK) { - pkg_release(pkg); - return (NULL); - } + /* Do the add and set up pkg. */ + if (db->add(db, pkg, name, origin, comment, description) != PKG_OK) { + pkg_release(pkg); + return (NULL); + } - return (pkg); + return (pkg); } struct pkg * pkg_db_get(struct pkg_db *db, const char *key) { - /* XXX: This function is a perfect example of why I need error - * properties. */ - struct pkg *pkg; - - pkg = pkg_alloc(); - if (pkg == NULL) { - return (NULL); - } + /* XXX: This function is a perfect example of why I need error + * properties. */ + struct pkg *pkg; + + pkg = pkg_alloc(); + if (pkg == NULL) { + return (NULL); + } - strcpy(pkg->key, key); - if (db->get(db, pkg, key) != PKG_OK) { - return (NULL); - } + strcpy(pkg->key, key); + if (db->get(db, pkg, key) != PKG_OK) { + return (NULL); + } - return (pkg); -} - -int -pkg_db_delete(struct pkg_db *db, const char *key) -{ - /* Does a complete removal of all information pertaining to pkg key from - * the database. Any pkg objects for this package or now invalid/stale. - * */ - return (db->delete(db, key)); -} - -int -pkg_db_destroy(struct pkg_db *db, struct pkg *p) -{ - (void)db; - (void)p; - return (PKG_OK); -} - -int -pkg_db_revert(struct pkg_db *db) -{ - return (db->revert(db)); + return (pkg); } -int -pkg_db_sync(struct pkg_db *db) -{ - return (db->sync(db)); -} ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/database.h#6 (text+ko) ==== @@ -6,64 +6,84 @@ #ifndef __LIBPKG_DATABASE_H__ #define __LIBPKG_DATABASE_H__ +#include #include #include "pkg.h" -/* Allocate a new pkg_db object. */ -struct pkg_db *pkg_db_create(void); +struct pkg_db { + unsigned int magic; /* init */ + char path[PATH_MAX]; + /* Internal db pointer for whatever backend is in use. */ + void *internal; + + int (*add) (struct pkg_db *, struct pkg *, + const char *, const char *, const char *, + const char *); + int (*close) (struct pkg_db *); + int (*contains) (struct pkg_db *, const char *); + int (*get) (struct pkg_db *, struct pkg *, + const char *); + struct pkg_list *(*all) (struct pkg_db *); + int (*open) (struct pkg_db *, const char *); + uid_t (*owner) (struct pkg_db *); + int (*delete) (struct pkg_db *, const char *); + int (*revert) (struct pkg_db *); + int (*sync) (struct pkg_db *); +}; +#if 0 /* Free a pkg_db object. Closes with no sync if open. */ -int pkg_db_finish(struct pkg_db *); +int pkg_db_finish(struct pkg_db *); /* Get the path of a pkg_db . */ -const char *pkg_db_path(struct pkg_db *); +const char *pkg_db_path(struct pkg_db *); -struct pkg_list *pkg_db_all(struct pkg_db *); +struct pkg_list *pkg_db_all(struct pkg_db *); /* XXX: Get allocates a package if the package is already in the db. Add * allocates a package if the package is NOT already in the db. */ /* Create a pkg in a pkg_db. If the pkg already exists, returns NULL. */ -struct pkg *pkg_db_add(struct pkg_db *, const char *, const char *, - const char *, const char *); +struct pkg *pkg_db_add(struct pkg_db *, const char *, const char *, + const char *, const char *); /* Get a pkg from a pkg_db. If the package does not exist, returns NULL. */ -struct pkg *pkg_db_get(struct pkg_db *, const char *); +struct pkg *pkg_db_get(struct pkg_db *, const char *); // /* Get all pkgs from a pkg_db that match an expressions. */ -// struct pkg_list *pkg_db_get(struct pkg_db *, const char *); +// struct pkg_list *pkg_db_get(struct pkg_db *, const char *); /* Deletes a pkg from a pkg_db. */ -int pkg_db_delete(struct pkg_db *, const char *); +int pkg_db_delete(struct pkg_db *, const char *); /* Destroy a pkg object that was created by pkg_db. */ -int pkg_db_destroy(struct pkg_db *, struct pkg *); +int pkg_db_destroy(struct pkg_db *, struct pkg *); /* Returns the uid of the owner of a pkg_db. */ -uid_t pkg_db_owner(struct pkg_db *); +uid_t pkg_db_owner(struct pkg_db *); -void pkg_db_set_callbacks(struct pkg_db *, - int (*close) (struct pkg_db *), - struct pkg *(*add) (struct pkg_db *, const char *), - int (*delete) (struct pkg_db *, const char *), - int (*open) (struct pkg_db *, const char *), - uid_t (*owner) (struct pkg_db *), - struct pkg *(*get) (struct pkg_db *, const char *, - uint32_t), - int (*revert) (struct pkg_db *), - int (*sync) (struct pkg_db *)); +void pkg_db_set_callbacks(struct pkg_db *, + int (*close) (struct pkg_db *), + struct pkg *(*add) (struct pkg_db *, const char *), + int (*delete) (struct pkg_db *, const char *), + int (*open) (struct pkg_db *, const char *), + uid_t (*owner) (struct pkg_db *), + struct pkg *(*get) (struct pkg_db *, const char *, + uint32_t), + int (*revert) (struct pkg_db *), + int (*sync) (struct pkg_db *)); /* Undo all changes to a pkg_db. */ -int pkg_db_revert(struct pkg_db *); +int pkg_db_revert(struct pkg_db *); /* Open a database for interaction. */ -int pkg_db_open(struct pkg_db *, const char *); +int pkg_db_open(struct pkg_db *, const char *); /* Close a database. */ -int pkg_db_close(struct pkg_db *); +int pkg_db_close(struct pkg_db *); /* Sync changes to a pkg_db to disk. */ -int pkg_db_sync(struct pkg_db *); - +int pkg_db_sync(struct pkg_db *); +#endif #endif ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/database_internal.h#5 (text+ko) ==== @@ -10,24 +10,24 @@ /* Define the package database type. */ struct pkg_db { - unsigned int magic; /* init */ - char path[PATH_MAX]; - /* Internal db pointer for whatever backend is in use. */ - void *internal; + unsigned int magic; /* init */ + char path[PATH_MAX]; + /* Internal db pointer for whatever backend is in use. */ + void *internal; - int (*add) (struct pkg_db *, struct pkg *, - const char *, const char *, const char *, - const char *); - int (*close) (struct pkg_db *); - int (*contains) (struct pkg_db *, const char *); - int (*get) (struct pkg_db *, struct pkg *, - const char *); - struct pkg_list *(*all) (struct pkg_db *); - int (*open) (struct pkg_db *, const char *); - uid_t (*owner) (struct pkg_db *); - int (*delete) (struct pkg_db *, const char *); - int (*revert) (struct pkg_db *); - int (*sync) (struct pkg_db *); + int (*add) (struct pkg_db *, struct pkg *, + const char *, const char *, const char *, + const char *); + int (*close) (struct pkg_db *); + int (*contains) (struct pkg_db *, const char *); + int (*get) (struct pkg_db *, struct pkg *, + const char *); + struct pkg_list *(*all) (struct pkg_db *); + int (*open) (struct pkg_db *, const char *); + uid_t (*owner) (struct pkg_db *); + int (*delete) (struct pkg_db *, const char *); + int (*revert) (struct pkg_db *); + int (*sync) (struct pkg_db *); }; /* Check the magic value in a database. */ ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/depend.c#3 (text+ko) ==== @@ -2,40 +2,41 @@ #include #include +#include "pkg.h" #include "depend.h" struct pkg_depend * pkg_depend_alloc(void) { - return (calloc(1, sizeof(struct pkg_depend))); + return (calloc(1, sizeof(struct pkg_depend))); } const char * pkg_depend_name(struct pkg_depend *dep) { - return (dep->name); + return (dep->name); } const char * pkg_depend_origin(struct pkg_depend *dep) { - return (dep->origin); + return (dep->origin); } const char * pkg_depend_version(struct pkg_depend *dep) { - return (dep->name); + return (dep->name); } void _pkg_depend_set_name(struct pkg_depend *dep, const char *name) { - strncpy(dep->name, name, PATH_MAX); + strncpy(dep->name, name, PATH_MAX); } void _pkg_depend_set_origin(struct pkg_depend *dep, const char *origin) { - strncpy(dep->origin, origin, PATH_MAX); + strncpy(dep->origin, origin, PATH_MAX); } ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/depend.h#3 (text+ko) ==== @@ -1,27 +1,32 @@ #ifndef __LIBPKG_DEPEND_H__ #define __LIBPKG_DEPEND_H__ +#if 0 #include #include struct pkg_depend { - char name[PATH_MAX]; - char version[256]; - char origin[PATH_MAX]; + char name[PATH_MAX]; + char version[256]; + char origin[PATH_MAX]; - TAILQ_ENTRY(pkg_depend) next; + TAILQ_ENTRY(pkg_depend) next; }; TAILQ_HEAD(pkg_depend_list, pkg_depend); +#endif -struct pkg_depend *pkg_depend_alloc(void); -const char *pkg_depend_name(struct pkg_depend *); -const char *pkg_depend_origin(struct pkg_depend *); -const char *pkg_depend_version(struct pkg_depend *); +#include "pkg_types.h" -void _pkg_depend_set_name(struct pkg_depend *, - const char *); -void _pkg_depend_set_origin(struct pkg_depend *, - const char *); +struct pkg_depend *pkg_depend_alloc(void); +#if 0 +const char *pkg_depend_name(struct pkg_depend *); +const char *pkg_depend_origin(struct pkg_depend *); +const char *pkg_depend_version(struct pkg_depend *); +#endif +void _pkg_depend_set_name(struct pkg_depend *, + const char *); +void _pkg_depend_set_origin(struct pkg_depend *, + const char *); #endif ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/exec.c#3 (text+ko) ==== @@ -8,7 +8,7 @@ char * pkg_exec_run(const char *fmt, char *arg) { - (void)fmt; - (void)arg; - return (NULL); + (void)fmt; + (void)arg; + return (NULL); } ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/exec.h#3 (text+ko) ==== ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/exec_internal.h#3 (text+ko) ==== ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/file.c#5 (text+ko) ==== @@ -2,6 +2,7 @@ #include #include +#include "pkg.h" #include "file.h" #include "util.h" @@ -10,78 +11,80 @@ struct pkg_file * pkg_file_alloc(void) { - return (calloc(1, sizeof(struct pkg_file))); + return (calloc(1, sizeof(struct pkg_file))); } void pkg_file_release(struct pkg_file *file) { - free(file); + free(file); } const char * pkg_file_prefix(struct pkg_file *file) { - return (file->prefix); + return (file->prefix); } void _pkg_file_set_prefix(struct pkg_file *file, const char *prefix) { - strncpy(file->prefix, prefix, PATH_MAX); + strncpy(file->prefix, prefix, PATH_MAX); } const char * pkg_file_pathname(struct pkg_file *file) { - return (file->pathname); + return (file->pathname); } void _pkg_file_set_pathname(struct pkg_file *file, const char *pathname) { - strncpy(file->pathname, pathname, PATH_MAX); + strncpy(file->pathname, pathname, PATH_MAX); } int pkg_file_ignore(struct pkg_file *file) { - return (file->ignore); + return (file->ignore); } void _pkg_file_set_ignore(struct pkg_file *file) { - file->ignore = 1; + file->ignore = 1; } const char * pkg_file_hash(struct pkg_file *file) { - return (file->hash); + return (file->hash); } +#if 0 const char * pkg_file_update_hash(struct pkg_file *file) { - return (file->update_hash(file)); + return (file->update_hash(file)); } +#endif void _pkg_file_set_hash(struct pkg_file *file, const char *hash) { - strncpy(file->hash, hash, 33); + strncpy(file->hash, hash, 33); } const struct stat * pkg_file_stat(struct pkg_file *file) { - char final[PATH_MAX]; + char final[PATH_MAX]; - _pkg_util_path_join(final, file->prefix, file->pathname); - - /* there's no stat_r, are we thread safe? */ - if (stat(final, &file->sb) < 0) return (NULL); + _pkg_util_path_join(final, file->prefix, file->pathname); + + /* there's no stat_r, are we thread safe? */ + if (stat(final, &file->sb) < 0) return (NULL); - return ((const struct stat *)&file->sb); + return ((const struct stat *)&file->sb); } ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/file.h#5 (text+ko) ==== @@ -1,51 +1,57 @@ #ifndef __LIBPKG_FILE_H__ #define __LIBPKG_FILE_H__ +#if 0 #include #include #include #include struct pkg_file { - /* Give each file in a package a unique id. Prefix and pathname aren't - * reliable keys. */ - unsigned int id; - struct stat sb; - - /* The package that this file is in. */ - struct pkg *pkg; + /* Give each file in a package a unique id. Prefix and pathname aren't + * reliable keys. */ + unsigned int id; + struct stat sb; + + /* The package that this file is in. */ + struct pkg *pkg; - char prefix[PATH_MAX]; - char pathname[PATH_MAX]; - int ignore; + char prefix[PATH_MAX]; + char pathname[PATH_MAX]; + int ignore; - char hash[33]; + char hash[33]; - const char *(*update_hash) (struct pkg_file *); + const char *(*update_hash) (struct pkg_file *); - TAILQ_ENTRY(pkg_file) next; + TAILQ_ENTRY(pkg_file) next; }; TAILQ_HEAD(pkg_file_list, pkg_file); +#endif -struct pkg_file *pkg_file_alloc(void); -void pkg_file_release(struct pkg_file *); +#include "pkg_types.h" + +struct pkg_file *pkg_file_alloc(void); +void pkg_file_release(struct pkg_file *); -const char *pkg_file_prefix(struct pkg_file *); -const char *pkg_file_pathname(struct pkg_file *); -int pkg_file_ignore(struct pkg_file *); -const char *pkg_file_hash(struct pkg_file *); -const char *pkg_file_update_hash(struct pkg_file *); +#if 0 +const char *pkg_file_prefix(struct pkg_file *); +const char *pkg_file_pathname(struct pkg_file *); +int pkg_file_ignore(struct pkg_file *); +const char *pkg_file_hash(struct pkg_file *); +const char *pkg_file_update_hash(struct pkg_file *); const struct stat *pkg_file_stat(struct pkg_file *); +#endif /* These only set the fields in the immediate object, they don't touch the db. * */ -void _pkg_file_set_prefix(struct pkg_file *, const char *); -void _pkg_file_set_pathname(struct pkg_file *, - const char *); -void _pkg_file_set_ignore(struct pkg_file *); -void _pkg_file_set_hash(struct pkg_file *, const char *); +void _pkg_file_set_prefix(struct pkg_file *, const char *); +void _pkg_file_set_pathname(struct pkg_file *, + const char *); +void _pkg_file_set_ignore(struct pkg_file *); +void _pkg_file_set_hash(struct pkg_file *, const char *); #endif ==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_database_directorydb.c#6 (text+ko) ==== @@ -13,9 +13,11 @@ #include #include #include +#include + +#include "pkg.h" -/* Cool kids club. */ -#include "internal.h" +#include "database.h" #include "freebsd_database_directorydb.h" #include "freebsd_plist.h" @@ -23,64 +25,72 @@ #include "file.h" #include "depend.h" +#include "util.h" + +/* XXX(dforsyth): Get this out of here as soon as a better pkg creation and + * setup method is in place. */ +#include "pkg_internal.h" + struct _read_plist { - struct pkg_property *plist; - char key[PATH_MAX]; - uint32_t parsed; - RB_ENTRY(_read_plist) entry; + struct pkg_property *plist; + char key[PATH_MAX]; + uint32_t parsed; + RB_ENTRY(_read_plist) entry; }; struct _directorydb { - /* Location of the database. */ - char path[PATH_MAX]; - - /* Journal handle. */ - int journal; - char journal_path[PATH_MAX]; - char journal_dir_path[PATH_MAX]; + /* Location of the database. */ + char path[PATH_MAX]; + + /* Journal handle. */ + int journal; + char journal_path[PATH_MAX]; + char journal_dir_path[PATH_MAX]; - /* A NULL terminated list of keys the db currently has. */ - char **keylist; + /* A NULL terminated list of keys the db currently has. */ + char **keylist; - /* - * The time of our last access. If this has changed, another - * directorydb instance has changes something, so we need to refresh. - */ - time_t last; + /* + * The time of our last access. If this has changed, another + * directorydb instance has changes something, so we need to refresh. + */ + time_t last; - RB_HEAD(plist_head, _read_plist) plist_head; + RB_HEAD(plist_head, _read_plist) plist_head; }; -#define CONTENTS 0x00000001 +#define CONTENTS 0x00000001 #define DESCRIPTION 0x00000002 -#define COMMENT 0x00000004 -#define DISPLAY 0x00000008 +#define COMMENT 0x00000004 +#define DISPLAY 0x00000008 static struct pkg_info { - uint32_t info_mask; - const char *info_name; - const char *file_name; + uint32_t info_mask; + const char *info_name; + const char *file_name; } pkg_entries [] = { - { CONTENTS, FBSD_METANAME_CONTENTS, "+CONTENTS" }, - { DESCRIPTION, FBSD_METANAME_DESCRIPTION, "+DESC" }, - { COMMENT, FBSD_METANAME_COMMENT, "+COMMENT" }, - { DISPLAY, FBSD_METANAME_DISPLAY, "+DISPLAY" }, - { 0, NULL, NULL }, + { CONTENTS, FBSD_METANAME_CONTENTS, "+CONTENTS" }, + { DESCRIPTION, FBSD_METANAME_DESCRIPTION, "+DESC" }, + { COMMENT, FBSD_METANAME_COMMENT, "+COMMENT" }, + { DISPLAY, FBSD_METANAME_DISPLAY, "+DISPLAY" }, + { 0, NULL, NULL }, }; -static int fbsd_directorydb_read_pkg( - struct _directorydb *, struct pkg *); -static char *read_file(const char *); -static int _read_plist_cmp(struct _read_plist *, - struct _read_plist *); -static int dselect(const struct dirent *); -static void fbsd_directorydb_pkg_setup(struct pkg_db *, - struct pkg *, const char *); +static int fbsd_directorydb_read_pkg( + struct _directorydb *, struct pkg *); +int fbsd_directorydb_finish(struct pkg_db *, + struct pkg *); +static char *read_file(const char *); +static int _read_plist_cmp(struct _read_plist *, + struct _read_plist *); +static int dselect(const struct dirent *); +static void fbsd_directorydb_pkg_setup(struct pkg_db *, + struct pkg *, const char *); RB_GENERATE_STATIC(plist_head, _read_plist, entry, _read_plist_cmp); -#define PKG_DIRDB_MAGIC 0x11111111 -#define DB_DIRDB_MAGIC 0x11111111 +#define PKG_DIRDB_MAGIC 0x11111111 +#define DB_DIRDB_MAGIC 0x11111111 /* The journal file. */ #define JOURNAL ".journal" @@ -95,282 +105,293 @@ static int _read_plist_cmp(struct _read_plist *a, struct _read_plist *b) { - return (strcmp(a->key, b->key)); + return (strcmp(a->key, b->key)); } static int dselect(const struct dirent *ent) { - return (ent->d_name[0] != '.' && ent->d_type == DT_DIR); + return (ent->d_name[0] != '.' && ent->d_type == DT_DIR); } /* Close a "connection" to a directorydb. */ int fbsd_directorydb_close(struct pkg_db *db) { - struct _directorydb *d = db->internal; - close(d->journal); - return (0); + struct _directorydb *d = db->internal; + close(d->journal); + return (0); } /* Open a "connection" to a directorydb. */ int fbsd_directorydb_open(struct pkg_db *db, const char *path) { - struct _directorydb *d; - struct stat sb; - int jfd; >>> TRUNCATED FOR MAIL (1000 lines) <<<