2007-04-17 Brian Dessent <brian@dessent.net>
* libc/stdio/sscanf.c: Update documentation comments. * libc/stdio/vfscanf.c (__SVFSCANF_R): Handle j, t, and z modifiers.
This commit is contained in:
parent
2351dd18b4
commit
fb5750bfb4
|
@ -1,3 +1,8 @@
|
||||||
|
2007-04-17 Brian Dessent <brian@dessent.net>
|
||||||
|
|
||||||
|
* libc/stdio/sscanf.c: Update documentation comments.
|
||||||
|
* libc/stdio/vfscanf.c (__SVFSCANF_R): Handle j, t, and z modifiers.
|
||||||
|
|
||||||
2007-04-12 Eric Blake <ebb9@byu.net>
|
2007-04-12 Eric Blake <ebb9@byu.net>
|
||||||
|
|
||||||
* libc/stdio/vfprintf.c (_VFPRINTF_F, cvt): Don't confuse %F with %e.
|
* libc/stdio/vfprintf.c (_VFPRINTF_F, cvt): Don't confuse %F with %e.
|
||||||
|
|
|
@ -147,9 +147,9 @@ DESCRIPTION
|
||||||
Then <<scanf>> proceeds to the next format specification.
|
Then <<scanf>> proceeds to the next format specification.
|
||||||
|
|
||||||
o size
|
o size
|
||||||
<<h>>, <<l>>, and <<L>> are optional size characters which
|
<<h>>, <<j>>, <<l>>, <<L>>, <<t>>, and <<z>> are optional size
|
||||||
override the default way that <<scanf>> interprets the
|
characters which override the default way that <<scanf>>
|
||||||
data type of the corresponding argument.
|
interprets the data type of the corresponding argument.
|
||||||
|
|
||||||
|
|
||||||
.Modifier Type(s)
|
.Modifier Type(s)
|
||||||
|
@ -162,6 +162,11 @@ DESCRIPTION
|
||||||
. h D, I, O, U, X no effect
|
. h D, I, O, U, X no effect
|
||||||
. e, f, c, s, p
|
. e, f, c, s, p
|
||||||
.
|
.
|
||||||
|
. j d, i, o, u, x, n convert input to intmax_t,
|
||||||
|
. store in intmax_t object
|
||||||
|
.
|
||||||
|
. j all others no effect
|
||||||
|
.
|
||||||
. l d, i, o, u, x, n convert input to long,
|
. l d, i, o, u, x, n convert input to long,
|
||||||
. store in long object
|
. store in long object
|
||||||
.
|
.
|
||||||
|
@ -180,7 +185,18 @@ DESCRIPTION
|
||||||
. L e, f, g, E, G convert to long double,
|
. L e, f, g, E, G convert to long double,
|
||||||
. store in long double
|
. store in long double
|
||||||
.
|
.
|
||||||
. L all others no effect
|
. L all others no effect
|
||||||
|
.
|
||||||
|
. t d, i, o, u, x, n convert input to ptrdiff_t,
|
||||||
|
. store in ptrdiff_t object
|
||||||
|
.
|
||||||
|
. t all others no effect
|
||||||
|
.
|
||||||
|
. z d, i, o, u, x, n convert input to size_t,
|
||||||
|
. store in size_t object
|
||||||
|
.
|
||||||
|
. z all others no effect
|
||||||
|
.
|
||||||
|
|
||||||
|
|
||||||
o <[type]>
|
o <[type]>
|
||||||
|
|
|
@ -109,6 +109,7 @@ Supporting OS subroutines required:
|
||||||
#include <wctype.h>
|
#include <wctype.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <stdint.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -380,6 +381,43 @@ _DEFUN(__SVFSCANF_R, (rptr, fp, fmt0, ap),
|
||||||
else
|
else
|
||||||
flags |= SHORT;
|
flags |= SHORT;
|
||||||
goto again;
|
goto again;
|
||||||
|
case 'j': /* intmax_t */
|
||||||
|
if (sizeof (intmax_t) == sizeof (long))
|
||||||
|
flags |= LONG;
|
||||||
|
else
|
||||||
|
flags |= LONGDBL;
|
||||||
|
goto again;
|
||||||
|
case 't': /* ptrdiff_t */
|
||||||
|
if (sizeof (ptrdiff_t) < sizeof (int))
|
||||||
|
/* POSIX states ptrdiff_t is 16 or more bits, as
|
||||||
|
is short. */
|
||||||
|
flags |= SHORT;
|
||||||
|
else if (sizeof (ptrdiff_t) == sizeof (int))
|
||||||
|
/* no flag needed */;
|
||||||
|
else if (sizeof (ptrdiff_t) <= sizeof (long))
|
||||||
|
flags |= LONG;
|
||||||
|
else
|
||||||
|
/* POSIX states that at least one programming
|
||||||
|
environment must support ptrdiff_t no wider than
|
||||||
|
long, but that means other environments can
|
||||||
|
have ptrdiff_t as wide as long long. */
|
||||||
|
flags |= LONGDBL;
|
||||||
|
goto again;
|
||||||
|
case 'z': /* size_t */
|
||||||
|
if (sizeof (size_t) < sizeof (int))
|
||||||
|
/* POSIX states size_t is 16 or more bits, as is short. */
|
||||||
|
flags |= SHORT;
|
||||||
|
else if (sizeof (size_t) == sizeof (int))
|
||||||
|
/* no flag needed */;
|
||||||
|
else if (sizeof (size_t) <= sizeof (long))
|
||||||
|
flags |= LONG;
|
||||||
|
else
|
||||||
|
/* POSIX states that at least one programming
|
||||||
|
environment must support size_t no wider than
|
||||||
|
long, but that means other environments can
|
||||||
|
have size_t as wide as long long. */
|
||||||
|
flags |= LONGDBL;
|
||||||
|
goto again;
|
||||||
|
|
||||||
case '0':
|
case '0':
|
||||||
case '1':
|
case '1':
|
||||||
|
|
Loading…
Reference in New Issue