@@ -679,6 +679,47 @@ int tst_parse_float(const char *str, float *val, float min, float max)
return 0;
}
+int tst_parse_filesize(const char *str, long long *val, long long min, long long max)
+{
+ long long rval;
+ char *end;
+
+ if (!str)
+ return 0;
+
+ errno = 0;
+ rval = strtoll(str, &end, 10);
+
+ if (str == end)
+ return EINVAL;
+
+ if (errno)
+ return errno;
+
+ switch (*end) {
+ case 'g':
+ case 'G':
+ rval *= (1024 * 1024 * 1024);
+ break;
+ case 'm':
+ case 'M':
+ rval *= (1024 * 1024);
+ break;
+ case 'k':
+ case 'K':
+ rval *= 1024;
+ break;
+ default:
+ break;
+ }
+
+ if (rval > max || rval < min)
+ return ERANGE;
+
+ *val = rval;
+ return 0;
+}
+
static void print_colored(const char *str)
{
if (tst_color_enabled(STDOUT_FILENO))
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com> --- lib/tst_test.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+)