Date: Mon, 15 Jun 2009 04:15:10 GMT From: David Forsythe <dforsyth@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 164394 for review Message-ID: <200906150415.n5F4FAej010423@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=164394 Change 164394 by dforsyth@squirrel on 2009/06/15 04:14:36 Working towards something that compiles. Added some place holders. Affected files ... .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#16 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#16 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_dep.c#3 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.c#9 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.h#8 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_private.h#10 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb_hierdb.c#4 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb_hierdb_pkgdb_sub.c#5 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb_hierdb_pkgdb_sub.h#3 edit .. //depot/projects/soc2009/dforsyth_libpkg/pkg_info/main.c#10 edit Differences ... ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#16 (text+ko) ==== @@ -2,10 +2,13 @@ #include <stdlib.h> #include <string.h> +#include <sys/queue.h> + #include "pkg_util.h" #include "pkg_dep.h" #include "pkg_file.h" #include "pkg_plist.h" +#include "pkgdb_hierdb_pkgdb_sub.h" #include "pkgdb.h" #include "pkg_private.h" #include "pkg.h" @@ -13,10 +16,17 @@ struct pkg { char *ident; /* User given name for this pkg. */ + char *contents; + char *comment; + char *description; + char *display; + char *mtree_dirs; + char *required_by; + struct pkg_plist plist; - struct pkgdb_sub sub; + struct pkgdb_sub *sub; - /* TAILQ_ENTRY(pkg) next; */ + TAILQ_ENTRY(pkg) next; short dirty; /* Add an owner field? */ }; @@ -29,11 +39,13 @@ struct pkg *p; p = calloc(1, sizeof(*p)); + return (p); } -/* TODO: Can't copy string for some _set_ functions and then just point to - * the passed pkg_plist for _set_pkg_plist. */ +/* For now, copy all text into the package. Yes, it's storing information + * twice, but until I'm sure about what I'm going to do with all of the + * information, pkgs can have their own copies of the data. */ /* Set the short comment for this package */ int @@ -42,9 +54,86 @@ if (p == NULL) arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - p->comment_text = comment; + p->comment = strdup(comment); + + return (OK); +} + +/* Set the contents for this package. */ + +int +pkg_set_contents(struct pkg *p, const char *contents) +{ + if (p == NULL) + arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + p->contents = strdup(contents); + + return (OK); +} + +int +pkg_set_description(struct pkg *p, const char *description) +{ + if (p == NULL) + arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + p->description = strdup(description); + + return (OK); +} + +int +pkg_set_display(struct pkg *p, const char *display) +{ + if (p == NULL) + arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + p->display = strdup(display); + + return (OK); +} + +int +pkg_set_mtree_dirs(struct pkg *p, const char *mtree_dirs) +{ + if (p == NULL) + arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + p->mtree_dirs = strdup(mtree_dirs); + + return (OK); +} + +int +pkg_set_required_by(struct pkg *p, const char *required_by) +{ + if (p == NULL) + arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + p->required_by = strdup(required_by); + + return (OK); +} + +int +pkg_parse_plist(struct pkg *p) +{ + int status; + + if (p == NULL) + arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + if (pkg_plist_parsed(&p->plist)) { + /* For now, just jump ship if the package already has a plist. */ + return (OK); + } + + pkg_plist_reset(&p->plist); + + status = pkg_plist_parse_contents_from_text(&p->plist, p->contents); - return (PKG_OK); + return (status); } /* ident and name are different, even though they might be the same. */ @@ -79,7 +168,7 @@ if (p == NULL) arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - return (pkg_plist_cwd(p->plist)); + return (pkg_plist_cwd(&p->plist)); } char * @@ -88,27 +177,32 @@ if (p == NULL) arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - return (pkg_plist_origin(p->plist)) + return (pkg_plist_origin(&p->plist)); } +/* These need to be renamed. */ + void -pkg_file_list_init(struct pkg *p) +pkg_pkg_file_list_init(struct pkg *p) { if (p == NULL) arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - pkg_plist_pkg_file_list_reset(p->plist); + pkg_plist_pkg_file_list_reset(&p->plist); } struct pkg_file * -pkg_file_list_next(struct pkg *p) +pkg_pkg_file_list_next(struct pkg *p) { struct pkg_file *pf; - + if (p == NULL) arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + if (pf == NULL) + arg_rage_quit(__func__, "Not a valid package file.", RAGE_AT_CLIENT); - pf = pkg_plist_pkg_file_list_next(p->plist); + pf = pkg_plist_pkg_file_list_next(&p->plist); return (pf); } @@ -119,15 +213,14 @@ if (p == NULL) arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - pkg_plist_free(p->plist); p->ident = NULL; - p->comment_text = NULL; - p->contents_text = NULL; - p->desc_text = NULL; - p->display_text = NULL; - p->mtree_text = NULL; + p->comment = NULL; + p->contents = NULL; + p->description = NULL; + p->display = NULL; + p->mtree_dirs = NULL; p->required_by = NULL; - p->plist = NULL; + pkg_plist(&p->plist); } /* TODO: Make an note in the manual for libpkg that pkg_free should not be ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#16 (text+ko) ==== @@ -2,17 +2,36 @@ #define __PKG_H__ /* When I get more than one, I'll plop it into an enum type. */ -#define HIER_DB 0 +#define HIER_DB 0 + +/* Here have some error codes. */ + +#define OK 0x00000000 +#define NOT_OK 0x00000001 +#define MEMORY_ERR 0x00000002 +#define BAD_IDENT 0x00000004 /* remove db_bad_root? */ +#define RAGE_AT_CLIENT 0x00000008 +#define RAGE_AT_LIBPKG 0x00000010 + +#define DB_BAD_ROOT 0x10000000 +#define DB_NOT_OPEN 0x20000000 +#define DB_OPEN 0x40000000 -/* TODO: Error codes. */ -#define RAGE_AT_CLIENT 0x00000001 -#define RAGE_AT_LIBPKG 0x00000002 +#define SUB_NO_COMMENT 0x80000000 +#define SUB_NO_CONTENTS 0x01000000 +#define SUB_NO_DESC 0x02000000 +#define SUB_NO_DISPLAY 0x04000000 +#define SUB_NO_MTREE_DIRS 0x08000000 +#define SUB_NO_REQUIRED_BY 0x00100000 +#define SUB_NO_FILE 0x00200000 +#define SUB_EMPTY_FILE 0x00400000 +#define NO_PKG 0x00800000 /* pkg_file */ struct pkg_file; - +#if 0 struct pkg_file *pkg_file_new(void); const char *pkg_file_path(struct pkg_file *pf); @@ -30,14 +49,16 @@ int pkg_file_set_owner(struct pkg_file *pf, const char *owner); int pkg_file_set_group(struct pkg_file *pf, const char *group); - +#endif /* pkg */ /* Add mtree stuff later. */ struct pkg; -struct pkg *pkg_new(const char *ident); +struct pkg *pkg_new(void); + +void pkg_reset(struct pkg *p); char *pkg_ident(struct pkg *p); @@ -63,13 +84,21 @@ int pkg_set_comment(struct pkg *p, const char *comment); +int pkg_set_contents(struct pkg *p, const char *contents); + int pkg_set_description(struct pkg *p, const char *description); +int pkg_set_mtree_dirs(struct pkg *p, const char *mtree_dirs); + +int pkg_set_required_by(struct pkg *p, const char *required_by); + int pkg_set_display(struct pkg *p, const char *display); int pkg_parse_plist(struct pkg *p); -int pkg_pkg_file_list_next(struct pkg *p, struct pkg_file *pf); +void pkg_pkg_file_list_init(struct pkg *p); + +struct pkg_file *pkg_pkg_file_list_next(struct pkg *p); int pkg_pkg_file_list_reset(struct pkg *p); @@ -91,7 +120,7 @@ int pkgdb_db_close(struct pkgdb *db); -struct pkg *pkgdb_pkg_next(struct pkgdb *db); +int pkgdb_pkg_next(struct pkgdb *db, struct pkg *p); int pkgdb_pkg_get(struct pkgdb *db, struct pkg *p, const char *ident); ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_dep.c#3 (text+ko) ==== @@ -25,6 +25,7 @@ return (NULL); pd->name = name; + return (pd); } @@ -35,6 +36,7 @@ return (NULL); pd->origin = origin; + return (pd); } ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.c#9 (text+ko) ==== @@ -9,6 +9,7 @@ #include <dirent.h> #include <limits.h> +#include "pkg_util.h" #include "pkg_dep.h" #include "pkg_file.h" #include "pkg_plist.h" @@ -21,28 +22,6 @@ char *group; }; -struct pkg_plist { - char * rev; - char *cwd; - char *srcdir; - char *name; - char *origin; - char *display; - char *mtree_file; - - char *text; /* The entire plist */ - - struct pkg_file *pf_curr; - struct pkg_dep *pd_curr; - - /* Use these lists here so that appending to our list doesnt need a - * bunch of realloc procedures. This will be convenient for clients - * that want to build plists on the fly, modify plists, etc. */ - - TAILQ_HEAD(pf_head, pkg_file) pf_head; /* pkg_file list. */ - TAILQ_HEAD(pd_head, pkg_dep) pd_head; /* pkg_dep list. */ -}; - void set_parse_state_default(struct parse_state *st) { @@ -63,40 +42,60 @@ return (pl); } -struct pkg_plist * +int +pkg_plist_parsed(struct pkg_plist *pl) +{ + if (pl == NULL) + arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); + + return (pl->parsed); +} + +void +pkg_plist_reset(struct pkg_plist *pl) +{ + if (pl == NULL) + arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); + + /* TODO: Write this. */ + + pl->parsed = 0; +} + +int pkg_plist_new_from_text(const char *text) { + int status; struct pkg_plist *pl; - pl = pkg_plist_parse_contents_from_text(text); - return (pl); + pl = pkg_plist_new(); + status = pkg_plist_parse_contents_from_text(pl, text); + + return (status); } -struct pkg_plist * -pkg_plist_parse_contents_from_text(const char *text) +int +pkg_plist_parse_contents_from_text(struct pkg_plist *pl, const char *text) { int s; char *p; char *textp; char *line; - struct pkg_plist *pl; struct parse_state st; /* This function will parse text and create a pkg_plist */ if (text == NULL) - return (NULL); + return (NOT_OK); pl = pkg_plist_new(); if (pl == NULL) - return (NULL); + return (MEMORY_ERR); - /* Lets just hold a complete copy of the text and modify/point to the - * information we want, rather than duping a bunch of strings in the - * line parsing function. */ - + /* Not sure if this is how I still want to do this, but for now, hold + * a copy of the text. */ textp = strdup(text); if (textp == NULL) - return (NULL); + return (MEMORY_ERR); pl->text = textp; @@ -118,12 +117,16 @@ /* Consider a dirty flag for these lists? */ if (s != 0) { /* bad parse. */ + /* free a bunch of stuff. */ + return (NOT_OK); } textp = p + 1; } } + + pl->parsed = 1; - return (pl); + return (OK); } /* Parse a command sequence and add an entry based on the findings. */ @@ -363,4 +366,10 @@ TAILQ_INSERT_TAIL(&pl->pf_head, pf, next); } +void +pkg_plist_free(struct pkg_plist *pl) +{ + return; +} + /* pkg_dep list manipulation and access. */ ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.h#8 (text+ko) ==== @@ -28,40 +28,73 @@ /* Plist commands. */ -#define PLIST_CMD_CWD "cwd" -#define PLIST_CMD_CD "cd" -#define PLIST_CMD_SRCDIR "srcdir" -#define PLIST_CMD_EXEC "exec" -#define PLIST_CMD_UNEXEC "unexec" -#define PLIST_CMD_MODE "mode" -#define PLIST_CMD_OPTION "option" -#define PLIST_CMD_OWNER "owner" -#define PLIST_CMD_GROUP "group" -#define PLIST_CMD_COMMENT "comment" -#define PLIST_CMD_NOINST "noinst" -#define PLIST_CMD_IGNORE "ignore" +#define PLIST_CMD_CWD "cwd" +#define PLIST_CMD_CD "cd" +#define PLIST_CMD_SRCDIR "srcdir" +#define PLIST_CMD_EXEC "exec" +#define PLIST_CMD_UNEXEC "unexec" +#define PLIST_CMD_MODE "mode" +#define PLIST_CMD_OPTION "option" +#define PLIST_CMD_OWNER "owner" +#define PLIST_CMD_GROUP "group" +#define PLIST_CMD_COMMENT "comment" +#define PLIST_CMD_NOINST "noinst" +#define PLIST_CMD_IGNORE "ignore" #define PLIST_CMD_IGNORE_INST "ignore_inst" -#define PLIST_CMD_NAME "name" -#define PLIST_CMD_DIRRM "dirrm" -#define PLIST_CMD_MTREE "mtree" -#define PLIST_CMD_DISPLAY "display" -#define PLIST_CMD_PKGDEG "pkgdep" -#define PLIST_CMD_CONFLICTS "conflicts" +#define PLIST_CMD_NAME "name" +#define PLIST_CMD_DIRRM "dirrm" +#define PLIST_CMD_MTREE "mtree" +#define PLIST_CMD_DISPLAY "display" +#define PLIST_CMD_PKGDEG "pkgdep" +#define PLIST_CMD_CONFLICTS "conflicts" /* Meta comments. */ #define PLIST_COMMENT_PKG_REV "PKG_FORMAT_REVISION" #define PLIST_COMMENT_ORIGIN "ORIGIN" #define PLIST_COMMENT_DEPORIGIN "DEPORIGIN" -#define PLIST_COMMENT_MD5 "MD5" +#define PLIST_COMMENT_MD5 "MD5" struct parse_state; -struct pkg_plist *pkg_plist_parse_contents_from_text(const char *text); +struct pkg_plist { + char *rev; + char *cwd; + char *srcdir; + char *name; + char *origin; + char *display; + char *mtree_file; + + char *text; /* The entire plist */ + + struct pkg_file *pf_curr; + struct pkg_dep *pd_curr; + + /* Use these lists here so that appending to our list doesnt need a + * bunch of realloc procedures. This will be convenient for clients + * that want to build plists on the fly, modify plists, etc. */ + + TAILQ_HEAD(pf_head, pkg_file) pf_head; /* pkg_file list. */ + TAILQ_HEAD(pd_head, pkg_dep) pd_head; /* pkg_dep list. */ + int parsed; +}; + +struct pkg_plist *pkg_plist_new(void); + +int pkg_plist_parsed(struct pkg_plist *pl); + +void pkg_plist_reset(struct pkg_plist *pl); + +int pkg_plist_new_from_text(const char *text); + +int pkg_plist_parse_contents_from_text(struct pkg_plist *pl, + const char *text); int pkg_plist_parse_line(struct pkg_plist *pl, char *line, struct parse_state *st); void pkg_plist_pkg_file_list_reset(struct pkg_plist *pl); + struct pkg_file *pkg_plist_pkg_file_list_next(struct pkg_plist *pl); char *pkg_plist_name(struct pkg_plist *pl); @@ -76,4 +109,6 @@ void set_parse_state_default(struct parse_state *st); +void pkg_plist_free(struct pkg_plist *pl); + #endif ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_private.h#10 (text+ko) ==== @@ -1,11 +1,11 @@ #ifndef __PKG_PRIVATE_H__ #define __PKG_PRIVATE_H__ -#define COMMENT_FILE "+COMMENT" -#define CONTENTS_FILE "+CONTENTS" -#define DESC_FILE "+DESC" -#define DISPLAY_FILE "+DISPLAY" -#define MTREE_DIRS_FILE "+MTREE_DIRS" +#define COMMENT_FILE "+COMMENT" +#define CONTENTS_FILE "+CONTENTS" +#define DESC_FILE "+DESC" +#define DISPLAY_FILE "+DISPLAY" +#define MTREE_DIRS_FILE "+MTREE_DIRS" #define REQUIRED_BY_FILE "+REQUIRED_BY" ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb_hierdb.c#4 (text+ko) ==== @@ -140,7 +140,16 @@ } int -pkgdb_hierdb_db_close(struct pkgdb *db) +pkgdb_hierdb_db_sync(struct pkgdb *db) { - return (0); + int status; + + if (db == NULL) + arg_rage_quit(__func__, "Not a valid database.", RAGE_AT_CLIENT); + + status = OK; + if (!db->dirty) + return (status); + + return (status); } ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb_hierdb_pkgdb_sub.c#5 (text+ko) ==== @@ -4,24 +4,10 @@ #include "pkgdb_hierdb_pkgdb_sub.h" #include "pkg.h" +#define BAD_ARG_RAGE arg_rage_quit(__func__, "Not a valid pkgdb_sub.", RAGE_AT_LIBPKG); + /* TODO: Create pkgdb_sub.c */ -struct pkgdb_sub { - struct pkgdb *owner_db; - - char *ident; - char *path; - - char *comment_text; - char *contents_text; - char *desc_text; - char *display_text; - char *mtree_dirs_text; - char *required_by_text; - - TAILQ_ENTRY(pkgdb_sub) next; -}; - struct pkgdb_sub * pkgdb_sub_new() { @@ -135,6 +121,69 @@ return (SUB_OK); } +char * +pkgdb_sub_ident(struct pkgdb_sub *dbs) +{ + if (dbs == NULL) + BAD_ARG_RAGE; + + return (dbs->ident); +} + +char * +pkgdb_sub_comment(struct pkgdb_sub *dbs) +{ + if (dbs == NULL) + BAD_ARG_RAGE; + + return (dbs->comment_text); +} + +char * +pkgdb_sub_contents(struct pkgdb_sub *dbs) +{ + if (dbs == NULL) + BAD_ARG_RAGE; + + return (dbs->contents_text); +} + +char * +pkgdb_sub_desc(struct pkgdb_sub *dbs) +{ + if (dbs == NULL) + BAD_ARG_RAGE; + + return (dbs->desc_text); +} + +char * +pkgdb_sub_display(struct pkgdb_sub *dbs) +{ + if (dbs == NULL) + BAD_ARG_RAGE; + + return (dbs->display_text); +} + +char * +pkgdb_sub_mtree_dirs(struct pkgdb_sub *dbs) +{ + if (dbs == NULL) + BAD_ARG_RAGE; + + return (dbs->mtree_dirs_text); +} + +char * +pkgdb_sub_required_by(struct pkgdb_sub *dbs); +{ + if (dbs == NULL) + BAD_ARG_RAGE; + + return (dbs->required_by_text); +} + void pkgdb_sub_reset(struct pkgdb_sub *dbs) { @@ -159,8 +208,6 @@ dbs->required_by_text = NULL; } - - void pkgdb_sub_free(struct pkgdb_sub *dbs) { @@ -170,6 +217,3 @@ pkgdb_sub_reset(dbs); free(dbs); } - - - ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb_hierdb_pkgdb_sub.h#3 (text+ko) ==== @@ -1,19 +1,51 @@ #ifndef __PKGDB_SUB_H__ #define __PKGDB_SUB_H__ -#define SUB_NO_COMMENT 0x00000001 -#define SUB_NO_CONTENTS 0x00000002 -#define SUB_NO_DESC 0x00000004 -#define SUB_NO_DISPLAY 0x00000008 -#define SUB_NO_MTREE_DIRS 0x00000010 -#define SUB_NO_REQUIRED_BY 0x00000020 +#include "pkg.h" + +/* Keep this in here until (if) I ditch queues. */ +struct pkgdb_sub { + struct pkgdb *owner_db; + + char *ident; + char *path; + + char *comment_text; + char *contents_text; + char *desc_text; + char *display_text; + char *mtree_dirs_text; + char *required_by_text; + + TAILQ_ENTRY(pkgdb_sub) next; +}; + +struct pkgdb_sub *pkgdb_sub_new(void); + +int pkgdb_sub_set_ident(struct pkgdb_sub *dbs, const char *ident); + +int pkgdb_sub_set_assign_db(struct pkgdb *owner, struct pkgdb_sub *dbs); + +int pkgdb_sub_read_file_to_text(struct pkgdb_sub *dbs, const char *filename); + +char *pkgdb_sub_ident(struct pkgdb_sub *dbs); + +char *pkgdb_sub_path(struct pkgdb_sub *dbs); + +char *pkgdb_sub_comment(struct pkgdb_sub *dbs); + +char *pkgdb_sub_contents(struct pkgdb_sub *dbs); + +char *pkgdb_sub_desc(struct pkgdb_sub *dbs); + +char *pkgdb_sub_display(struct pkgdb_sub *dbs); + +char *pkgdb_sub_mtree_dirs(struct pkgdb_sub *dbs); -#define SUB_NO_FILE 0x00000040 -#define SUB_EMPTY_FILE 0x00000080 +char *pkgdb_sub_required_by(struct pkgdb_sub *dbs); -#define SUB_BAD_IDENT 0x00000040 -#define SUB_MEMORY_ERR 0x00000080 +void pkgdb_sub_reset(struct pkgdb_sub *dbs); -struct pkgdb_sub; +void pkgdb_sub_free(struct pkgdb_sub *dbs); #endif ==== //depot/projects/soc2009/dforsyth_libpkg/pkg_info/main.c#10 (text+ko) ==== @@ -29,7 +29,7 @@ { int status; const char *db_root; - struct pkgdb db; + struct pkgdb *db; if (argc == 1 && argv != NULL /* Giving argv something to do */) { opt_all = 1; @@ -47,13 +47,17 @@ fprintf(stderr, "Could not attach to database \"%s\"\n", db_root); } #endif - status = pkgdb_db_open(&db, db_root); - if (PKGDB_FAIL(status)) { + db = pkgdb_new(HIER_DB); + if (db == NULL) + exit(EXIT_FAILURE); + + status = pkgdb_db_open(db, db_root); + if (status) { fprintf(stderr, "Could not open database \"%s\"\n", db_root); exit(EXIT_FAILURE); } - perform_on_db(&db); + perform_on_db(db); return (EXIT_SUCCESS); } @@ -84,18 +88,23 @@ { int status; /* char *target; */ - struct pkg p; + struct pkg *p; /* There will be cases where an init is useless, but since I haven't * written that much yet, init regardless. */ + + p = pkg_new(); + if (p == NULL) + exit(EXIT_FAILURE); - status = pkgdb_db_init(&db); - if (PKGDB_FAIL(status)) { - fprint(stderr, "Could not initialize database \"%s\"\n", db_root); + status = pkgdb_db_init(db); + if (status) { + fprintf(stderr, "Could not initialize database \"%s\"\n", + pkgdb_db_root(db_root)); exit(EXIT_FAILURE); } - while ((p = pkgdb_next_pkg(db)) != NULL) { + while ((status = pkgdb_pkg_next(db, p)) != NO_PKG) { if (!opt_all) { /* Wont happen at this point. */ /* Do some matching magic that I haven't written yet. */ print_pkg_information(p);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906150415.n5F4FAej010423>