aboutsummaryrefslogtreecommitdiff
path: root/src/version_spec.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/version_spec.c')
-rw-r--r--src/version_spec.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/version_spec.c b/src/version_spec.c
index 0249375..d14e339 100644
--- a/src/version_spec.c
+++ b/src/version_spec.c
@@ -338,3 +338,27 @@ ManifestPackage **find_by_spec(Manifest *manifest, const char *name, const char
return list;
}
+
+ManifestPackage **find_by_strspec(const char *_strspec) {
+ const char *operators = VERSION_OPERATORS; // note: whitespace is synonymous with "==" if no other operators are present
+ char *pos = NULL;
+ char op[NAME_MAX];
+ char name[NAME_MAX];
+ char version[NAME_MAX];
+
+ memset(op, '\0', NAME_MAX);
+ memset(name, '\0', NAME_MAX);
+ memset(version, '\0', NAME_MAX);
+
+ // Parse name
+ for (int i = 0; isalnum(_strspec[i]) || _strspec[i] == '_'; i++) {
+ name[i] = _strspec[i];
+ }
+
+ // Parse operators
+ pos = strpbrk(_strspec, operators);
+ for (int i = 0; !isalnum(*pos++); i++) {
+
+ }
+ // hmmmmmm
+}