Pádraig Brady <[EMAIL PROTECTED]> wrote: > Michael Geng wrote: >> Hi, >> >> When I'm running make distcheck on the Coreutils I get an error message >> >> ... >> gcc -std=gnu99 -I. -I../lib -I../lib -Werror -ansi -Wno-long-long -MT >> truncate.o -MD -MP -MF .deps/truncate.Tpo -c -o truncate.o truncate.c >> cc1: warnings being treated as errors >> truncate.c: In function 'parse_len': >> truncate.c:78: error: passing argument 4 of 'xstrtoimax' from incompatible >> pointer type >> make[6]: *** [truncate.o] Error 1 >> ... >> >> I'm running Linux on a PC and I compiled the Coreutils from git >> from this morning bootstrapped with Gnulib also from git from >> this morning. >> >> Is this a bug in the Coreutils or is there something wrong on my system? > > What version of glibc are you using. > I make the assumption that OFF_T_MAX = INTMAX_MAX,
Humph. I should have caught that in review. Here's a tentative patch: diff --git a/src/truncate.c b/src/truncate.c index 8febd58..52500d2 100644 --- a/src/truncate.c +++ b/src/truncate.c @@ -74,10 +74,21 @@ static int parse_len (char const *str, off_t *size) { enum strtol_error e; - /* OFF_T_MAX = INTMAX_MAX */ - e = xstrtoimax (str, NULL, 10, size, "EgGkKmMPtTYZ0"); - errno = (e == LONGINT_OVERFLOW) ? EOVERFLOW : 0; - return (e == LONGINT_OK) ? 0 : -1; + intmax_t tmp_size; + e = xstrtoimax (str, NULL, 10, &tmp_size, "EgGkKmMPtTYZ0"); + if (e == LONGINT_OK + && !(OFF_T_MIN <= tmp_size && tmp_size <= OFF_T_MAX)) + e = LONGINT_OVERFLOW; + + if (e == LONGINT_OK) + { + errno = 0; + *size = tmp_size; + return 0; + } + + errno = (e == LONGINT_OVERFLOW ? EOVERFLOW : 0); + return -1; } static void _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils