Yeah. Have something similar in my tree. If -Wall is happy, so am I.

Does it explain 5.4 problems though.
I did not manage to reproduce those so far.

    -Otto


> Op 6 okt. 2014 om 17:38 heeft Philip Guenther <guent...@gmail.com> het
volgende geschreven:
>
>> On Wed, 1 Oct 2014, Otto Moerbeek wrote:
>>> On Tue, Sep 30, 2014 at 07:31:20PM +0200, Otto Moerbeek wrote:
>>>
>>>> On Tue, Sep 30, 2014 at 11:20:23AM -0500, Boris Goldberg wrote:
>>>>
>>>> Hello Otto,
>>>>
>>>> Wednesday, September 24, 2014, 2:36:58 PM, you wrote:
>>>>
>>>> OM> Try to come up with a reproducable test case, include all relevant
>>>> OM> info and then we can investigate.
>>>
>>> I indeed see strange things on sparc64 more or less -current. Not
>>> exactly what you are seeing, but for starters, edquota -t is giving me
>>> what looks like unitialized mem. I hope to find some time to
>>> investigate further...
>>>
>>>    -Otto
>>
>> There is indeed a bug in edquota -t in 5.5 and newer due to the time_t
>> change, but that is unrelated to what you are seeing.
>
> Poked at this last night and came up with this, eliminating the bogus
> casting from time_t* to int*.
>
> Index: edquota.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/edquota/edquota.c,v
> retrieving revision 1.53
> diff -u -p -r1.53 edquota.c
> --- edquota.c    20 Jul 2014 01:38:40 -0000    1.53
> +++ edquota.c    6 Oct 2014 15:34:24 -0000
> @@ -77,7 +77,7 @@ int    readprivs(struct quotause *, int);
> int    writetimes(struct quotause *, int, int);
> int    readtimes(struct quotause *, int);
> char *    cvtstoa(time_t);
> -int    cvtatos(time_t, char *, time_t *);
> +int    cvtatos(long long, char *, time_t *);
> void    freeprivs(struct quotause *);
> int    alldigits(char *s);
> int    hasquota(struct fstab *, int, char **);
> @@ -569,7 +569,8 @@ readtimes(struct quotause *quplist, int
>    FILE *fp;
>    int cnt;
>    char *cp;
> -    time_t itime, btime, iseconds, bseconds;
> +    long long itime, btime;
> +    time_t iseconds, bseconds;
>    char *fsp, bunits[10], iunits[10], line1[BUFSIZ];
>
>    lseek(infd, 0, SEEK_SET);
> @@ -594,8 +595,8 @@ readtimes(struct quotause *quplist, int
>            return(0);
>        }
>        cnt = sscanf(cp,
> -            " block grace period: %d %9s file grace period: %d %9s",
> -            (int *)&btime, bunits, (int *)&itime, iunits);
> +            " block grace period: %lld %9s file grace period: %lld %9s",
> +            &btime, bunits, &itime, iunits);
>        if (cnt != 4) {
>            warnx("%s:%s: bad format", fsp, cp);
>            return(0);
> @@ -639,19 +640,19 @@ cvtstoa(time_t time)
>
>    if (time % (24 * 60 * 60) == 0) {
>        time /= 24 * 60 * 60;
> -        (void)snprintf(buf, sizeof buf, "%d day%s", (int)time,
> +        (void)snprintf(buf, sizeof buf, "%lld day%s", (long long)time,
>            time == 1 ? "" : "s");
>    } else if (time % (60 * 60) == 0) {
>        time /= 60 * 60;
> -        (void)snprintf(buf, sizeof buf, "%d hour%s", (int)time,
> +        (void)snprintf(buf, sizeof buf, "%lld hour%s", (long long)time,
>            time == 1 ? "" : "s");
>    } else if (time % 60 == 0) {
>        time /= 60;
> -        (void)snprintf(buf, sizeof buf, "%d minute%s", (int)time,
> -            time == 1 ? "" : "s");
> +        (void)snprintf(buf, sizeof buf, "%lld minute%s",
> +            (long long)time, time == 1 ? "" : "s");
>    } else
> -        (void)snprintf(buf, sizeof buf, "%d second%s", (int)time,
> -            time == 1 ? "" : "s");
> +        (void)snprintf(buf, sizeof buf, "%lld second%s",
> +            (long long)time, time == 1 ? "" : "s");
>    return(buf);
> }
>
> @@ -659,7 +660,7 @@ cvtstoa(time_t time)
>  * Convert ASCII input times to seconds.
>  */
> int
> -cvtatos(time_t time, char *units, time_t *seconds)
> +cvtatos(long long time, char *units, time_t *seconds)
> {
>
>    if (bcmp(units, "second", 6) == 0)

Reply via email to