From owner-p4-projects@FreeBSD.ORG Sun Oct 31 16:33:15 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6647C1065672; Sun, 31 Oct 2010 16:33:15 +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 1C6CD106566C for ; Sun, 31 Oct 2010 16:33:15 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 077AF8FC12 for ; Sun, 31 Oct 2010 16:33:15 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id o9VGXFBg059015 for ; Sun, 31 Oct 2010 16:33:15 GMT (envelope-from dforsyth@FreeBSD.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id o9VGXEWM059012 for perforce@freebsd.org; Sun, 31 Oct 2010 16:33:14 GMT (envelope-from dforsyth@FreeBSD.org) Date: Sun, 31 Oct 2010 16:33:14 GMT Message-Id: <201010311633.o9VGXEWM059012@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to dforsyth@FreeBSD.org using -f From: David Forsythe To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 185272 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 31 Oct 2010 16:33:15 -0000 http://p4web.freebsd.org/@@185272?ac=10 Change 185272 by dforsyth@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) {