diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-01-24 09:40:28 -0500 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-01-24 09:40:28 -0500 |
commit | ea01a40084b4e09c8407886a5070a77aeba56d63 (patch) | |
tree | 04321c52b97ad66179d523f5de01f2d9bbb46b83 /src/version_spec.c | |
parent | bb13dd28686146c07ca9054a95ae19d09b320c8d (diff) | |
download | spmc-ea01a40084b4e09c8407886a5070a77aeba56d63.tar.gz |
Begin hooking up version spec function(s) to installation
Diffstat (limited to 'src/version_spec.c')
-rw-r--r-- | src/version_spec.c | 24 |
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 +} |