Date: Tue, 7 Jul 2009 03:05:42 GMT From: David Forsythe <dforsyth@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 165728 for review Message-ID: <200907070305.n6735gHR069149@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=165728 Change 165728 by dforsyth@squirrel on 2009/07/07 03:05:23 Some changes to pkg_plist.h. Most of the code isn't written. Affected files ... .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#31 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#29 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.c#23 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.h#19 edit Differences ... ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#31 (text+ko) ==== @@ -24,7 +24,8 @@ char *display; char *mtree_dirs; char *required_by; - + + struct pkg_sub *psub; struct pkg_plist *plist; short dirty; @@ -225,6 +226,74 @@ return (pkg_plist_set_origin(p->plist, origin)); } +/* Retreive the short comment for this package. (Maybe consider moving + * this into the plist? */ + +const char * +pkg_comment(struct pkg *p) +{ + if (p == NULL) + arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + return (p->comment); +} + +/* Retrieve the long description for this package. */ + +const char * +pkg_description(struct pkg *p) +{ + if (p == NULL) + arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + return (p->description); +} + +/* Set the short comment for this package */ + +int +pkg_set_comment(struct pkg *p, const char *comment) +{ + char *f; + + if (p == NULL) + arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + free(p->comment); + p->comment = (comment != NULL) ? strdup(comment) : NULL; + if (p->comment == NULL) + return (PKG_MEMORY_ERR | PKG_NOT_OK); + + /* Blot out trailing \n, if it's there. */ + f = strrchr(p->comment, (int)'\n'); + if (f != NULL && *(f + 1) == '\0') + *f = '\0'; + + return (PKG_OK); +} + +/* Set the long description for this package. */ + +int +pkg_set_description(struct pkg *p, const char *description) +{ + char *f; + + if (p == NULL) + arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + free(p->description); + p->description = (description != NULL) ? strdup(description) : NULL; + if (p->description == NULL) + return (PKG_MEMORY_ERR | PKG_NOT_OK); + + f = strrchr(p->description, (int)'\n'); + if (f != NULL && *(f + 1) == '\0') + *f = '\0'; + + return (PKG_OK); +} + /* Maybe I should do these list retrievals in a fashion similar to * scandir? */ @@ -264,6 +333,9 @@ return (pkg_plist_conflicts(p->plist)); } +/* Add a file to a package. This is fairly useless at this point + * because... well, there the hell is the file coming from? */ + int pkg_add_file(struct pkg *p, const char *path, const char *md5, const char *owner, const char *group, const char *mode) @@ -303,92 +375,7 @@ return (status); } -/* Set the short comment for this package */ -int -pkg_set_comment(struct pkg *p, const char *comment) -{ - int c; - char *f; - - if (p == NULL) - arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - - free(p->comment); - p->comment = (comment != NULL) ? strdup(comment) : NULL; - if (p->comment != NULL) { - /* Blot out trailing \n, if it's there. */ - c = (int)'\n'; - f = strrchr(p->comment, c); - if (f != NULL && *(f + 1) == '\0') - *f = '\0'; - } - - 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); - - /* Yes this makes for 3 copies of the text in memory at once, but just - * until I decide how I want to handle 'dirty' packages. */ - free(p->contents); - p->contents = (contents != NULL) ? strdup(contents) : NULL; - - 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); - - free(p->description); - p->description = (description != NULL) ? strdup(description) : NULL; - - 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); - - free(p->display); - p->display = (display != NULL) ? strdup(display) : NULL; - - 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); - - free(p->mtree_dirs); - p->mtree_dirs = (mtree_dirs != NULL) ? strdup(mtree_dirs) : NULL; - - 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); - - free(p->required_by); - p->required_by = (required_by != NULL) ? strdup(required_by) : NULL; - - return (OK); -} +/* Parse the plist (contents) of a package. */ int pkg_parse_plist(struct pkg *p) @@ -407,124 +394,3 @@ status = pkg_plist_parse_contents_from_text(p->plist, p->contents); return (status); } - -/* ident and name are different, even though they might be the same. */ - -char * -pkg_comment(struct pkg *p) -{ - if (p == NULL) - arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - - return (p->comment); -} - -/* Functions to access information stored in the pkg_plist. */ - - - -char * -pkg_mtree_file(struct pkg *p) -{ - if (p == NULL) - arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - - if (pkg_parse_plist(p) != OK) - return (NULL); - return (pkg_plist_mtree_file(p->plist)); -} - -/* Other properties. */ - -int -pkg_extract_in_place(struct pkg *p) -{ - if (p == NULL) - arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - - if (pkg_parse_plist(p) != OK) - return (PKG_PARSE_NOT_OK); - - return (pkg_plist_extract_in_place(p->plist)); -} - -int -pkg_preserve(struct pkg *p) -{ - if (p == NULL) - arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - - if (pkg_parse_plist(p) != OK) - return (PKG_PARSE_NOT_OK); - - return (pkg_plist_preserve(p->plist)); -} - -int -pkg_complete(struct pkg *p) -{ - if (p == NULL) - arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - - if (pkg_parse_plist(p) != OK) - return (PKG_PARSE_NOT_OK); - - return (pkg_plist_complete(p->plist)); -} - -/* These need to be renamed. */ - -void -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); -} - -struct pkg_file * -pkg_pkg_file_list_next(struct pkg *p) -{ - if (p == NULL) - arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - - return (pkg_plist_pkg_file_list_next(p->plist)); -} - -void -pkg_pkg_dep_list_init(struct pkg *p) -{ - if (p == NULL) - arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - - return (pkg_plist_pkg_dep_list_reset(p->plist)); -} - -struct pkg_dep * -pkg_pkg_dep_list_next(struct pkg *p) -{ - if (p == NULL) - arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - - return (pkg_plist_pkg_dep_list_next(p->plist)); -} - -void -pkg_pkg_cfl_list_init(struct pkg *p) -{ - if (p == NULL) - arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - - return (pkg_plist_pkg_cfl_list_reset(p->plist)); -} - -struct pkg_cfl * -pkg_pkg_cfl_list_next(struct pkg *p) -{ - if (p == NULL) - arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); - - return (pkg_plist_pkg_cfl_list_next(p->plist)); -} - ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#29 (text+ko) ==== @@ -74,6 +74,13 @@ int pkg_set_cwd(struct pkg *p, const char *cwd); int pkg_set_origin(struct pkg *p, const char *origin); +const char *pkg_comment(struct pkg *p); +const char *pkg_description(struct pkg *p); + +int pkg_set_comment(struct pkg *p, const char *comment); +int pkg_set_description(struct pkg *p, const char *description); +/* Add mtree_dirs, display, etc, etc. */ + const char **pkg_files(struct pkg *p); const char **pkg_depends(struct pkg *p); const char **pkg_conflicts(struct pkg *p); @@ -96,6 +103,9 @@ int pkg_remove_conflict(struct pkg *p, const char *name); const char *pkg_conflict_version(struct pkg *p, const char *name); +/* TODO: Should I add a function to add names of pkgs that depend on a + * pkg? */ + /* TODO: Add installation/deinstallation routine modification... routines. */ /* pkgdb */ ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.c#23 (text+ko) ==== @@ -93,18 +93,6 @@ } int -pkg_plist_new_from_text(const char *text) -{ - int status; - struct pkg_plist *pl; - - pl = pkg_plist_new(); - status = pkg_plist_parse_contents_from_text(pl, text); - - return (status); -} - -int pkg_plist_parse_contents_from_text(struct pkg_plist *pl, const char *text) { int s; @@ -410,191 +398,3 @@ return (pl->complete); } -/* I should really just write a set of generic routine to handle this - * whole mess. */ - -/* Temporarily void. */ -void -pkg_plist_pkg_file_list_reset(struct pkg_plist *pl) -{ - /* If you init again, it clears the list. So don't. */ - pl->pkg_file_curr = NULL; -} - -struct pkg_file * -pkg_plist_pkg_file_list_next(struct pkg_plist *pl) -{ - struct pkg_file *pf; - - if (pl == NULL) - return (NULL); - - if (pl->pkg_file_curr == NULL) - pf = pkg_plist_pkg_file_list_first(pl); - else - pf = TAILQ_NEXT(pl->pkg_file_curr, next); - - if (pf != NULL) - pl->pkg_file_curr = pf; - - return (pf); -} - -void -pkg_plist_pkg_file_list_init(struct pkg_plist *pl) -{ - if (pl == NULL) - return; - - TAILQ_INIT(&pl->pkg_file_head); -} - -struct pkg_file * -pkg_plist_pkg_file_list_first(struct pkg_plist *pl) -{ - if (pl == NULL) - return (NULL); - - return (TAILQ_FIRST(&pl->pkg_file_head)); -} - -struct pkg_file * -pkg_plist_pkg_file_list_last(struct pkg_plist *pl) -{ - if (pl == NULL) - return (NULL); - - return (TAILQ_LAST(&pl->pkg_file_head, pkg_file_head)); -} - -void -pkg_plist_pkg_file_list_append(struct pkg_plist *pl, struct pkg_file *pf) -{ - if (pl == NULL || pf == NULL) - return; - - TAILQ_INSERT_TAIL(&pl->pkg_file_head, pf, next); -} - -/* pkg_dep list manipulation and access. */ -/* generalize plz. */ - -void -pkg_plist_pkg_dep_list_reset(struct pkg_plist *pl) -{ - if (pl == NULL) - return; - - pl->pkg_dep_curr = NULL; -} - -void -pkg_plist_pkg_dep_list_init(struct pkg_plist *pl) -{ - if (pl == NULL) - return; - - TAILQ_INIT(&pl->pkg_dep_head); -} - -struct pkg_dep * -pkg_plist_pkg_dep_list_last(struct pkg_plist *pl) -{ - if (pl == NULL) - arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); - - return (TAILQ_LAST(&pl->pkg_dep_head, pkg_dep_head)); -} - -void -pkg_plist_pkg_dep_list_append(struct pkg_plist *pl, struct pkg_dep *pd) -{ - if (pl == NULL || pd == NULL) - return; - - TAILQ_INSERT_TAIL(&pl->pkg_dep_head, pd, next); -} - -struct pkg_dep * -pkg_plist_pkg_dep_list_next(struct pkg_plist *pl) -{ - struct pkg_dep *pd; - - if (pl == NULL) - return (NULL); - - if (pl->pkg_dep_curr == NULL) - pd = pkg_plist_pkg_dep_list_first(pl); - else - pd = TAILQ_NEXT(pl->pkg_dep_curr, next); - - if (pd != NULL) - pl->pkg_dep_curr = pd; - - return (pd); -} - -struct pkg_dep * -pkg_plist_pkg_dep_list_first(struct pkg_plist *pl) -{ - if (pl == NULL) - arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); - - return (TAILQ_FIRST(&pl->pkg_dep_head)); -} - -void -pkg_plist_pkg_cfl_list_init(struct pkg_plist *pl) -{ - if (pl == NULL) - return; - - TAILQ_INIT(&pl->pkg_cfl_head); -} - -void -pkg_plist_pkg_cfl_list_append(struct pkg_plist *pl, struct pkg_cfl *pc) -{ - if (pl == NULL || pc == NULL) - return; - - TAILQ_INSERT_TAIL(&pl->pkg_cfl_head, pc, next); -} - -struct pkg_cfl * -pkg_plist_pkg_cfl_list_first(struct pkg_plist *pl) -{ - if (pl == NULL) - arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); - - return (TAILQ_FIRST(&pl->pkg_cfl_head)); -} - -void -pkg_plist_pkg_cfl_list_reset(struct pkg_plist *pl) -{ - if (pl == NULL) - arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); - - pl->pkg_cfl_curr = NULL; -} - -struct pkg_cfl * -pkg_plist_pkg_cfl_list_next(struct pkg_plist *pl) -{ - struct pkg_cfl *pc; - - if (pl == NULL) - arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); - - if (pl->pkg_cfl_curr == NULL) - pc = pkg_plist_pkg_cfl_list_first(pl); - else - pc = TAILQ_NEXT(pl->pkg_cfl_curr, next); - - if (pc != NULL) - pl->pkg_cfl_curr = pc; - - return (pc); -} - ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.h#19 (text+ko) ==== @@ -81,19 +81,6 @@ char *text; /* The entire plist */ - struct pkg_file *pkg_file_curr; - struct pkg_dep *pkg_dep_curr; - struct pkg_cfl *pkg_cfl_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. */ - /* No, screw them I hate them and hope they burn. */ - - TAILQ_HEAD(pkg_file_head, pkg_file) pkg_file_head; /* pkg_file list. */ - TAILQ_HEAD(pkg_dep_head, pkg_dep) pkg_dep_head; /* pkg_dep list. */ - TAILQ_HEAD(pkg_cfl_head, pkg_cfl) pkg_cfl_head; /* pkg_cfl list. */ - unsigned int pkg_file_cnt; struct pkg_file *pkg_file_list; @@ -107,22 +94,16 @@ }; struct pkg_plist *pkg_plist_new(void); +void pkg_plist_delete(struct pkg_plist *pl); +void pkg_plist_reset(struct pkg_plist *pl); 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); char *pkg_plist_cwd(struct pkg_plist *pl); char *pkg_plist_origin(struct pkg_plist *pl); @@ -132,37 +113,27 @@ int pkg_plist_preserve(struct pkg_plist *pl); int pkg_plist_complete(struct pkg_plist *pl); -void pkg_plist_pkg_file_list_init(struct pkg_plist *pl); -struct pkg_file *pkg_plist_pkg_file_list_first(struct pkg_plist *pl); -struct pkg_file *pkg_plist_pkg_file_list_last(struct pkg_plist *pl); -void pkg_plist_pkg_file_list_append(struct pkg_plist *pl, - struct pkg_file *pf); +void set_parse_state_default(struct parse_state *st); -void set_parse_state_default(struct parse_state *st); +/* pkg_file */ -void pkg_plist_delete(struct pkg_plist *pl); +int pkg_plist_add_file(struct pkg_plist *pl, const char *path, + const char *md5, const char *owner, const char *group, + const char *mode); +int pkg_plist_remove_file(struct pkg_plist *pl, const char *path); +const char **pkg_plist_files(struct pkg_plist *pl); /* pkg_dep */ -void pkg_plist_pkg_dep_list_init(struct pkg_plist *pl); -struct pkg_dep *pkg_plist_pkg_dep_list_last(struct pkg_plist *pl); - -void pkg_plist_pkg_dep_list_append(struct pkg_plist *pl, - struct pkg_dep *pd); +int pkg_plist_add_depend(struct pkg_plist *pl, const char *name, + const char *origin); +int pkg_plist_remove_depend(struct pkg_plist *pl, const char *name); +const char **pkg_plist_depends(struct pkg_plist *pl); -void pkg_plist_pkg_dep_list_reset(struct pkg_plist *pl); -struct pkg_dep *pkg_plist_pkg_dep_list_next(struct pkg_plist *pl); -struct pkg_dep *pkg_plist_pkg_dep_list_first(struct pkg_plist *pl); - /* pkg_cfl */ -void pkg_plist_pkg_cfl_list_init(struct pkg_plist *pl); - -void pkg_plist_pkg_cfl_list_append(struct pkg_plist *pl, - struct pkg_cfl *pc); - -void pkg_plist_pkg_cfl_list_reset(struct pkg_plist *pl); -struct pkg_cfl *pkg_plist_pkg_cfl_list_next(struct pkg_plist *pl); -struct pkg_cfl *pkg_plist_pkg_cfl_list_first(struct pkg_plist *pl); +int pkg_plist_add_conflict(struct pkg_plist *pl, const char *name); +int pkg_plist_remove_conflict(struct pkg_plist *pl, const char *name); +const char **pkg_plist_conflicts(struct pkg_plist *pl); #endif
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907070305.n6735gHR069149>