core: clean up some confusing regarding SI decimal and IEC binary suffixes for sizes

According to Wikipedia it is customary to specify hardware metrics and
transfer speeds to the basis 1000 (SI decimal), while software metrics
and physical volatile memory (RAM) sizes to the basis 1024 (IEC binary).
So far we specified everything in IEC, let's fix that and be more
true to what's otherwise customary. Since we don't want to parse "Mi"
instead of "M" we document each time what the context used is.
This commit is contained in:
Lennart Poettering
2014-02-23 03:19:04 +01:00
parent e342365c27
commit 5556b5fe41
13 changed files with 146 additions and 69 deletions
+16 -16
View File
@@ -435,42 +435,42 @@ static void test_protect_errno(void) {
assert(errno == 12);
}
static void test_parse_bytes(void) {
static void test_parse_size(void) {
off_t bytes;
assert_se(parse_bytes("111", &bytes) == 0);
assert_se(parse_size("111", 1024, &bytes) == 0);
assert_se(bytes == 111);
assert_se(parse_bytes(" 112 B", &bytes) == 0);
assert_se(parse_size(" 112 B", 1024, &bytes) == 0);
assert_se(bytes == 112);
assert_se(parse_bytes("3 K", &bytes) == 0);
assert_se(parse_size("3 K", 1024, &bytes) == 0);
assert_se(bytes == 3*1024);
assert_se(parse_bytes(" 4 M 11K", &bytes) == 0);
assert_se(parse_size(" 4 M 11K", 1024, &bytes) == 0);
assert_se(bytes == 4*1024*1024 + 11 * 1024);
assert_se(parse_bytes("3B3G", &bytes) == 0);
assert_se(parse_size("3B3G", 1024, &bytes) == 0);
assert_se(bytes == 3ULL*1024*1024*1024 + 3);
assert_se(parse_bytes("3B3G4T", &bytes) == 0);
assert_se(parse_size("3B3G4T", 1024, &bytes) == 0);
assert_se(bytes == (4ULL*1024 + 3)*1024*1024*1024 + 3);
assert_se(parse_bytes("12P", &bytes) == 0);
assert_se(parse_size("12P", 1024, &bytes) == 0);
assert_se(bytes == 12ULL * 1024*1024*1024*1024*1024);
assert_se(parse_bytes("3E 2P", &bytes) == 0);
assert_se(parse_size("3E 2P", 1024, &bytes) == 0);
assert_se(bytes == (3 * 1024 + 2ULL) * 1024*1024*1024*1024*1024);
assert_se(parse_bytes("12X", &bytes) == -EINVAL);
assert_se(parse_size("12X", 1024, &bytes) == -EINVAL);
assert_se(parse_bytes("1024E", &bytes) == -ERANGE);
assert_se(parse_bytes("-1", &bytes) == -ERANGE);
assert_se(parse_bytes("-1024E", &bytes) == -ERANGE);
assert_se(parse_size("1024E", 1024, &bytes) == -ERANGE);
assert_se(parse_size("-1", 1024, &bytes) == -ERANGE);
assert_se(parse_size("-1024E", 1024, &bytes) == -ERANGE);
assert_se(parse_bytes("-1024P", &bytes) == -ERANGE);
assert_se(parse_size("-1024P", 1024, &bytes) == -ERANGE);
assert_se(parse_bytes("-10B 20K", &bytes) == -ERANGE);
assert_se(parse_size("-10B 20K", 1024, &bytes) == -ERANGE);
}
static void test_strextend(void) {
@@ -617,7 +617,7 @@ int main(int argc, char *argv[]) {
test_u64log2();
test_get_process_comm();
test_protect_errno();
test_parse_bytes();
test_parse_size();
test_strextend();
test_strrep();
test_split_pair();