The following reply was made to PR kern/181153; it has been noted by GNATS.

From: Garrett Cooper <[email protected]>
To: Andrey Chernov <[email protected]>
Cc: "[email protected]" <[email protected]>
Subject: Re: bin/181153: sscanf doesn't skip whitespace properly
Date: Thu, 8 Aug 2013 19:03:10 -0700

 On Thu, Aug 8, 2013 at 6:24 PM, Andrey Chernov <[email protected]> wrote:
 > On 09.08.2013 4:23, Garrett Cooper wrote:
 >> ATF_TC_BODY(sscanf_whitespace, tc)
 >> {
 >>         const char str[] = "\f\n\r\t\v%z";
 >>         char c;
 >>
 >>         /* set of "white space" symbols from isspace(3) */
 >>         c = 0;
 >>         (void)sscanf(str, "%%%c", &c);
 >>         ATF_REQUIRE(c == 'z');
 >> }
 >
 > I doubt this exampe should skip whitespace. POSIX says:
 > "A directive that is an ordinary character shall be executed as follows:
 > the next byte shall be read from the input and compared with the byte
 > that comprises the directive; if the comparison shows that they are not
 > equivalent, the directive shall fail, and the differing and subsequent
 > bytes shall remain unread."
 > %% is the ordinary % character and no isspace(3) skipping mentioned in
 > this explanation.
 
 What about this line [*]?
 
 "
 A directive composed of one or more white-space characters is executed
 by reading input until no more valid input can be read, or up to the
 first byte which is not a white-space character which remains unread.
 "
 
 I think this is what the NetBSD test developer was shooting for originally.
 
 FWIW I did print out the value previously and it was (char)0, or '\0'.
 
 Thanks!
 
 * http://pubs.opengroup.org/onlinepubs/7908799/xsh/fscanf.html
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"

Reply via email to