#include "macro.h"
#include "memory-util.h"
#include "memstream-util.h"
+#include "path-util.h"
#include "string-util.h"
#include "strv.h"
#include "terminal-util.h"
return found;
}
+
+bool version_is_valid(const char *s) {
+ if (isempty(s))
+ return false;
+
+ if (!filename_part_is_valid(s))
+ return false;
+
+ /* This is a superset of the characters used by semver. We additionally allow "," and "_". */
+ if (!in_charset(s, ALPHANUMERICAL ".,_-+"))
+ return false;
+
+ return true;
+}
#define STARTSWITH_SET(p, ...) \
startswith_strv(p, STRV_MAKE(__VA_ARGS__))
+
+bool version_is_valid(const char *s);
'sysupdate-transfer.h',
'sysupdate-update-set.c',
'sysupdate-update-set.h',
- 'sysupdate-util.c',
- 'sysupdate-util.h',
'sysupdate.c',
'sysupdate.h',
)
#include "stdio-util.h"
#include "string-util.h"
#include "sysupdate-pattern.h"
-#include "sysupdate-util.h"
typedef enum PatternElementType {
PATTERN_LITERAL,
#include "sysupdate-pattern.h"
#include "sysupdate-resource.h"
#include "sysupdate-transfer.h"
-#include "sysupdate-util.h"
#include "sysupdate.h"
#include "tmpfile-util.h"
#include "web-util.h"
#include "path-util.h"
#include "sysupdate-util.h"
-
-bool version_is_valid(const char *s) {
- if (isempty(s))
- return false;
-
- if (!filename_is_valid(s))
- return false;
-
- if (!in_charset(s, ALPHANUMERICAL ".,_-+"))
- return false;
-
- return true;
-}
+++ /dev/null
-/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#pragma once
-
-#include <stdbool.h>
-
-bool version_is_valid(const char *s);
assert_se(!strstrafter(buffer, "-"));
}
+TEST(version_is_valid) {
+ assert_se(!version_is_valid(NULL));
+ assert_se(!version_is_valid(""));
+ assert_se(version_is_valid("0"));
+ assert_se(version_is_valid("5"));
+ assert_se(version_is_valid("999999"));
+ assert_se(version_is_valid("999999.5"));
+ assert_se(version_is_valid("6.2.12-300.fc38.x86_64"));
+}
+
DEFINE_TEST_MAIN(LOG_DEBUG);