From d871b841fb853e479482b86ec42fcfae815e4ced Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Wed, 14 Feb 2007 02:58:35 +0000 Subject: Slightly optimized to remove duplicate strcmp operation. --- lib/libalpm/conflict.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c index ffc9dc68..27558565 100644 --- a/lib/libalpm/conflict.c +++ b/lib/libalpm/conflict.c @@ -220,18 +220,25 @@ static alpm_list_t *chk_fileconflicts(alpm_list_t *filesA, alpm_list_t *filesB) 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) { -- cgit v1.2.3