[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