From d5354e6059979054fdfae6caf173617170910b41 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Sun, 24 May 2020 10:52:17 -0400 Subject: Add version type and functions: * struct Version * version_{init,read,free} * version_from() now wraps new functions to return a uint64_t --- include/version_spec.h | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'include/version_spec.h') diff --git a/include/version_spec.h b/include/version_spec.h index aab6540..a05dcb8 100644 --- a/include/version_spec.h +++ b/include/version_spec.h @@ -4,10 +4,11 @@ #ifndef SPM_VERSION_SPEC_H #define SPM_VERSION_SPEC_H -#define VERSION_BASE 16 -#define VERSION_ADDENDUM_BITS 16 +#define VERSION_MAX 8 +#define VERSION_BASE 10 #define VERSION_DELIM "." -#define VERSION_LOCAL "=" +#define VERSION_DELIM_LOCAL "+" +#define VERSION_LOCAL_MAX 255 #define VERSION_OPERATORS " ~!=<>" #define VERSION_NOOP 1 << 0 #define VERSION_EQ 1 << 1 @@ -16,11 +17,16 @@ #define VERSION_LT 1 << 4 #define VERSION_COMPAT 1 << 5 -// version_spec.c -char *version_suffix_get_alpha(char *str); -char *version_suffix_get_modifier(char *str); -int64_t version_suffix_modifier_calc(char *str); -int version_suffix_alpha_calc(char *str); +struct Version { + char *local; + uint64_t asInt; + uint32_t part[VERSION_MAX]; +}; + +struct Version *version_init(); +int version_read(struct Version **version, char *s); +void version_info(struct Version *version); + uint64_t version_from(const char *str); int version_spec_from(const char *op); ManifestPackage **find_by_spec(const Manifest *manifest, const char *name, const char *op, const char *version_str); -- cgit From 091b1d6b496f2dcacff96230dbcc5d68722fa4d3 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Sun, 24 May 2020 13:03:03 -0400 Subject: Use the correct type to support large return by version_from() --- include/version_spec.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/version_spec.h') diff --git a/include/version_spec.h b/include/version_spec.h index a05dcb8..b8d3260 100644 --- a/include/version_spec.h +++ b/include/version_spec.h @@ -28,7 +28,7 @@ int version_read(struct Version **version, char *s); void version_info(struct Version *version); uint64_t version_from(const char *str); -int version_spec_from(const char *op); +unsigned int version_spec_from(const char *op); ManifestPackage **find_by_spec(const Manifest *manifest, const char *name, const char *op, const char *version_str); int pep440_match(const char *version); struct PEP440 *pep440_version(const char *version); -- cgit