From 13dd2864ca740ee7e6a6ce163c883dc24a294c87 Mon Sep 17 00:00:00 2001
From: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Date: Tue, 18 Dec 2007 14:24:44 +0100
Subject: PM_DEP_MOD_LT and PM_DEP_MOD_GT depmods added

You can use foo<2.0 and foo>2.0 as depend
add046.py and add047.py pactests were added to check this

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
---
 lib/libalpm/alpm.h |  4 +++-
 lib/libalpm/deps.c | 19 ++++++++++++++++++-
 2 files changed, 21 insertions(+), 2 deletions(-)

(limited to 'lib')

diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index f64796cb..3a484be3 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -369,7 +369,9 @@ typedef enum _pmdepmod_t {
 	PM_DEP_MOD_ANY = 1,
 	PM_DEP_MOD_EQ,
 	PM_DEP_MOD_GE,
-	PM_DEP_MOD_LE
+	PM_DEP_MOD_LE,
+	PM_DEP_MOD_GT,
+	PM_DEP_MOD_LT
 } pmdepmod_t;
 
 pmdepend_t *alpm_splitdep(const char *depstring);
diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c
index 1603f99f..8d77fd46 100644
--- a/lib/libalpm/deps.c
+++ b/lib/libalpm/deps.c
@@ -310,6 +310,8 @@ static int dep_vercmp(const char *version1, pmdepmod_t mod,
 			case PM_DEP_MOD_EQ: equal = (cmp == 0); break;
 			case PM_DEP_MOD_GE: equal = (cmp >= 0); break;
 			case PM_DEP_MOD_LE: equal = (cmp <= 0); break;
+			case PM_DEP_MOD_LT: equal = (cmp < 0); break;
+			case PM_DEP_MOD_GT: equal = (cmp > 0); break;
 			default: equal = 1; break;
 		}
 	}
@@ -374,10 +376,19 @@ pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring)
 		depend->mod = PM_DEP_MOD_LE;
 		*ptr = '\0';
 		ptr += 2;
-	} else if((ptr = strstr(newstr, "="))) {
+	} else if((ptr = strstr(newstr, "="))) { /* Note: we must do =,<,> checks after <=, >= checks */
 		depend->mod = PM_DEP_MOD_EQ;
 		*ptr = '\0';
 		ptr += 1;
+	} else if((ptr = strstr(newstr, "<"))) {
+		depend->mod = PM_DEP_MOD_LT;
+		*ptr = '\0';
+		ptr += 1;
+	} else if((ptr = strstr(newstr, ">"))) {
+		depend->mod = PM_DEP_MOD_GT;
+		*ptr = '\0';
+		ptr += 1;
+
 	} else {
 		/* no version specified - copy in the name and return it */
 		depend->mod = PM_DEP_MOD_ANY;
@@ -684,6 +695,12 @@ char SYMEXPORT *alpm_dep_get_string(const pmdepend_t *dep)
 		case PM_DEP_MOD_EQ:
 			opr = "=";
 			break;
+		case PM_DEP_MOD_LT:
+			opr = "<";
+			break;
+		case PM_DEP_MOD_GT:
+			opr = ">";
+			break;
 		default:
 			opr = "";
 			break;
-- 
cgit v1.2.3-70-g09d2