From owner-p4-projects@FreeBSD.ORG Tue Jun 23 05:42:14 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D2EB31065675; Tue, 23 Jun 2009 05:42:13 +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 79CBF106564A for ; Tue, 23 Jun 2009 05:42:13 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 674578FC19 for ; Tue, 23 Jun 2009 05:42:13 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n5N5gD5V042901 for ; Tue, 23 Jun 2009 05:42:13 GMT (envelope-from dforsyth@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n5N5gDId042899 for perforce@freebsd.org; Tue, 23 Jun 2009 05:42:13 GMT (envelope-from dforsyth@FreeBSD.org) Date: Tue, 23 Jun 2009 05:42:13 GMT Message-Id: <200906230542.n5N5gDId042899@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to dforsyth@FreeBSD.org using -f From: David Forsythe To: Perforce Change Reviews Cc: Subject: PERFORCE change 164928 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Jun 2009 05:42:16 -0000 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 #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