Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Jun 2009 05:42:13 GMT
From:      David Forsythe <dforsyth@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 164928 for review
Message-ID:  <200906230542.n5N5gDId042899@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=164928

Change 164928 by dforsyth@squirrel on 2009/06/23 05:41:58

	Conflict list is built.

Affected files ...

.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_cfl.c#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_cfl.h#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.c#17 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.h#14 edit

Differences ...

==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_cfl.c#2 (text+ko) ====

@@ -10,13 +10,6 @@
 
 /* Conflicts. */
 
-/* Yes, I'm that lazy. */
-struct pkg_cfl {
-	char *name;
-
-	TAILQ_ENTRY(pkg_cfl) next;
-};
-
 struct pkg_cfl *
 pkg_cfl_new()
 {

==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_cfl.h#2 (text+ko) ====

@@ -1,7 +1,15 @@
 #ifndef __PKG_CFL_H__
 #define __PKG_CFL_H__
 
-struct pkg_cfl;
+/* Yes, I'm that lazy. */
+struct pkg_cfl {
+	char *name;	
+	int version;
+
+	TAILQ_ENTRY(pkg_cfl) next;
+};
+
+struct pkg_cfl *pkg_cfl_new(void);
 
 int pkg_cfl_set_name(struct pkg_cfl *pc, const char *name);
 

==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.c#17 (text+ko) ====

@@ -10,6 +10,7 @@
 #include <limits.h>
 
 #include "pkg_util.h"
+#include "pkg_cfl.h"
 #include "pkg_dep.h"
 #include "pkg_file.h"
 #include "pkg_plist.h"
@@ -117,6 +118,8 @@
 	textp = strdup(text);
 	if (textp == NULL)
 		return (MEMORY_ERR);
+	/* Once parsed this is actually a leak because we lose track of the
+	 * commands. */
 
 	pl->text = textp;	
 
@@ -125,6 +128,7 @@
 	 * worrying about ruining other instances of a package. */
 	pkg_plist_pkg_file_list_init(pl);
 	pkg_plist_pkg_dep_list_init(pl);
+	pkg_plist_pkg_cfl_list_init(pl);
 	set_parse_state_default(&st);
 	for (p = textp; *p != '\0'; p++) {
 		if (*p == '\n') {
@@ -169,6 +173,7 @@
 	char *sep;
 	struct pkg_file *pf;
 	struct pkg_dep *pd;
+	struct pkg_cfl *pc;
 
 	if (line == NULL)
 		return (-1);
@@ -268,19 +273,18 @@
 			}
 			st->last_elem = PLIST_COMMENT;
 		} else if (strcmp(command, PLIST_CMD_PKGDEP) == 0) {
+			/* I should really be checking the name setting return values
+			 * for errors. */
 			pd = pkg_dep_new();
 			pkg_dep_set_name(pd, argument);
 			pkg_plist_pkg_dep_list_append(pl, pd);
 			st->last_elem = PLIST_PKGDEP;
-		} 
-#if 0
-		else if (strcmp(comment, PLIST_CMD_CONFLICTS) == 0) {
+		} else if (strcmp(command, PLIST_CMD_CONFLICTS) == 0) {
 			pc = pkg_cfl_new();
-			pc = pkg_cfl_set_name(pc, argument);
-			pkg_plist_pkg_cfl_list_append(pl, pd);
+			pkg_cfl_set_name(pc, argument);
+			pkg_plist_pkg_cfl_list_append(pl, pc);
 			st->last_elem = PLIST_CONFLICTS;
 		}
-#endif
 #if 0
 		else if (strcmp(command, PLIST_CMD_NOINST) == 0) {
 			if ((sep = strchr(argument, ' ')) != NULL)
@@ -530,3 +534,21 @@
 	
 	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);
+}

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

@@ -21,7 +21,7 @@
 	PLIST_MTREE,
 	PLIST_DISPLAY,
 	PLIST_PKGDEP,
-	PLIST_CONLICTS,
+	PLIST_CONFLICTS,
 	PLIST_FILE,
 	PLIST_UNKNOWN
 };
@@ -142,4 +142,10 @@
 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);
 #endif



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906230542.n5N5gDId042899>