PERFORCE change 164116 for review

David Forsythe dforsyth at FreeBSD.org
Thu Jun 11 16:06:23 UTC 2009


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

Change 164116 by dforsyth at squirrel on 2009/06/11 16:05:42

	Changed pkg.h to reflect current API design.  Moving pkgdb_sub into
	pkg.

Affected files ...

.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#14 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#14 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_private.h#9 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb_hierdb_pkgdb_sub.c#3 edit

Differences ...

==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#14 (text+ko) ====

@@ -10,6 +10,22 @@
 #include "pkg_private.h"
 #include "pkg.h"
 
+struct pkg {
+	char *ident; /* User given name for this pkg. */
+	char *comment_text;
+	char *contents_text;
+	char *desc_text;
+	char *display_text;
+	char *mtree_dirs_text;
+	char *required_by_text;
+
+	struct pkg_plist plist;
+
+	TAILQ_ENTRY(pkg) next;
+	short dirty;
+	/* Add an owner field? */
+};
+
 /* Create a new pkg. */
 
 struct pkg *
@@ -50,46 +66,15 @@
  * the passed pkg_plist for _set_pkg_plist. */
 
 /* Set the short comment for this package */
-struct pkg *
+int
 pkg_set_comment(struct pkg *p, const char *comment)
 {
-	int c;
-	char *f;
-
 	if (p == NULL)
-		return (p);
+		arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT);
 
-	if (comment == NULL) {
-		/* embrace it... */
-		p->comment = NULL;
-		return (p);
-	}
+	p->comment_text = comment;
 
-	p->comment = strdup(comment);
-	if (p->comment == NULL) {
-		/* Something bad happened...  I should probably let people know
-		 * about it... */
-		return (p);
-	}
-	
-	/* Blot out a trailing '\n'. */
-	c = (int) '\n';
-	f = strrchr(p->comment, c);
-	if (f != NULL)
-		*f = '\0';
-
-	return (p);
-}
-
-struct pkg *
-pkg_set_pkg_plist(struct pkg *p, struct pkg_plist *pl)
-{
-	if (p == NULL)
-		return (NULL);
-
-	p->plist = pl;
-	
-	return (p);
+	return (PKG_OK);
 }
 
 /* ident and name are different, even though they might be the same. */
@@ -97,7 +82,7 @@
 pkg_ident(struct pkg *p)
 {
 	if (p == NULL)
-		return (NULL);
+		arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT);
 
 	return (p->ident);
 }
@@ -106,61 +91,52 @@
 pkg_comment(struct pkg *p)
 {
 	if (p == NULL)
-		return (NULL);
+		arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT);
 
 	return (p->comment);
 }
 
-/* Function to access information stored in the pkg_plist. */
+/* Functions to access information stored in the pkg_plist. */
 char *
 pkg_name(struct pkg *p)
 {
-	char *name;
-	
-	name = pkg_plist_name(p->plist);
-
-	return (name);
+	return (pkg_plist_name(&p->plist));
 }
 
 char *
 pkg_cwd(struct pkg *p)
 {
-	char *cwd;
-
-	cwd = pkg_plist_cwd(p->plist);
-
-	return (cwd);
+	if (p == NULL)
+		arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT);
+	
+	return (pkg_plist_cwd(p->plist));
 }
 
-/* Doesn't work correctly yet. */
 char *
 pkg_origin(struct pkg *p)
 {
-	char *origin;
-
-	origin = pkg_plist_origin(p->plist);
-
-	return (origin);
+	if (p == NULL)
+		arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT);
+	
+	return (pkg_plist_origin(p->plist))
 }
 
-/* Temporarily void. */
 void
 pkg_file_list_init(struct pkg *p)
 {
 	if (p == NULL)
-		return;
+		arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT);
 
 	pkg_plist_pkg_file_list_reset(p->plist);
 }
 
-/* Temporarily char. */
 struct pkg_file *
 pkg_file_list_next(struct pkg *p)
 {
 	struct pkg_file *pf;
 	
 	if (p == NULL)
-		return (NULL);
+		arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT);
 
 	pf = pkg_plist_pkg_file_list_next(p->plist);
 	

==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#14 (text+ko) ====

@@ -10,40 +10,32 @@
 
 struct pkg_file;
 
+struct pkg_file *pkg_file_new();
+
 const char *pkg_file_path(struct pkg_file *pf);
 
 const char *pkg_file_md5(struct pkg_file *pf);
 
-/* These might not be client accessible since they're really only useful
- * when reading a plist.  A client creating a plist should already have
- * this information. */
 const char *pkg_file_owner(struct pkg_file *pf);
 
 const char *pkg_file_group(struct pkg_file *pf);
 
+int pkg_file_set_path(struct pkg_file *pf, const char *path);
 
-/* TODO: Get pkg_plist out of here. */
+int pkg_file_set_md5(struct pkg_file *pf, const char *md5);
 
-/* pkg_plist */
+int pkg_file_set_owner(struct pkg_file *pf, const char *owner);
 
-struct pkg_plist;
+int pkg_file_set_group(struct pkg_file *pf, const char *group);
 
-struct pkg_plist *pkg_plist_new(void);
+/* pkg */
 
-struct pkg_plist *pkg_plist_new_from_text(const char *text);
-
-/* pkg */
+/* Add mtree stuff later. */
 
 struct pkg;
 
 struct pkg *pkg_new(const char *ident);
 
-struct pkg *pkg_set_path(struct pkg *p, const char *path);
-
-struct pkg *pkg_set_comment(struct pkg *p, const char *comment);
-
-struct pkg *pkg_set_pkg_plist(struct pkg *p, struct pkg_plist *pl);
-
 char *pkg_ident(struct pkg *p);
 
 char *pkg_name(struct pkg *p);
@@ -54,30 +46,58 @@
 
 char *pkg_comment(struct pkg *p);
 
-void pkg_file_list_init(struct pkg *p);
+char *pkg_description(struct pkg *p);
+
+char *pkg_display(struct pkg *p);
+
+int pkg_set_ident(struct pkg *p, const char *ident);
+
+int pkg_set_name(struct pkg *p, const char *name);
+
+int pkg_set_cwd(struct pkg *p, const char *cwd);
+
+int pkg_set_orgin(struct pkg *p, const char *orgin);
+
+int pkg_set_comment(struct pkg *p, const char *comment);
+
+int pkg_set_description(struct pkg *p, const char *description);
+
+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);
+
+int pkg_pkg_file_list_reset(struct pkg *p);
+
+int pkg_pkg_file_add(struct pkg *p, struct pkg_file *pf);
 
-struct pkg_file *pkg_file_list_next(struct pkg *p);
+int pkg_pkg_file_remove(struct pkg *p, struct pkg_file *pf);
 
-void pkg_free(struct pkg *p);
+void pkg_delete(struct pkg *p);
 
 /* pkgdb */
 
 struct pkgdb;
 
-struct pkgdb *pkgdb_read_db_hierdb(const char *db_root);
+struct pkgdb *pkgdb_new(); /* Should eventually take a type argument. */
+
+int pkgdb *pkgdb_db_open(struct pkgdb *db, const char *db_root);
 
-int pkgdb_init_db_hierdb(struct pkgdb *db);
+int pkgdb *pkgdb_db_init(struct pkgdb *db);
 
-struct pkg *pkgdb_read_pkg_hierdb(struct pkgdb *db, const char *ident);
+int pkgdb *pkgdb_db_close(struct pkgdb *db);
 
-struct pkg *pkgdb_next_pkg(struct pkgdb *db);
+int pkgdb_pkg_next(struct pkgdb *db, struct pkg *p);
 
-struct pkg *pkgdb_curr_pkg(struct pkgdb *db);
+int pkgdb_pkg_get(struct pkgdb *db, struct pkg *p, const char *ident);
 
-struct pkg *pkgdb_query_pkg(struct pkgdb *db, const char *ident);
+#if 0
+int pkgdb_pkg_put(struct pkgdb *db, struct pkg *p);
 
-char *pkgdb_pkg_path(struct pkgdb *db, struct pkg *p);
+int pkgdb_db_sync(struct pkgdb *db);
+#endif
 
-void pkgdb_free_hierdb(struct pkgdb *db);
+void pkgdb_delete(struct pkgdb *db);
 
 #endif

==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_private.h#9 (text+ko) ====

@@ -8,12 +8,5 @@
 #define MTREE_DIRS_FILE	"+MTREE_DIRS"
 #define REQUIRED_BY_FILE	"+REQUIRED_BY"
 
-struct pkg {
-	char *ident; /* User given name for this pkg. */
-	char *comment; /* Mmmmm, should be 70 or less, right? */
-	struct pkg_plist *plist;
-
-	TAILQ_ENTRY(pkg) next;
-};
 
 #endif

==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb_hierdb_pkgdb_sub.c#3 (text+ko) ====

@@ -138,6 +138,7 @@
 		return;
 	
 	free(dbs->ident);
+	free(dbs->path);
 	free(dbs->comment_text);
 	free(dbs->contents_text);
 	free(dbs->desc_text);
@@ -145,6 +146,7 @@
 	free(dbs->mtree_dirs_text);
 	free(dbs->required_by_text);
 	dbs->ident = NULL;
+	dbs->path = NULL;
 	dbs->comment_text = NULL;
 	dbs->contents_text = NULL;
 	dbs->desc_text = NULL;


More information about the p4-projects mailing list