diff options
| author | Joseph Hunkeler <jhunkeler@users.noreply.github.com> | 2025-06-30 15:44:35 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-30 15:44:35 -0400 |
| commit | 983074bc6f355f2023b6a1475e9bb252881c5d28 (patch) | |
| tree | 839fb2ec6153496f643bdded0bce9ba728eb0add /src/lib/core | |
| parent | 9c85b01ce13fae21f45719c18483cb65f2874a67 (diff) | |
| parent | 62728c208a31c4667927408f109838ddda5d58e1 (diff) | |
| download | stasis-983074bc6f355f2023b6a1475e9bb252881c5d28.tar.gz | |
Merge pull request #113 from jhunkeler/allow-hashes-as-version
Allow hashes as version
Diffstat (limited to 'src/lib/core')
| -rw-r--r-- | src/lib/core/include/utils.h | 5 | ||||
| -rw-r--r-- | src/lib/core/utils.c | 28 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/lib/core/include/utils.h b/src/lib/core/include/utils.h index 583a8b8..1512285 100644 --- a/src/lib/core/include/utils.h +++ b/src/lib/core/include/utils.h @@ -456,4 +456,9 @@ void debug_hexdump(char *data, int len); * @return -1 on error */ int grow(size_t size_new, size_t *size_orig, char **data); + +int in_ascii_range(char c, char lower, char upper); + +#define GIT_HASH_LEN 40 +int is_git_sha(char const *hash); #endif //STASIS_UTILS_H diff --git a/src/lib/core/utils.c b/src/lib/core/utils.c index f02a7ea..3d9659d 100644 --- a/src/lib/core/utils.c +++ b/src/lib/core/utils.c @@ -966,3 +966,31 @@ int grow(const size_t size_new, size_t *size_orig, char **data) { return 0; } +int in_ascii_range(const char c, char lower, char upper) { + if (!(c >= lower && c <= upper)) { + return 0; + } + return 1; +} + +int is_git_sha(char const *hash) { + size_t result = 0; + size_t len = strlen(hash); + + if (len > GIT_HASH_LEN) { + // too long to be a git commit hash + return 0; + } + for (size_t i = 0; i < len; i++) { + if (in_ascii_range(hash[i], 'a', 'f') + || in_ascii_range(hash[i], 'A', 'F') + || in_ascii_range(hash[i], '0', '9')) { + result++; + } + } + if (result < len) { + return 0; + } + return 1; +} + |
