summaryrefslogtreecommitdiffstats
path: root/libopkg/pkg_depends.c
diff options
context:
space:
mode:
Diffstat (limited to 'libopkg/pkg_depends.c')
-rw-r--r--libopkg/pkg_depends.c73
1 files changed, 42 insertions, 31 deletions
diff --git a/libopkg/pkg_depends.c b/libopkg/pkg_depends.c
index d45f697..243fac7 100644
--- a/libopkg/pkg_depends.c
+++ b/libopkg/pkg_depends.c
@@ -781,7 +781,7 @@ constraint_to_str(enum version_constraint c)
case NONE:
return "";
case EARLIER:
- return "< ";
+ return "<< ";
case EARLIER_EQUAL:
return "<= ";
case EQUAL:
@@ -789,12 +789,51 @@ constraint_to_str(enum version_constraint c)
case LATER_EQUAL:
return ">= ";
case LATER:
- return "> ";
+ return ">> ";
}
return "";
}
+enum version_constraint
+str_to_constraint(char **str)
+{
+ if(!strncmp(*str, "<<", 2)){
+ *str += 2;
+ return EARLIER;
+ }
+ else if(!strncmp(*str, "<=", 2)){
+ *str += 2;
+ return EARLIER_EQUAL;
+ }
+ else if(!strncmp(*str, ">=", 2)){
+ *str += 2;
+ return LATER_EQUAL;
+ }
+ else if(!strncmp(*str, ">>", 2)){
+ *str += 2;
+ return LATER;
+ }
+ else if(!strncmp(*str, "=", 1)){
+ *str += 1;
+ return EQUAL;
+ }
+ /* should these be here to support deprecated designations; dpkg does */
+ else if(!strncmp(*str, "<", 1)){
+ *str += 1;
+ opkg_msg(NOTICE, "Deprecated version constraint '<' was used with the same meaning as '<='. Use '<<' for EARLIER constraint.\n");
+ return EARLIER_EQUAL;
+ }
+ else if(!strncmp(*str, ">", 1)){
+ *str += 1;
+ opkg_msg(NOTICE, "Deprecated version constraint '>' was used with the same meaning as '>='. Use '>>' for LATER constraint.\n");
+ return LATER_EQUAL;
+ }
+ else {
+ return NONE;
+ }
+}
+
/*
* Returns a printable string for pkg's dependency at the specified idx. The
* resultant string must be passed to free() by the caller.
@@ -949,35 +988,7 @@ static int parseDepends(compound_depend_t *compound_depend,
/* extract constraint and version */
if(*src == '('){
src++;
- if(!strncmp(src, "<<", 2)){
- possibilities[i]->constraint = EARLIER;
- src += 2;
- }
- else if(!strncmp(src, "<=", 2)){
- possibilities[i]->constraint = EARLIER_EQUAL;
- src += 2;
- }
- else if(!strncmp(src, ">=", 2)){
- possibilities[i]->constraint = LATER_EQUAL;
- src += 2;
- }
- else if(!strncmp(src, ">>", 2)){
- possibilities[i]->constraint = LATER;
- src += 2;
- }
- else if(!strncmp(src, "=", 1)){
- possibilities[i]->constraint = EQUAL;
- src++;
- }
- /* should these be here to support deprecated designations; dpkg does */
- else if(!strncmp(src, "<", 1)){
- possibilities[i]->constraint = EARLIER_EQUAL;
- src++;
- }
- else if(!strncmp(src, ">", 1)){
- possibilities[i]->constraint = LATER_EQUAL;
- src++;
- }
+ possibilities[i]->constraint = str_to_constraint(&src);
/* now we have any constraint, pass space to version string */
while(isspace(*src)) src++;