From owner-freebsd-bugs Sun Feb 18 10:10: 6 2001 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id E948337B401 for ; Sun, 18 Feb 2001 10:10:02 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.11.1/8.11.1) id f1IIA2Q74505; Sun, 18 Feb 2001 10:10:02 -0800 (PST) (envelope-from gnats) Date: Sun, 18 Feb 2001 10:10:02 -0800 (PST) Message-Id: <200102181810.f1IIA2Q74505@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: Rolf Grossmann Subject: Re: misc/19994: sscanf() fails on 64-bit operations Reply-To: Rolf Grossmann Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org The following reply was made to PR misc/19994; it has been noted by GNATS. From: Rolf Grossmann To: freebsd-gnats-submit@FreeBSD.org, j_guojun@lbl.gov Cc: Subject: Re: misc/19994: sscanf() fails on 64-bit operations Date: Sun, 18 Feb 2001 19:04:05 +0100 (CET) Hi, I really think we should support %lld with *scanf. After all, we support it with *printf. It bit me when trying to compile the latest ORBit (0.5.7). Here's a patch that does the trick. Bye, Rolf Index: stdio/vfscanf.c =================================================================== RCS file: /home/ncvs/src/lib/libc/stdio/vfscanf.c,v retrieving revision 1.14 diff -c -r1.14 vfscanf.c *** stdio/vfscanf.c 1999/08/28 00:01:20 1.14 --- stdio/vfscanf.c 2001/02/18 18:03:04 *************** *** 165,171 **** flags |= SUPPRESS; goto again; case 'l': ! flags |= LONG; goto again; case 'q': flags |= QUAD; --- 165,174 ---- flags |= SUPPRESS; goto again; case 'l': ! if (flags & LONG) ! flags |= QUAD; ! else ! flags |= LONG; goto again; case 'q': flags |= QUAD; *************** *** 265,276 **** nconversions++; if (flags & SUPPRESS) /* ??? */ continue; ! if (flags & SHORT) ! *va_arg(ap, short *) = nread; else if (flags & LONG) *va_arg(ap, long *) = nread; ! else if (flags & QUAD) ! *va_arg(ap, quad_t *) = nread; else *va_arg(ap, int *) = nread; continue; --- 268,279 ---- nconversions++; if (flags & SUPPRESS) /* ??? */ continue; ! if (flags & QUAD) ! *va_arg(ap, quad_t *) = nread; else if (flags & LONG) *va_arg(ap, long *) = nread; ! else if (flags & SHORT) ! *va_arg(ap, short *) = nread; else *va_arg(ap, int *) = nread; continue; *************** *** 555,566 **** if (flags & POINTER) *va_arg(ap, void **) = (void *)(u_long)res; - else if (flags & SHORT) - *va_arg(ap, short *) = res; - else if (flags & LONG) - *va_arg(ap, long *) = res; else if (flags & QUAD) *va_arg(ap, quad_t *) = res; else *va_arg(ap, int *) = res; nassigned++; --- 558,569 ---- if (flags & POINTER) *va_arg(ap, void **) = (void *)(u_long)res; else if (flags & QUAD) *va_arg(ap, quad_t *) = res; + else if (flags & LONG) + *va_arg(ap, long *) = res; + else if (flags & SHORT) + *va_arg(ap, short *) = res; else *va_arg(ap, int *) = res; nassigned++; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message