PERFORCE change 185272 for review

David Forsythe dforsyth at FreeBSD.org
Sun Oct 31 16:33:15 UTC 2010


http://p4web.freebsd.org/@@185272?ac=10

Change 185272 by dforsyth at skunk on 2010/10/31 16:32:24

	Put conflicts back in.

Affected files ...

.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/Makefile#8 edit
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/conflict.c#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/conflict.h#1 add
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_database_directorydb.c#8 edit
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_database_directorydb.h#8 edit
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_plist.c#7 edit
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_plist.h#6 edit
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg.c#11 edit
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg.h#9 edit
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_internal.h#8 edit
.. //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_types.h#3 edit
.. //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_info/pkg_info.c#7 edit

Differences ...

==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/Makefile#8 (text+ko) ====

@@ -17,7 +17,8 @@
 	util.c \
 	file.c \
 	depend.c \
-	reqby.c
+	reqby.c \
+	conflict.c 
 
 
 CFLAGS+=  -std=c99

==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_database_directorydb.c#8 (text+ko) ====

@@ -60,9 +60,10 @@
 };
 
 #define CONTENTS	0x00000001
-#define DESCRIPTION     0x00000002
-#define COMMENT	 0x00000004
-#define DISPLAY	 0x00000008
+#define DESCRIPTION	0x00000002
+#define COMMENT		0x00000004
+#define DISPLAY		0x00000008
+#define REQUIRED_BY	0x00000008
 
 static struct pkg_info {
 	uint32_t info_mask;
@@ -73,6 +74,7 @@
 	{ DESCRIPTION, FBSD_METANAME_DESCRIPTION, "+DESC" },
 	{ COMMENT, FBSD_METANAME_COMMENT, "+COMMENT" },
 	{ DISPLAY, FBSD_METANAME_DISPLAY, "+DISPLAY" },
+	{ REQUIRED_BY, FBSD_METANAME_REQUIRED_BY, "+REQUIRED_BY" },
 	{ 0, NULL, NULL },
 };
 
@@ -80,17 +82,25 @@
 				struct pkg *, uint32_t);
 int			 fbsd_directorydb_finish(struct pkg_db *,
 				struct pkg *);
-static char		     *read_file(const char *);
-static int		       _read_plist_cmp(struct _read_plist *,
+static char		*read_file(const char *);
+static int		 _read_plist_cmp(struct _read_plist *,
 				struct _read_plist *);
-static int		       dselect(const struct dirent *);
-static void		      fbsd_directorydb_pkg_setup(struct pkg_db *, 
+static int		 dselect(const struct dirent *);
+static void		 fbsd_directorydb_pkg_setup(struct pkg_db *,
 				struct pkg *, const char *);
 
 static int		 fbsd_directorydb_read_name(struct pkg *);
 static int		 fbsd_directorydb_read_origin(struct pkg *);
+static int		 fbsd_directorydb_read_format_revision(struct pkg *);
+
+static int 		 fbsd_directorydb_read_conflicts(struct pkg *);
+static int 		 fbsd_directorydb_read_depends(struct pkg *);
+static int 		 fbsd_directorydb_read_files(struct pkg *);
+
+static int		 fbsd_directorydb_read_reqbys(struct pkg *);
+
 static int		 fbsd_directorydb_read_comment(struct pkg *);
-static int		 fbsd_directorydb_read_format_revision(struct pkg *);
+
 static int		 fbsd_directorydb_read_description(struct pkg *);
 
 RB_GENERATE_STATIC(plist_head, _read_plist, entry, _read_plist_cmp);
@@ -213,18 +223,26 @@
 	pkg->read_name = fbsd_directorydb_read_name;
 	pkg->read_origin = fbsd_directorydb_read_origin;
 	pkg->read_format_revision = fbsd_directorydb_read_format_revision;
+
+	pkg->read_conflicts = fbsd_directorydb_read_conflicts;
+	pkg->read_depends = fbsd_directorydb_read_depends;
+	pkg->read_files = fbsd_directorydb_read_files;
 	
+	pkg->read_reqbys = fbsd_directorydb_read_reqbys;
+
 	pkg->read_comment = fbsd_directorydb_read_comment;
 
 	pkg->read_description = fbsd_directorydb_read_description;
 
-	pkg->add_file = fbsd_directorydb_add_file;
 	
-	pkg->files = malloc(sizeof(*pkg->files));
-	TAILQ_INIT(pkg->files);
+	pkg->conflicts = NULL;
+	pkg->depends = NULL;
+	pkg->files = NULL;
+
+	pkg->reqbys = NULL;
 	
-	pkg->depends = malloc(sizeof(*pkg->depends));
-	TAILQ_INIT(pkg->depends);
+	pkg->add_conflict = fbsd_directorydb_add_conflict;
+	pkg->add_file = fbsd_directorydb_add_file;
 }
 
 struct pkg_list *
@@ -237,7 +255,9 @@
 	struct pkg_list *list;
 
 	d = db->internal;
-
+	
+	/* XXX: Since I'm only doing this in _add, go back to fts for the speed.
+	 * */
 	c = scandir(d->path, &ents, dselect, alphasort);
 	if (c < 0) {
 		return (NULL);
@@ -268,6 +288,16 @@
 	return (NULL);
 }
 
+struct pkg_conflict *
+fbsd_directorydb_add_conflict(struct pkg *pkg, const char *expr,
+	const char *version)
+{
+	(void)pkg;
+	(void)expr;
+	(void)version;
+	return (NULL);
+}
+
 int
 fbsd_directorydb_contains(struct pkg_db *db, const char *key)
 {
@@ -352,7 +382,14 @@
 READ_FUNCTION(fbsd_directorydb_read_name, CONTENTS);
 READ_FUNCTION(fbsd_directorydb_read_origin, CONTENTS);
 READ_FUNCTION(fbsd_directorydb_read_format_revision, CONTENTS);
+READ_FUNCTION(fbsd_directorydb_read_files, CONTENTS);
+READ_FUNCTION(fbsd_directorydb_read_conflicts, CONTENTS);
+READ_FUNCTION(fbsd_directorydb_read_depends, CONTENTS);
+
+READ_FUNCTION(fbsd_directorydb_read_reqbys, REQUIRED_BY);
+
 READ_FUNCTION(fbsd_directorydb_read_comment, COMMENT);
+
 READ_FUNCTION(fbsd_directorydb_read_description, DESCRIPTION);
 
 static int
@@ -399,9 +436,8 @@
 				data[sb.st_size] = '\0';
 				/* We don't like the trailing new line we get
 				 * from some files. */
-				if (data[sb.st_size - 1] == '\n') {
+				if (data[sb.st_size - 1] == '\n')
 					data[sb.st_size - 1] = '\0';
-				}
 			}
 		}
 		close(fd);

==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_database_directorydb.h#8 (text+ko) ====

@@ -35,6 +35,9 @@
 struct pkg_file	 *fbsd_directorydb_add_file(struct pkg *, const char *,
 			const char *);
 
+struct pkg_conflict	*fbsd_directorydb_add_conflict(struct pkg *,
+				const char *, const char *);
+
 /* Returns a pkg_file_list of all files in a package. */
 struct pkg_file_list    *fbsd_directorydb_files(struct pkg *);
 

==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_plist.c#7 (text+ko) ====

@@ -19,8 +19,10 @@
 #include "pkg_internal.h"
 #include "freebsd_plist.h"
 
+#include "conflict.h"
 #include "file.h"
 #include "depend.h"
+#include "reqby.h"
 
 #include "util.h"
 
@@ -115,6 +117,7 @@
 	struct pkg *pkg;
 	struct pkg_file *current_file;
 	struct pkg_depend *current_dep;
+	struct pkg_conflict *current_conflict;
 };
 
 /* CONTENTS parsers functions. */
@@ -180,11 +183,6 @@
 	return (PKG_NOT_OK);
 }
 
-#define PLDICT_GET_OR_CREATE_LIST_PROPERTY(root, new, pname)	    \
-if ((new = pkg_property_dict_get_property(root, pname)) == NULL) {      \
-	new = pkg_property_list_create(root, pname);		    \
-}								       \
-
 /* Initialize a parse state structure and property list for parsing CONTENTS.
  * We take care of creating the different lists in here so that we don't have to
  * check for them everytime we want to add a property. */
@@ -194,6 +192,7 @@
 {
 	ps->current_file = NULL;
 	ps->current_dep = NULL;
+	ps->current_conflict = NULL;
 
 	ps->ignore = 0;
 	ps->line_number = 0;
@@ -201,6 +200,15 @@
 	ps->pkg = pkg;
 	
 	strcpy(ps->cwd, CWD_DEFAULT);
+
+	/* Ready the pkg. */
+	pkg->conflicts = calloc(1, sizeof(*pkg->conflicts));
+	pkg->depends = calloc(1, sizeof(*pkg->depends));
+	pkg->files = calloc(1, sizeof(*pkg->files));
+
+	TAILQ_INIT(pkg->depends);
+	TAILQ_INIT(pkg->files);
+	TAILQ_INIT(pkg->conflicts);
 }
 
 static int
@@ -238,9 +246,7 @@
 	while (*cmdp) {
 		if (isspace(*cmdp)) {
 			*cmdp = '\0';
-			while (isspace(*arg)) {
-				++arg;
-			}
+			while (isspace(*arg)) ++arg;
 			break;
 		}
 		++cmdp; ++arg;
@@ -249,9 +255,8 @@
 	switch (cmd[0]) {
 	case (CMD_PREFIX):
 		if (_fbsd_plist_parse_contents_command(ps->pkg, ps, 
-			cmd + 1, arg) != PKG_OK) {
+			cmd + 1, arg) != PKG_OK)
 			return (PKG_NOT_OK);
-		}
 		break;
 	default:
 		ps->current_file = pkg_file_alloc();
@@ -291,12 +296,13 @@
 					pkg, ps, argument));
 			else if (strcmp(command, CMD_CONFLICTS) == 0) {
 				/* @conflicts */
-				#if 0
 				ps->current_conflict = pkg_conflict_alloc();
-				_pkg_conflict_set_expr(conflict, argument);
-				_pkg_append_conflict(pkg, conflict);
+
+				_pkg_conflict_set_expr(ps->current_conflict, argument);
+				_pkg_append_conflict(pkg, ps->current_conflict);
+				
 				ps->last = PLIST_CONFLICT;
-				#endif
+				
 				return (PKG_OK);
 			}
 			break;
@@ -311,66 +317,42 @@
 		}
 		break;
 	case ('d'):
-		switch (command[1]) {
-		case ('i'):
-			if (strcmp(command, CMD_DIRRM) == 0)
-				/* @dirrm */
-				return (PKG_OK);
-			else if (strcmp(command, CMD_DISPLAY) == 0) {
-				/* @display */
-				/* UNIMPLEMENTED */
-				warnx("@display parse not implemented");
-				return (PKG_OK);
-			}
-			break;
-		default:
-			break;
+		if (strcmp(command, CMD_DIRRM) == 0)
+			/* @dirrm */
+			return (PKG_OK);
+		else if (strcmp(command, CMD_DISPLAY) == 0) {
+			/* @display */
+			/* UNIMPLEMENTED */
+			warnx("@display parse not implemented");
+			return (PKG_OK);
 		}
 		break;
 	case ('e'):
-		switch (command[1]) {
-		case ('x'):
-			if (strcmp(command, CMD_EXEC) == 0) {
-				/* @exec */
-				#if 0
-				ADD_SET_DICT_PROPERTY(ps->exec_list,
-					ps->current_p, FBSD_EXECS);
-				ADD_SET_STRING_PROPERTY(ps->current_p, nn,
-					FBSD_COMMAND, argument);
-				#endif
-				return (PKG_OK);
-			}
-			break;
-		default:
-			break;
+		if (strcmp(command, CMD_EXEC) == 0) {
+			/* @exec */
+			#if 0
+			ADD_SET_DICT_PROPERTY(ps->exec_list,
+				ps->current_p, FBSD_EXECS);
+			ADD_SET_STRING_PROPERTY(ps->current_p, nn,
+				FBSD_COMMAND, argument);
+			#endif
+			return (PKG_OK);
 		}
 		break;
 	case ('g'):
-		switch (command[1]) {
-		case ('r'):
-			if (strcmp(command, CMD_GROUP) == 0)
-				/* @group */
-				/* DROP SUPPORT. */
-				return (PKG_OK);
-			break;
-		default:
-			break;
-		}
+		if (strcmp(command, CMD_GROUP) == 0)
+			/* @group */
+			/* DROP SUPPORT. */
+			return (PKG_OK);
 		break;
 	case ('i'):
-		switch (command[1]) {
-		case ('g'):
-			if (strcmp(command, CMD_IGNORE) == 0) {
-				/* @ignore */
-				ps->ignore = 1;
-				return (PKG_OK);
-			} else if (strcmp(command, CMD_IGNORE_INST) == 0) {
-				/* @ignore_inst */
-			}
-			break;
-		default:
-			break;
-		}
+		if (strcmp(command, CMD_IGNORE) == 0) {
+			/* @ignore */
+			ps->ignore = 1;
+			return (PKG_OK);
+		} else if (strcmp(command, CMD_IGNORE_INST) == 0)
+			/* @ignore_inst */
+			return (PKG_OK);
 		break;
 	case ('m'):
 		switch (command[1]) {
@@ -430,40 +412,28 @@
 		}
 		break;
 	case ('p'):
-		switch (command[1]) {
-		case ('k'):
-			if (strcmp(command, CMD_PKGDEP) == 0) {
-				/* @pkgdep */
-				
-				ps->current_dep = pkg_depend_alloc();
+		if (strcmp(command, CMD_PKGDEP) == 0) {
+			/* @pkgdep */
+			
+			ps->current_dep = pkg_depend_alloc();
 
-				_pkg_depend_set_name(ps->current_dep, argument);
-				_pkg_append_depend(pkg, ps->current_dep);
-				ps->last = PLIST_DEPENDENCY;
-				return (PKG_OK);
-			} else if (strcmp(command, CMD_PKGVERSION) == 0) {
-				/* @pkgversion */
-				/* UNUSED. */
-				return (PKG_OK);
-			}
-			break;
-		default:
-			break;
-		}
+			_pkg_depend_set_name(ps->current_dep, argument);
+			_pkg_append_depend(pkg, ps->current_dep);
+			ps->last = PLIST_DEPENDENCY;
+			
+			return (PKG_OK);
+		} else if (strcmp(command, CMD_PKGVERSION) == 0)
+			/* @pkgversion */
+			/* UNUSED. */
+			return (PKG_OK);
 		break;
 	case ('s'):
-		switch (command[1]) {
-		case ('r'):
-			if (strcmp(command, CMD_SRCDIR) == 0) {
-				/* @srcdir */
-				
-				_pkg_set_srcdir(pkg, argument);
+		if (strcmp(command, CMD_SRCDIR) == 0) {
+			/* @srcdir */
+			
+			_pkg_set_srcdir(pkg, argument);
 
-				return (PKG_OK);
-			}
-			break;
-		default:
-			break;
+			return (PKG_OK);
 		}
 		break;
 	case ('u'):
@@ -499,38 +469,38 @@
 	switch (comment[0]) {
 	case ('D'):
 		if (strncmp(comment, CMT_DEPORIGIN, 10) == 0) {
-			if (ps->last == PLIST_DEPENDENCY) {
+			if (ps->last == PLIST_DEPENDENCY)
 				_pkg_depend_set_origin(ps->current_dep,
 					comment + 10);
-			} else {
+			else {
 				/* It would be great to be able to set an error
 				 * string here, rather than warning straight
 				 * up... */
 				/* XXX: NOT A CLIENT_WARNING, keep it clean. */
 				warnx("Plist: Misplaced DEPORIGIN meta comment"
-				" [line %ld: %s]", ps->line_number, comment);
+					" [line %ld: %s]", ps->line_number,
+					comment);
 				return (PKG_NOT_OK);
 			}
 		}
 		break;
 	case ('O'):
-		if (strncmp(comment, CMT_ORIGIN, 7) == 0) {
+		if (strncmp(comment, CMT_ORIGIN, 7) == 0)
 			_pkg_set_origin(pkg, comment + 7);
-		}
 		break;
 	case ('P'):
-		if (strncmp(comment, CMT_PKG_FORMAT_REVISION, 20) == 0) {
+		if (strncmp(comment, CMT_PKG_FORMAT_REVISION, 20) == 0)
 			_pkg_set_format_revision(pkg, comment + 20);
-		}
 		break;
 	case ('M'):
 		if (strncmp(comment, CMT_MD5, 4) == 0) {
-			if (ps->last == PLIST_FILE) {
+			if (ps->last == PLIST_FILE)
 				_pkg_file_set_hash(ps->current_file,
 					comment + 4);
-			} else {
+			else {
 				warnx("Plist: Misplaced MD5 meta comment"
-				" [line %ld: %s]", ps->line_number, comment);
+					" [line %ld: %s]", ps->line_number,
+					comment);
 				return (PKG_NOT_OK);
 			}
 		}
@@ -556,28 +526,33 @@
 static int
 _fbsd_plist_required_by_parse(struct pkg *pkg, char *text)
 {
-	(void)pkg;
-	(void)text;
+	char *line;
+	struct pkg_reqby *reqby;
+
+	pkg->reqbys = calloc(1, sizeof(*pkg->reqbys));
+
+	while ((line = strsep(&text, "\n")) != NULL) {
+		if (strlen(line) == 0) continue;
+		
+		reqby = pkg_reqby_alloc();
+		if (reqby == NULL) return (PKG_NOT_OK);
 
-	PKG_CLIENT_CRASH(__func__, "Not implemented.");
+		_pkg_reqby_set_name(reqby, line);
+		_pkg_append_reqby(pkg, reqby);
+	}
 	
-	return (PKG_NOT_OK);
+	return (PKG_OK);
 }
 
 static int
 _fbsd_plist_generic_parse(struct pkg *pkg, char *text, 
 	const char *metaname)
 {
-	(void)pkg;
-	(void)text;
-	(void)metaname;
-	if (strncmp(metaname, FBSD_METANAME_COMMENT,
-		strlen(FBSD_METANAME_COMMENT)) == 0) {
+	if (strcmp(metaname, FBSD_METANAME_COMMENT) == 0)
 		_pkg_set_comment(pkg, text);
-	} else if (strncmp(metaname, FBSD_METANAME_DESCRIPTION,
-		strlen(FBSD_METANAME_DESCRIPTION)) == 0) {
+	else if (strcmp(metaname, FBSD_METANAME_DESCRIPTION) == 0)
 		_pkg_set_description(pkg, text);
-	}
+	
 	return (PKG_OK);
 }
 

==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/freebsd_plist.h#6 (text+ko) ====


==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg.c#11 (text+ko) ====

@@ -97,7 +97,7 @@
 void
 _pkg_set_format_revision(struct pkg *pkg, const char *fmtrev)
 {
-	strncpy(pkg->format_revision, fmtrev, 256);
+	strncpy(pkg->format_revision, fmtrev, 8);
 }
 
 void
@@ -157,13 +157,11 @@
 	return (pkg->reqbys);
 }
 
-#if 0
 struct pkg_conflict_list *
 pkg_conflicts(struct pkg *pkg)
 {
 	return (pkg->conflicts);
 }
-#endif
 
 struct pkg_file *
 pkg_add_file(struct pkg *pkg, const char *prefix, const char *pathname,
@@ -192,11 +190,10 @@
 	TAILQ_INSERT_TAIL(pkg->depends, depend, next);
 }
 
-#if 0
 struct pkg_conflict *
-pkg_add_conflict(struct pkg *pkg, const char *conflict, const char *reason)
+pkg_add_conflict(struct pkg *pkg, const char *expr, const char *reason)
 {
-	return (pkg->add_conflict(pkg, conflict, reason));
+	return (pkg->add_conflict(pkg, expr, reason));
 }
 
 void
@@ -204,7 +201,6 @@
 {
 	TAILQ_INSERT_TAIL(pkg->conflicts, conflict, next);
 }
-#endif
 
 struct pkg_reqby *
 pkg_add_reqby(struct pkg *pkg, const char *name, const char *version)
@@ -212,6 +208,12 @@
 	return (pkg->add_reqby(pkg, name, version));
 }
 
+void
+_pkg_append_reqby(struct pkg *pkg, struct pkg_reqby *reqby)
+{
+	TAILQ_INSERT_TAIL(pkg->reqbys, reqby, next);
+}
+
 int
 pkg_remove_reqby(struct pkg *pkg, struct pkg_reqby *reqby)
 {

==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg.h#9 (text+ko) ====

@@ -137,10 +137,10 @@
 
 const char		*pkg_depend_version(struct pkg_depend *);
 
-const char		      *pkg_conflict_expr(struct pkg_conflict *);
+const char		*pkg_conflict_expr(struct pkg_conflict *);
 
 /* Don't remember what this is for... */
-const char		      *pkg_conflict_version(struct pkg_conflict *);
+const char		*pkg_conflict_reason(struct pkg_conflict *);
 
 const char		      *pkg_reqby_name(struct pkg_reqby *);
 

==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_internal.h#8 (text+ko) ====

@@ -88,27 +88,29 @@
 
 #include "pkg_types.h"
 
-struct pkg		      *_pkg_create(uint32_t, void *);
+struct pkg	*_pkg_create(uint32_t, void *);
+
+struct pkg	*pkg_alloc(void);
+void		 pkg_release(struct pkg *);
+
+void		 _pkg_set_name(struct pkg *, const char *);
 
-struct pkg		      *pkg_alloc(void);
-void			     pkg_release(struct pkg *);
+void		 _pkg_set_srcdir(struct pkg *, const char *);
 
-void			     _pkg_set_name(struct pkg *, const char *);
+void		 _pkg_set_origin(struct pkg *, const char *);
 
-void			     _pkg_set_srcdir(struct pkg *, const char *);
+void		 _pkg_set_format_revision(struct pkg *, const char *);
 
-void			     _pkg_set_origin(struct pkg *, const char *);
+void		 _pkg_set_comment(struct pkg *, const char *);
 
-void			     _pkg_set_format_revision(struct pkg *, const char *);
+void		 _pkg_set_description(struct pkg *, const char *);
 
-void			     _pkg_set_comment(struct pkg *, const char *);
+void		 _pkg_append_file(struct pkg *, struct pkg_file *);
 
-void			     _pkg_set_description(struct pkg *, const char *);
+void		 _pkg_append_conflict(struct pkg *, struct pkg_conflict *);
 
-void			     _pkg_append_file(struct pkg *,
-					struct pkg_file *);
+void		 _pkg_append_depend(struct pkg *, struct pkg_depend *);
 
-void			     _pkg_append_depend(struct pkg *,
-					struct pkg_depend *);
+void		 _pkg_append_reqby(struct pkg *, struct pkg_reqby *);
 
 #endif

==== //depot/projects/soc2010/dforsyth_libpkg/libpkg/pkg_types.h#3 (text+ko) ====

@@ -24,7 +24,7 @@
 	char		 srcdir[PATH_MAX];
 
 	int		 (*read_format_revision) (struct pkg *);
-	char		 format_revision[256];
+	char		 format_revision[8];
 	
 	int		 (*read_comment) (struct pkg *);
 	/* This is 128 for now, I'd like it down at 80. */
@@ -78,6 +78,15 @@
 
 TAILQ_HEAD(pkg_list, pkg);
 
+struct pkg_conflict {
+	char expr[PATH_MAX];
+	char reason[PATH_MAX];
+
+	TAILQ_ENTRY(pkg_conflict) next;
+};
+
+TAILQ_HEAD(pkg_conflict_list, pkg_conflict);
+
 struct pkg_depend {
 	char name[PATH_MAX];
 	char version[256];

==== //depot/projects/soc2010/dforsyth_libpkg/pkg_install/pkg_info/pkg_info.c#7 (text+ko) ====

@@ -184,7 +184,7 @@
 			c.show_flags |= SHOW_PKG_NAME;
 			// c.show_flags |= SHOW_DISPLAY;
 			c.show_flags |= SHOW_DEPEND;
-			// c.show_flags |= SHOW_CONFLICTS;
+			c.show_flags |= SHOW_CONFLICTS;
 			// c.show_flags |= SHOW_DIRRM;
 			c.show_flags |= SHOW_ORIGIN;
 			c.show_flags |= SHOW_OPTIONS;
@@ -543,11 +543,11 @@
 	const char *prefix;
 	const char *last_prefix;
 
-	// struct pkg_conflict_list *conflicts;
+	struct pkg_conflict_list *conflicts;
 	struct pkg_depend_list *depends;
 	struct pkg_file_list *files;
 
-	// struct pkg_conflict *conflict;
+	struct pkg_conflict *conflict;
 	struct pkg_depend *depend;
 	struct pkg_file *file;
 	
@@ -570,14 +570,15 @@
 			print_chunk(pkg_comment(pkg), "Comment:\n", _c);
 		
 		if (_c->show_flags & SHOW_CONFLICTS) {
-			if (!_c->quiet) {}
-#if 0
+			if (!_c->quiet)
+				printf("%sConflicts:\n", _c->info_prefix);
+			
+			conflicts = pkg_conflicts(pkg);
 			TAILQ_FOREACH(conflict, conflicts, next) {
 				printf((_c->quiet ? "@conflicts: %s\n" :
 					"Conflicts %s\n"),
 					pkg_conflict_expr(conflict));
 			}
-#endif
 		}
 
 		if (_c->show_flags & SHOW_DEPEND) {


More information about the p4-projects mailing list