diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-06-30 09:53:57 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-06-30 09:53:57 -0400 |
commit | 43e828aca9e3eed2bf8a58cef8d8224d65586957 (patch) | |
tree | 171e95321f83129cfd052049552f1b2aef162b80 /src | |
parent | 1c78b0077bce9f0ebf7ab472ba4fa8c2c0169ff8 (diff) | |
download | stasis-43e828aca9e3eed2bf8a58cef8d8224d65586957.tar.gz |
Fix to_short_version to drop any values beyond "major.minor"
* Fixes output file names: python=3.13.3 would produce 3133 instead of the expected 313
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/core/str.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/lib/core/str.c b/src/lib/core/str.c index 1d0b268..9524886 100644 --- a/src/lib/core/str.c +++ b/src/lib/core/str.c @@ -640,12 +640,35 @@ char *tolower_s(char *s) { } char *to_short_version(const char *s) { - char *result = strdup(s); - if (!result) { - return NULL; + char *result = NULL; + if (num_chars(s, '.') > 1) { + char **version_data = split((char *) s, ".", 1); + if (!version_data) { + goto to_short_version_failed; + } + if (version_data[1]) { + char *dot = strchr(version_data[1], '.'); + if (dot) { + *dot = '\0'; + } + } + result = join(version_data, ""); + if (!result) { + guard_array_free(version_data); + goto to_short_version_failed; + } + guard_array_free(version_data); + } else { + result = strdup(s); + if (!result) { + goto to_short_version_failed; + } + strchrdel(result, "."); } - strchrdel(result, "."); + return result; + to_short_version_failed: + return NULL; } void unindent(char *s) { |