tree-wide: never use the off_t unless glibc makes us use it
off_t is a really weird type as it is usually 64bit these days (at least in sane programs), but could theoretically be 32bit. We don't support off_t as 32bit builds though, but still constantly deal with safely converting from off_t to other types and back for no point. Hence, never use the type anymore. Always use uint64_t instead. This has various benefits, including that we can expose these values directly as D-Bus properties, and also that the values parse the same in all cases.
This commit is contained in:
@@ -1434,7 +1434,7 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen
|
||||
r = sd_bus_message_append(m, "v", "b", r);
|
||||
|
||||
} else if (streq(field, "MemoryLimit")) {
|
||||
off_t bytes;
|
||||
uint64_t bytes;
|
||||
|
||||
r = parse_size(eq, 1024, &bytes);
|
||||
if (r < 0) {
|
||||
@@ -1442,7 +1442,7 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
r = sd_bus_message_append(m, "v", "t", (uint64_t) bytes);
|
||||
r = sd_bus_message_append(m, "v", "t", bytes);
|
||||
|
||||
} else if (STR_IN_SET(field, "CPUShares", "BlockIOWeight")) {
|
||||
uint64_t u;
|
||||
@@ -1492,7 +1492,7 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen
|
||||
r = sd_bus_message_append(m, "v", "a(st)", 0);
|
||||
else {
|
||||
const char *path, *bandwidth, *e;
|
||||
off_t bytes;
|
||||
uint64_t bytes;
|
||||
|
||||
e = strchr(eq, ' ');
|
||||
if (e) {
|
||||
@@ -1514,7 +1514,7 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
r = sd_bus_message_append(m, "v", "a(st)", 1, path, (uint64_t) bytes);
|
||||
r = sd_bus_message_append(m, "v", "a(st)", 1, path, bytes);
|
||||
}
|
||||
|
||||
} else if (streq(field, "BlockIODeviceWeight")) {
|
||||
|
||||
+13
-15
@@ -469,7 +469,7 @@ int config_parse_iec_size(const char* unit,
|
||||
void *userdata) {
|
||||
|
||||
size_t *sz = data;
|
||||
off_t o;
|
||||
uint64_t v;
|
||||
int r;
|
||||
|
||||
assert(filename);
|
||||
@@ -477,13 +477,13 @@ int config_parse_iec_size(const char* unit,
|
||||
assert(rvalue);
|
||||
assert(data);
|
||||
|
||||
r = parse_size(rvalue, 1024, &o);
|
||||
if (r < 0 || (off_t) (size_t) o != o) {
|
||||
log_syntax(unit, LOG_ERR, filename, line, r < 0 ? -r : ERANGE, "Failed to parse size value, ignoring: %s", rvalue);
|
||||
r = parse_size(rvalue, 1024, &v);
|
||||
if (r < 0 || (uint64_t) (size_t) v != v) {
|
||||
log_syntax(unit, LOG_ERR, filename, line, r < 0 ? r : ERANGE, "Failed to parse size value, ignoring: %s", rvalue);
|
||||
return 0;
|
||||
}
|
||||
|
||||
*sz = (size_t) o;
|
||||
*sz = (size_t) v;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -499,7 +499,7 @@ int config_parse_si_size(const char* unit,
|
||||
void *userdata) {
|
||||
|
||||
size_t *sz = data;
|
||||
off_t o;
|
||||
uint64_t v;
|
||||
int r;
|
||||
|
||||
assert(filename);
|
||||
@@ -507,17 +507,17 @@ int config_parse_si_size(const char* unit,
|
||||
assert(rvalue);
|
||||
assert(data);
|
||||
|
||||
r = parse_size(rvalue, 1000, &o);
|
||||
if (r < 0 || (off_t) (size_t) o != o) {
|
||||
log_syntax(unit, LOG_ERR, filename, line, r < 0 ? -r : ERANGE, "Failed to parse size value, ignoring: %s", rvalue);
|
||||
r = parse_size(rvalue, 1000, &v);
|
||||
if (r < 0 || (uint64_t) (size_t) v != v) {
|
||||
log_syntax(unit, LOG_ERR, filename, line, r < 0 ? r : ERANGE, "Failed to parse size value, ignoring: %s", rvalue);
|
||||
return 0;
|
||||
}
|
||||
|
||||
*sz = (size_t) o;
|
||||
*sz = (size_t) v;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int config_parse_iec_off(const char* unit,
|
||||
int config_parse_iec_uint64(const char* unit,
|
||||
const char *filename,
|
||||
unsigned line,
|
||||
const char *section,
|
||||
@@ -528,7 +528,7 @@ int config_parse_iec_off(const char* unit,
|
||||
void *data,
|
||||
void *userdata) {
|
||||
|
||||
off_t *bytes = data;
|
||||
uint64_t *bytes = data;
|
||||
int r;
|
||||
|
||||
assert(filename);
|
||||
@@ -536,11 +536,9 @@ int config_parse_iec_off(const char* unit,
|
||||
assert(rvalue);
|
||||
assert(data);
|
||||
|
||||
assert_cc(sizeof(off_t) == sizeof(uint64_t));
|
||||
|
||||
r = parse_size(rvalue, 1024, bytes);
|
||||
if (r < 0)
|
||||
log_syntax(unit, LOG_ERR, filename, line, -r, "Failed to parse size value, ignoring: %s", rvalue);
|
||||
log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse size value, ignoring: %s", rvalue);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ int config_parse_uint64(const char *unit, const char *filename, unsigned line, c
|
||||
int config_parse_double(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_iec_size(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_si_size(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_iec_off(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_iec_uint64(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_bool(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_tristate(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_string(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ static pid_t pager_pid = 0;
|
||||
noreturn static void pager_fallback(void) {
|
||||
int r;
|
||||
|
||||
r = copy_bytes(STDIN_FILENO, STDOUT_FILENO, (off_t) -1, false);
|
||||
r = copy_bytes(STDIN_FILENO, STDOUT_FILENO, (uint64_t) -1, false);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Internal pager failed: %m");
|
||||
_exit(EXIT_FAILURE);
|
||||
|
||||
Reference in New Issue
Block a user