Date: Sun, 31 May 2009 07:57:50 GMT From: David Forsythe <dforsyth@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 163149 for review Message-ID: <200905310757.n4V7vo5l023475@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=163149 Change 163149 by dforsyth@squirrel on 2009/05/31 07:57:47 Moved alot of things around. Last submit before restructure. Affected files ... .. //depot/projects/soc2009/dforsyth_libpkg/pkg.c#6 edit .. //depot/projects/soc2009/dforsyth_libpkg/pkg.h#5 edit .. //depot/projects/soc2009/dforsyth_libpkg/pkg_info.c#2 edit .. //depot/projects/soc2009/dforsyth_libpkg/pkgdb.c#6 edit .. //depot/projects/soc2009/dforsyth_libpkg/pkgdb.h#3 edit Differences ... ==== //depot/projects/soc2009/dforsyth_libpkg/pkg.c#6 (text+ko) ==== @@ -5,8 +5,10 @@ #include <sys/queue.h> #include "pkg_util.h" +#include "pkgdb.h" #include "pkg.h" + /* Create a new pkg. */ struct pkg * @@ -26,7 +28,19 @@ return (NULL); } p->ident = new_ident; + p->comment = NULL; + p->contents = NULL; + + return (p); +} +struct pkg * +pkg_set_path(struct pkg *p, const char *path) +{ + if (p == NULL || path == NULL) + return (p); + + p->path = strdup(path); return (p); } ==== //depot/projects/soc2009/dforsyth_libpkg/pkg.h#5 (text+ko) ==== @@ -1,38 +1,15 @@ #ifndef __PKG_H__ #define __PKG_H__ -struct pkg_file { - char *name; - char *path; - char *md5; -}; +#include <sys/queue.h> +#include <dirent.h> -struct pkg_contents { - int rev; - char *name; - char **file_list; /* place holder */ - char *cwd; - char **conflict; -}; +/* pkg */ -struct pkg { - TAILQ_ENTRY(pkg) next; /* Hide meh */ +struct pkg; - char *ident; /* User given name for this pkg. */ - char *path; - - char *comment; - struct pkg_contents *contents; - - int has_comment; - int has_contents; - int has_display; - int has_mtree_dirs; - int has_desc; - int has_required_by; -}; - struct pkg *pkg_new(const char *ident); +struct pkg *pkg_set_path(struct pkg *p, const char *path); int set_pkg_contents(struct pkg *p, char *contents); int set_pkg_comment(struct pkg *p, char *comment); @@ -43,4 +20,30 @@ void pkg_free(struct pkg *p); +/* pkgdb */ + +struct pkgdb; + +struct pkgdb *pkgdb_new_hierdb(const char *db_root); + +int pkgdb_init_hierdb(struct pkgdb *db); +struct pkg *pkgdb_read_pkg_hierdb(struct pkgdb *db, const char *ident); +struct pkg *pkgdb_next_pkg(struct pkgdb *db); + +struct pkg *pkgdb_query_pkg(struct pkgdb *db, const char *ident); + +char *pkgdb_pkg_path(struct pkgdb *db, struct pkg *p); + +void pkgdb_pkg_list_init(struct pkgdb *db); +struct pkg *pkgdb_pkg_list_first(struct pkgdb *db); +void pkgdb_pkg_list_append(struct pkgdb *db, struct pkg *p); + +void pkgdb_free_hierdb(struct pkgdb *db); +void pkgdb_free_pkg_list(struct pkgdb *db); + +/* pkg_info */ +struct pkg_info; + +int pkg_info_read_comment_file(struct pkg *p, const char *filename); + #endif ==== //depot/projects/soc2009/dforsyth_libpkg/pkg_info.c#2 (text+ko) ==== @@ -1,9 +1,15 @@ #include <stdio.h> #include <stdlib.h> +#include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> +#include <dirent.h> + +#include "pkg_info.h" +#include "pkgdb.h" +#include "pkg.h" struct pkg_file { char *name; @@ -16,7 +22,21 @@ char *name; char *orgin; char *cwd; + char *conflicts; int f_count; struct pkg_file *files; }; + +struct pkg * +pkg_info_read_comment_file(struct pkg *p, const char *filename:) { + + if (p == NULL || filename == NULL) + return (NULL); + + + return (p); +} + + + ==== //depot/projects/soc2009/dforsyth_libpkg/pkgdb.c#6 (text+ko) ==== @@ -8,6 +8,7 @@ #include <dirent.h> #include "pkg_util.h" +#include "pkg_info.h" #include "pkgdb.h" #include "pkg.h" @@ -64,11 +65,11 @@ if (db == NULL) return (-1); - TAILQ_INIT(&db->p_head); + pkgdb_pkg_list_init(db); if (db->dirty == 0) { /* No changes since the last init, don't bother walking the * database again. */ - db->p_curr = TAILQ_FIRST(&db->p_head); + db->p_curr = pkgdb_pkg_list_first(db);; return (db->p_count); } @@ -86,12 +87,12 @@ free(ents); return (-1); } - TAILQ_INSERT_TAIL(&db->p_head, p, next); + pkgdb_pkg_list_append(db, p); free(ents[i]); } free(ents); - db->p_curr = TAILQ_FIRST(&db->p_head); + db->p_curr = pkgdb_pkg_list_first(db); db->p_count = p_count; db->dirty = 0; @@ -109,11 +110,10 @@ char *path; struct stat sb; struct pkg *p; - struct dirent *e; - struct dirent **ents; p = pkg_new(ident); path = pkgdb_pkg_path(db, p); + pkg_set_path(p, path); if (p == NULL || path == NULL) { pkg_free(p); free(path); @@ -126,32 +126,6 @@ return (NULL); } - c = scandir(path, &ents, subdir_sel, alphasort); - for (i = 0; i < c; ++i) { - s = 0; /* Reset s */ - /* Go through all the files in this package, grab the information - * that we need. */ - e = ents + i; - s = pkg_info_identify_file(e); - switch (s) { - case IS_COMMENTS: - /* Read the comments file into the comments field of this - * package. */ - break; - case IS_CONTENTS: - /* Do contents parsing stuff. Like... - p->contents = pkg_info_parse_contents_file(p, - CONTENTS_FILE); */ - break; - case IS_MTREE_DIRS: - break; - default: - /* This is an irrelevant file. */ - } - free(e); - } - - free(ents); free(path); return (p); } @@ -170,18 +144,21 @@ char * pkgdb_pkg_path(struct pkgdb *db, struct pkg *p) { + char *p_ident; char *new_path; if (db == NULL || p == NULL) { return (NULL); } - new_path = malloc(strlen(db->db_root) + strlen(p->ident) + 1); + new_path = malloc(strlen(db->db_root) + strlen(pkg_ident(p)) + 1); if (new_path == NULL) return (NULL); + + p_ident = pkg_ident(p); strcpy(new_path, db->db_root); - strcat(new_path, p->ident); + strcat(new_path, p_ident); return (new_path); } @@ -204,6 +181,32 @@ return (p); } +/* Giving myself a level of abstraction between queue and pkgdb incase I + * decide to change how the package list is done. */ + +void +pkgdb_pkg_list_init(struct pkgdb *db) { + if (db == NULL) + return; + TAILQ_INIT(&db->p_head); +} + +struct pkg * +pkgdb_pkg_list_first(struct pkgdb *db) { + if (db == NULL) + return (NULL); + + return (TAILQ_FIRST(&db->p_head)); +} + +void +pkgdb_pkg_list_append(struct pkgdb *db, struct pkg *p) { + if (db == NULL || p == NULL) + return; + + TAILQ_INSERT_TAIL(&db->p_head, p, next); +} + /* Free a hierdb. */ void ==== //depot/projects/soc2009/dforsyth_libpkg/pkgdb.h#3 (text+ko) ==== @@ -1,14 +1,18 @@ #ifndef __PKGDB_H__ #define __PKGDB_H__ -#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" +#include "pkg_info.h" +#include <sys/queue.h> + +struct pkg { + TAILQ_ENTRY(pkg) next; -#include <sys/queue.h> + char *ident; /* User given name for this pkg. */ + char *path; + + char *comment; /* Mmmmm, should be 70 or less, right? */ + struct pkg_contents *contents; +}; struct pkgdb { int dirty; /* changes have been made to this database. */ @@ -17,24 +21,17 @@ int p_count; struct pkg *p_curr; - TAILQ_HEAD(pkg_head, next) p_head; + TAILQ_HEAD(pkg_head, pkg) p_head; /* Callbacks */ /* tuuuummmmbbbllleeewwwweeeedddddd*/ }; -// struct pkg_head; -struct pkgdb *pkgdb_new_hierdb(const char *db_root); - -int pkgdb_init_hierdb(struct pkgdb *db); -struct pkg *pkgdb_read_pkg_hierdb(struct pkgdb *db, const char *ident); -struct pkg *pkgdb_next_pkg(struct pkgdb *db); - -struct pkg *pkgdb_query_pkg(struct pkgdb *db, const char *ident); - -char *pkgdb_pkg_path(struct pkgdb *db, struct pkg *p); - -void pkgdb_free_hierdb(struct pkgdb *db); -void pkgdb_free_pkg_list(struct pkgdb *db); +#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" #endif
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200905310757.n4V7vo5l023475>
