From owner-p4-projects@FreeBSD.ORG Fri Jul 31 22:28:13 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7D2FC1065673; Fri, 31 Jul 2009 22:28:13 +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 234F21065670 for ; Fri, 31 Jul 2009 22:28:13 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 108B68FC16 for ; Fri, 31 Jul 2009 22:28:13 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6VMSCFn092068 for ; Fri, 31 Jul 2009 22:28:12 GMT (envelope-from dforsyth@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6VMSCg9092066 for perforce@freebsd.org; Fri, 31 Jul 2009 22:28:12 GMT (envelope-from dforsyth@FreeBSD.org) Date: Fri, 31 Jul 2009 22:28:12 GMT Message-Id: <200907312228.n6VMSCg9092066@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to dforsyth@FreeBSD.org using -f From: David Forsythe To: Perforce Change Reviews Cc: Subject: PERFORCE change 166882 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 31 Jul 2009 22:28:14 -0000 http://perforce.freebsd.org/chv.cgi?CH=166882 Change 166882 by dforsyth@squirrel on 2009/07/31 22:27:14 Fix parse loop, dump everything. Affected files ... .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#40 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#35 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db.c#8 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb.h#6 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_read.c#2 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.c#2 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.h#2 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest_plist.c#2 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.c#15 edit .. //depot/projects/soc2009/dforsyth_libpkg/pkg_info/main.c#26 edit Differences ... ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#40 (text+ko) ==== @@ -15,7 +15,6 @@ #include "pkg.h" void pkg_check_magic(struct pkg *p, const char *where); -static int pkg_set_field(char *dest, const char *src); static int pkg_read_pkg_element_from_db(struct pkg *p, int element); static int pkg_write_pkg_element_to_db(struct pkg *p, int element); static int pkg_parse_manifest(struct pkg *p); @@ -214,6 +213,24 @@ return (p->description); } +const char * +pkg_required_by(struct pkg *p) +{ + if (p->in_db != NULL) + pkg_read_pkg_element_from_db(p, PKG_ELEM_REQUIRED_BY); + + return ((const char *)p->required_by); +} + +const char * +pkg_display(struct pkg *p) +{ + if (p->in_db != NULL) + pkg_read_pkg_element_from_db(p, PKG_ELEM_DISPLAY); + + return ((const char *)p->display); +} + /* Set the comment for this package. */ int @@ -409,6 +426,34 @@ return ((const char *)pkg_depend_origin(pd)); } +const char * +pkg_mtree_file(struct pkg *p) +{ + pkg_parse_manifest(p); + return ((const char *)pkg_manifest_mtree_file(p->pm)); +} + +int +pkg_extract_in_place(struct pkg *p) +{ + pkg_parse_manifest(p); + return (pkg_manifest_extract_in_place(p->pm)); +} + +int +pkg_preserve(struct pkg *p) +{ + pkg_parse_manifest(p); + return (pkg_manifest_preserve(p->pm)); +} + +int +pkg_complete(struct pkg *p) +{ + pkg_parse_manifest(p); + return (pkg_manifest_complete(p->pm)); +} + /* Wrap _write_pkg_element. */ static int ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#35 (text+ko) ==== @@ -50,6 +50,7 @@ int pkg_set_required_by(struct pkg *p, const char *required_by); int pkg_clone(struct pkg *src, struct pkg *dest); +int pkg_force_parse_manifest(struct pkg *p); /* Add mtree_dirs, display, etc, etc. */ @@ -57,10 +58,10 @@ const char *const *pkg_depends(struct pkg *p); const char *const *pkg_conflicts(struct pkg *p); -int pkg_add_file(struct pkg *p, const char *path, const char *cwd, +int pkg_insert_pkg_file(struct pkg *p, const char *path, const char *cwd, const char *group, const char *md5, const char *mode, const char *owner); -int pkg_remove_file(struct pkg *p, const char *path); +int pkg_delete_pkg_file(struct pkg *p, const char *path); const char *pkg_pkg_file_cwd(struct pkg *p, const char *path); const char *pkg_pkg_file_group(struct pkg *p, const char *path); const char *pkg_pkg_file_md5(struct pkg *p, const char *path); @@ -76,6 +77,14 @@ int pkg_remove_conflict(struct pkg *p, const char *name); int pkg_conflict_get_version(struct pkg *p, const char *name); +const char *pkg_mtree_file(struct pkg *p); + +int pkg_extract_in_place(struct pkg *p); +int pkg_preserve(struct pkg *p); +int pkg_complete(struct pkg *p); + +const char *pkg_required_by(struct pkg *p); + /* pkg_db */ struct pkg_db *pkg_db_new(void); ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db.c#8 (text+ko) ==== @@ -63,7 +63,7 @@ db->pkg_db_db_open = pkg_db_hierdb_db_open; /* db->pkg_db_db_read_pkg_from_db = pkg_db_hierdb_read_pkg_from_db; */ db->pkg_db_db_read_pkg_element = pkg_db_hierdb_read_pkg_element; - db->pkg_db_db_write_pkg_element = pkg_db_hierdb_write_pkg_element; + /* db->pkg_db_db_write_pkg_element = pkg_db_hierdb_write_pkg_element; */ /* db->pkg_db_db_close = pkg_db_hierdb_db_close; */ break; default: @@ -138,7 +138,6 @@ int pkg_db_insert_pkg_entry(struct pkg_db *db, struct pkg *p) { - int i; int status; char **list; struct pkg *entries; ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb.h#6 (text+ko) ==== @@ -17,6 +17,8 @@ int pkg_db_hierdb_read_pkg_from_db(struct pkg_db *db, struct pkg *p); +int pkg_db_hierdb_file_exists(struct pkg_db *db, struct pkg *p, const char *filename); + // int pkg_db_hierdb_read_pkg_element(struct pkg_db *db, struct pkg *p, int element); #endif ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_read.c#2 (text+ko) ==== @@ -22,21 +22,25 @@ FILE *pkg_db_hierdb_open_file_stream_read(struct pkg_db *db, struct pkg *p, const char *filename); -int pkg_db_hierdb_read_comment_to_pkg(struct pkg_db *db, struct pkg *p); + +static char *pkg_db_hierdb_read_file_to_text(struct pkg_db *db, struct pkg *p, + const char *filename); + +static int pkg_db_hierdb_read_comment_to_pkg(struct pkg_db *db, struct pkg *p); + +static int pkg_db_hierdb_read_description_to_pkg(struct pkg_db *db, struct pkg *p); -int pkg_db_hierdb_read_description_to_pkg(struct pkg_db *db, struct pkg *p); +static int pkg_db_hierdb_read_display_to_pkg(struct pkg_db *db, struct pkg *p); -int pkg_db_hierdb_read_display_to_pkg(struct pkg_db *db, struct pkg *p); +static int pkg_db_hierdb_read_mtree_dirs_to_pkg(struct pkg_db *db, struct pkg *p); -int pkg_db_hierdb_read_mtree_dirs_to_pkg(struct pkg_db *db, struct pkg *p); +static int pkg_db_hierdb_read_required_by_to_pkg(struct pkg_db *db, struct pkg *p); -int pkg_db_hierdb_read_pkg_manifest_to_pkg(struct pkg_db *db, struct pkg *p); +static int pkg_db_hierdb_read_pkg_manifest_to_pkg(struct pkg_db *db, struct pkg *p); int pkg_db_hierdb_read_pkg_element(struct pkg_db *db, struct pkg *p, int element) { - FILE *file; - char *text; int status; status = OK; @@ -84,7 +88,7 @@ return (file); } -char * +static char * pkg_db_hierdb_read_file_to_text(struct pkg_db *db, struct pkg *p, const char *filename) { @@ -94,7 +98,7 @@ char *path; char *text; struct stat sb; - + status = OK; dir = path_build(db->db_root, p->ident); path = path_build(dir, filename); @@ -128,13 +132,14 @@ } text[sb.st_size] = '\0'; + return (text); } /* These will not be staying this way. For now, assume that all files are where we * want them to be, and assume a PLIST manifest. */ -int +static int pkg_db_hierdb_read_comment_to_pkg(struct pkg_db *db, struct pkg *p) { char *text; @@ -152,7 +157,7 @@ return (OK); } -int +static int pkg_db_hierdb_read_description_to_pkg(struct pkg_db *db, struct pkg *p) { char *text; @@ -170,7 +175,7 @@ return (OK); } -int +static int pkg_db_hierdb_read_display_to_pkg(struct pkg_db *db, struct pkg *p) { char *text; @@ -188,7 +193,7 @@ return (OK); } -int +static int pkg_db_hierdb_read_mtree_dirs_to_pkg(struct pkg_db *db, struct pkg *p) { char *text; @@ -206,7 +211,7 @@ return (OK); } -int +static int pkg_db_hierdb_read_required_by_to_pkg(struct pkg_db *db, struct pkg *p) { char *text; @@ -224,9 +229,10 @@ return (OK); } -int +static int pkg_db_hierdb_read_pkg_manifest_to_pkg(struct pkg_db *db, struct pkg *p) { + char *text; FILE *manifest_stream; int manifest_type; int status; @@ -239,7 +245,7 @@ /* Open a stream. */ manifest_stream = pkg_db_hierdb_open_file_stream_read(db, p, CONTENTS_FILE); - + status = OK; switch(manifest_type) { case (PLIST): status = pkg_manifest_parse_plist_from_stream(p->pm, manifest_stream); @@ -247,7 +253,6 @@ default: break; } - fclose(manifest_stream); return (status); ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.c#2 (text+ko) ==== @@ -131,6 +131,24 @@ } int +pkg_manifest_extract_in_place(struct pkg_manifest *pm) +{ + return (pm->extract_in_place); +} + +int +pkg_manifest_preserve(struct pkg_manifest *pm) +{ + return (pm->preserve); +} + +int +pkg_manifest_complete(struct pkg_manifest *pm) +{ + return (pm->complete); +} + +int pkg_manifest_set_cwd(struct pkg_manifest *pm, const char *cwd) { pkg_manifest_check_magic(pm, __func__); ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.h#2 (text+ko) ==== @@ -101,6 +101,12 @@ const char *pkg_manifest_mtree_file(struct pkg_manifest *pm); +int pkg_manifest_extract_in_place(struct pkg_manifest *pm); + +int pkg_manifest_preserve(struct pkg_manifest *pm); + +int pkg_manifest_complete(struct pkg_manifest *pm); + int pkg_manifest_set_cwd(struct pkg_manifest *pm, const char *cwd); int pkg_manifest_set_revision(struct pkg_manifest *pm, const char *rev); ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest_plist.c#2 (text+ko) ==== @@ -117,15 +117,17 @@ line = buff; line[p - buff] = '\0'; status = pkg_manifest_parse_plist_parse_line(pm, line, &st); + /* if (status != OK) { pkg_manifest_reset(pm); free(buff); return (status); } + */ buff = p + 1; } } - free(buff); + // free(buff); return (0); } @@ -202,10 +204,10 @@ int argc; int cmd_id; int status; - char cmd[13]; + char cmd[FILENAME_MAX]; char argument[LINE_MAX]; char isolate[FILENAME_MAX]; - char comment[20]; + char comment[FILENAME_MAX]; char trail[FILENAME_MAX]; /* Last file and depend. */ @@ -213,7 +215,6 @@ struct pkg_depend *lpd; status = OK; - argc = sscanf(line, "%s %[^\n]", cmd, argument); if (argc == 1 && line[0] != PLIST_PRE_CMD) { cmd_id = PM_FILE; ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.c#15 (text+ko) ==== @@ -115,7 +115,10 @@ const char *comment; const char *name; const char *origin; - /* const char *mtree_file; */ + const char *mtree_file; + const char *reqdby; + const char *display; + const char *desc; const char *cwd; const char *path; @@ -133,8 +136,10 @@ name = pkg_name(p); origin = pkg_origin(p); - /* mtree_file = pkg_mtree_file(p); */ - + mtree_file = pkg_mtree_file(p); + reqdby = pkg_required_by(p); + display = pkg_display(p); + desc = pkg_description(p); fprintf(stream, "IDENT: %s\n\n", (ident != NULL ? ident : BAD_OR_UNKNOWN_VALUE)); @@ -145,7 +150,7 @@ (name != NULL ? name : BAD_OR_UNKNOWN_VALUE)); fprintf(stream, "\torigin: %s\n", (origin != NULL ? origin : BAD_OR_UNKNOWN_VALUE)); - /* + fprintf(stream, "\tmtree file: %s\n", (mtree_file != NULL ? mtree_file : BAD_OR_UNKNOWN_VALUE)); fprintf(stream, "\textract in place: %s\n", @@ -154,7 +159,7 @@ (pkg_preserve(p) ? "YES" : "NO")); fprintf(stream, "\tcomplete: %s\n", (pkg_complete(p) ? "YES" : "NO")); - */ + fprintf(stream, "\tfiles:\n"); files = pkg_files(p); @@ -197,4 +202,16 @@ name = conflict; fprintf(stream, "\t\t%s\n", name); } + + fprintf(stream, "\nrequired by:\n"); + fprintf(stream, "%s\n", + (reqdby != NULL ? reqdby : "None.")); + + fprintf(stream, "\ndisplay:\n"); + fprintf(stream, "%s\n", + (display != NULL ? display : "None")); + + fprintf(stream, "\ndescription:\n"); + fprintf(stream, "%s\n", + (desc != NULL ? desc : "None")); } ==== //depot/projects/soc2009/dforsyth_libpkg/pkg_info/main.c#26 (text+ko) ==== @@ -219,13 +219,8 @@ keys = pkg_db_all_pkg_keys(db); - FOREACH_PKG_IN_DB(p, db, keys) { - if (!opt_all) - print_pkg_information(p); - else { - printf("pkg: "); pkg_dump(p, stdout); - } - } + FOREACH_PKG_IN_DB(p, db, keys) + print_pkg_information(p); } void