[pacman-dev] CVS update of pacman-lib/lib/libalpm (conflict.c)

dan at archlinux.org dan at archlinux.org
Tue Feb 13 21:58:36 EST 2007


    Date: Tuesday, February 13, 2007 @ 21:58:36
  Author: dan
    Path: /home/cvs-pacman/pacman-lib/lib/libalpm

Modified: conflict.c (1.35 -> 1.36)

Slightly optimized to remove duplicate strcmp operation.


------------+
 conflict.c |   21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)


Index: pacman-lib/lib/libalpm/conflict.c
diff -u pacman-lib/lib/libalpm/conflict.c:1.35 pacman-lib/lib/libalpm/conflict.c:1.36
--- pacman-lib/lib/libalpm/conflict.c:1.35	Tue Feb 13 03:15:38 2007
+++ pacman-lib/lib/libalpm/conflict.c	Tue Feb 13 21:58:35 2007
@@ -220,18 +220,25 @@
 	while(pA && pB) {
 		const char *strA = pA->data;
 		const char *strB = pB->data;
+		/* skip directories, we don't care about dir conflicts */
 		if(strA[strlen(strA)-1] == '/') {
 			pA = pA->next;
 		} else if(strB[strlen(strB)-1] == '/') {
 			pB = pB->next;
-		} else if(strcmp(strA, strB) == -1) {
-			pA = pA->next;
-		} else if(strcmp(strB, strA) == -1) {
-			pB = pB->next;
 		} else {
-			ret = alpm_list_add(ret, strdup(strA));
-			pA = pA->next;
-			pB = pB->next;
+			int cmp = strcmp(strA, strB);
+			if(cmp < 0) {
+				/* item only in filesA, ignore it */
+				pA = pA->next;
+			} else if(cmp > 0) {
+				/* item only in filesB, ignore it */
+				pB = pB->next;
+			} else {
+				/* item in both, record it */
+				ret = alpm_list_add(ret, strdup(strA));
+				pA = pA->next;
+				pB = pB->next;
+			}
 	  }
 	}
 	for(alpm_list_t *i = ret; i; i = i->next) {




More information about the pacman-dev mailing list