test-compress-benchmark: fix argument parsing on 32bit

The patch is not minimal, but a function to parse size_t is probably
going to come in handy in other places, so I think it's nicer to define
a proper parsing function than to open-code the cast.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2016-04-02 17:46:49 -04:00
parent 1a112b5273
commit 7c2da2ca88
3 changed files with 14 additions and 2 deletions

View File

@ -71,7 +71,7 @@ static ssize_t try_copy_file_range(int fd_in, loff_t *off_in,
int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink) {
bool try_cfr = true, try_sendfile = true, try_splice = true;
int r;
size_t m = SSIZE_MAX; /* that the maximum that sendfile and c_f_r accept */
size_t m = SSIZE_MAX; /* that is the maximum that sendfile and c_f_r accept */
assert(fdf >= 0);
assert(fdt >= 0);

View File

@ -90,6 +90,18 @@ static inline int safe_atoli(const char *s, long int *ret_u) {
}
#endif
#if SIZE_MAX == UINT_MAX
static inline int safe_atozu(const char *s, size_t *ret_u) {
assert_cc(sizeof(size_t) == sizeof(unsigned));
return safe_atou(s, ret_u);
}
#else
static inline int safe_atozu(const char *s, size_t *ret_u) {
assert_cc(sizeof(size_t) == sizeof(long unsigned));
return safe_atolu(s, ret_u);
}
#endif
int safe_atod(const char *s, double *ret_d);
int parse_fractional_part_u(const char **s, size_t digits, unsigned *res);

View File

@ -164,7 +164,7 @@ int main(int argc, char *argv[]) {
arg_duration = x * USEC_PER_SEC;
}
if (argc == 3)
(void) safe_atolu(argv[2], &arg_start);
(void) safe_atozu(argv[2], &arg_start);
else
arg_start = getpid();