fix "printf("%4.1f\n", (double)0.0);"
[unix-history] / usr / src / lib / libc / stdio / fprintf.c
index 54125e2..d6d63ea 100644 (file)
@@ -1,22 +1,40 @@
-/* @(#)fprintf.c       4.2 (Berkeley) %G% */
-#include       <stdio.h>
+/*
+ * Copyright (c) 1980 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that this notice is preserved and that due credit is given
+ * to the University of California at Berkeley. The name of the University
+ * may not be used to endorse or promote products derived from this
+ * software without specific prior written permission. This software
+ * is provided ``as is'' without express or implied warranty.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)fprintf.c  5.3 (Berkeley) %G%";
+#endif /* LIBC_SCCS and not lint */
+
+#include <stdio.h>
 
 fprintf(iop, fmt, args)
 
 fprintf(iop, fmt, args)
-FILE *iop;
-char *fmt;
+       register FILE *iop;
+       char *fmt;
+       int args;
 {
 {
+       int len;
        char localbuf[BUFSIZ];
 
        if (iop->_flag & _IONBF) {
                iop->_flag &= ~_IONBF;
                iop->_ptr = iop->_base = localbuf;
                iop->_bufsiz = BUFSIZ;
        char localbuf[BUFSIZ];
 
        if (iop->_flag & _IONBF) {
                iop->_flag &= ~_IONBF;
                iop->_ptr = iop->_base = localbuf;
                iop->_bufsiz = BUFSIZ;
-               _doprnt(fmt, &args, iop);
+               len = _doprnt(fmt, &args, iop);
                fflush(iop);
                iop->_flag |= _IONBF;
                iop->_base = NULL;
                iop->_bufsiz = NULL;
                fflush(iop);
                iop->_flag |= _IONBF;
                iop->_base = NULL;
                iop->_bufsiz = NULL;
+               iop->_cnt = 0;
        } else
        } else
-               _doprnt(fmt, &args, iop);
-       return(ferror(iop)? EOF: 0);
+               len = _doprnt(fmt, &args, iop);
+       return(ferror(iop) ? EOF : len);
 }
 }