@@ -2,7 +2,8 @@
#include <limits.h>
#include <util/size.h>
-unsigned long long parse_size64(const char *str)
+static unsigned long long __parse_size64(const char *str,
+ unsigned long long *units)
{
unsigned long long val, check;
char *end;
@@ -14,25 +15,35 @@ unsigned long long parse_size64(const char *str)
switch (*end) {
case 'k':
case 'K':
+ if (units)
+ *units = SZ_1K;
val *= SZ_1K;
end++;
break;
case 'm':
case 'M':
+ if (units)
+ *units = SZ_1M;
val *= SZ_1M;
end++;
break;
case 'g':
case 'G':
+ if (units)
+ *units = SZ_1G;
val *= SZ_1G;
end++;
break;
case 't':
case 'T':
+ if (units)
+ *units = SZ_1T;
val *= SZ_1T;
end++;
break;
default:
+ if (units)
+ *units = 1;
break;
}
@@ -40,3 +51,8 @@ unsigned long long parse_size64(const char *str)
val = ULLONG_MAX;
return val;
}
+
+unsigned long long parse_size64(const char *str)
+{
+ return __parse_size64(str, NULL);
+}
In preparation for suggesting namespace sizes that satisfy alignment requirements, add the ability to track the size suffix. The suggestions will be aligned to the size suffix by default. Signed-off-by: Dan Williams <dan.j.williams@intel.com> --- util/size.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)