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