PERFORCE change 166882 for review

David Forsythe dforsyth at FreeBSD.org
Fri Jul 31 22:28:14 UTC 2009


http://perforce.freebsd.org/chv.cgi?CH=166882

Change 166882 by dforsyth at 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


More information about the p4-projects mailing list