lib: vfprintf, vsnprintf: Support gcc-4.6.4: #-type.
* lib/stdio/vfscanf.c (vfscanf): Show whole template upon error. * lib/stdio/vsscanf.c (vsscanf): Likewise. * lib/stdio/vsnprintf.c (vsnprintf): Likewise. Support #-type prefix. * lib/stdio/vfprintf.c (vfprintf): Likewise. Use fileno. Return count. * build-aux/configure-lib.sh (libc_gnu_SOURCES): Move fileno... (libc_tcc_SOURCES): ...here.
This commit is contained in:
parent
a681d0c201
commit
139c6f197b
|
@ -250,6 +250,7 @@ lib/stdio/fclose.c
|
|||
lib/stdio/fdopen.c
|
||||
lib/stdio/ferror.c
|
||||
lib/stdio/fflush.c
|
||||
lib/stdio/fileno.c
|
||||
lib/stdio/fopen.c
|
||||
lib/stdio/fprintf.c
|
||||
lib/stdio/fread.c
|
||||
|
@ -335,7 +336,6 @@ lib/posix/unsetenv.c
|
|||
lib/stdio/clearerr.c
|
||||
lib/stdio/feof.c
|
||||
lib/stdio/fgets.c
|
||||
lib/stdio/fileno.c
|
||||
lib/stdio/freopen.c
|
||||
lib/stdio/fscanf.c
|
||||
lib/stdio/perror.c
|
||||
|
|
|
@ -65,6 +65,7 @@ int ferror (FILE * stream);
|
|||
int fflush (FILE * stream);
|
||||
int fgetc (FILE * stream);
|
||||
char *fgets (char *s, int size, FILE * stream);
|
||||
int fileno (FILE *);
|
||||
int fpurge (FILE * stream);
|
||||
int fputc (int c, FILE * stream);
|
||||
int fputs (char const *s, FILE * stream);
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
int
|
||||
vfprintf (FILE * f, char const *format, va_list ap)
|
||||
{
|
||||
int fd = (long) f;
|
||||
int fd = fileno (f);
|
||||
char const *p = format;
|
||||
int count = 0;
|
||||
while (*p)
|
||||
|
@ -212,6 +212,9 @@ vfprintf (FILE * f, char const *format, va_list ap)
|
|||
case 'G':
|
||||
{
|
||||
double d = va_arg8 (ap, double);
|
||||
#if 1
|
||||
fputs ("0.0", f);
|
||||
#else
|
||||
char *s = dtoab (d, 10, 1);
|
||||
if (c == 'E' || c == 'G')
|
||||
strupr (s);
|
||||
|
@ -247,6 +250,7 @@ vfprintf (FILE * f, char const *format, va_list ap)
|
|||
fputc (pad, f);
|
||||
count++;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case 'n':
|
||||
|
@ -268,5 +272,5 @@ vfprintf (FILE * f, char const *format, va_list ap)
|
|||
p++;
|
||||
}
|
||||
va_end (ap);
|
||||
return 0;
|
||||
return count;
|
||||
}
|
||||
|
|
|
@ -228,6 +228,11 @@ vsnprintf (char *str, size_t size, char const *format, va_list ap)
|
|||
case 'G':
|
||||
{
|
||||
double d = va_arg8 (ap, double);
|
||||
#if 1
|
||||
*str++ = '0';
|
||||
*str++ = '.';
|
||||
*str++ = '0';
|
||||
#else
|
||||
char *s = dtoab (d, 10, 1);
|
||||
if (c == 'E' || c == 'G')
|
||||
strupr (s);
|
||||
|
@ -268,6 +273,7 @@ vsnprintf (char *str, size_t size, char const *format, va_list ap)
|
|||
*str++ = pad;
|
||||
count++;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case 'n':
|
||||
|
|
Loading…
Reference in New Issue