From 9eb9c897d9159c5bc2dbe0fa849e9dcf687ba03a Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Fri, 4 Oct 2024 16:22:03 -0400 Subject: Add find_version_spec() to utils --- include/utils.h | 24 ++++++++++++++++++++++++ src/utils.c | 3 +++ 2 files changed, 27 insertions(+) diff --git a/include/utils.h b/include/utils.h index a3d244a..4f7c3a4 100644 --- a/include/utils.h +++ b/include/utils.h @@ -365,4 +365,28 @@ long get_cpu_count(); */ int mkdirs(const char *_path, mode_t mode); +/** + * Return pointer to a (possible) version specifier + * + * ```c + * char s[] = "abc==1.2.3"; + * char *spec_begin = find_version_spec(s); + * // spec_begin is "==1.2.3" + * + * char package_name[255]; + * char s[] = "abc"; + * char *spec_pos = find_version_spec(s); + * if (spec_pos) { + * strncpy(package_name, spec_pos - s); + * // use spec + * } else { + * // spec not found + * } + * + * @param str a pointer to a buffer containing a package spec (i.e. abc==1.2.3, abc>=1.2.3, abc) + * @return a pointer to the first occurrence of a version spec character + * @return NULL if not found + */ +char *find_version_spec(char *package_name); + #endif //STASIS_UTILS_H diff --git a/src/utils.c b/src/utils.c index e037088..6381cea 100644 --- a/src/utils.c +++ b/src/utils.c @@ -814,3 +814,6 @@ int mkdirs(const char *_path, mode_t mode) { return status; } +char *find_version_spec(char *str) { + return strpbrk(str, "@~=<>!"); +} -- cgit