diff --git a/include/stdio.h b/include/stdio.h index 82a9e4df..de11d350 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -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); diff --git a/lib/stdio/vfprintf.c b/lib/stdio/vfprintf.c index 7f2c55ee..773ea2ec 100644 --- a/lib/stdio/vfprintf.c +++ b/lib/stdio/vfprintf.c @@ -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); @@ -248,6 +251,7 @@ vfprintf (FILE * f, char const *format, va_list ap) count++; } break; +#endif } case 'n': { @@ -268,5 +272,5 @@ vfprintf (FILE * f, char const *format, va_list ap) p++; } va_end (ap); - return 0; + return count; }