msvcrt-A01: vfprintf split

Jaco Greeff jaco at puxedo.org
Sun Nov 3 09:36:42 CST 2002


This is the first in my msvcrt-A?? series of patches,
consolidating all the changes made over the last while to
msvcrt, incorporating changes as requested on the wine-devel
mailing list and making sure that everything still applies
cleanly to the CVS tree.

License:
LGPL

Changelog:
* dlls/msvcrt/file.c, dlls/msvcrt/Makefile.in, dlls/msvcrt/vfprintf.c:
Jaco Greeff <jaco at puxedo.org>
- Moved the vfprintf and vfwprintf functions to vfprintf.c to allow
for the start of a full vfprintf implementation

--[ inline patch ]--

diff -aurN msvcrt-A00/dlls/msvcrt/file.c msvcrt-A01/dlls/msvcrt/file.c
--- msvcrt-A00/dlls/msvcrt/file.c	2002-10-25 03:12:01.000000000 +0000
+++ msvcrt-A01/dlls/msvcrt/file.c	2002-11-02 19:45:39.000000000 +0000
@@ -2190,59 +2190,6 @@
 }
 
 /*********************************************************************
- *		vfprintf (MSVCRT.@)
- */
-int MSVCRT_vfprintf(MSVCRT_FILE* file, const char *format, va_list valist)
-{
-  char buf[2048], *mem = buf;
-  int written, resize = sizeof(buf), retval;
-  /* There are two conventions for vsnprintf failing:
-   * Return -1 if we truncated, or
-   * Return the number of bytes that would have been written
-   * The code below handles both cases
-   */
-  while ((written = vsnprintf(mem, resize, format, valist)) == -1 ||
-          written > resize)
-  {
-    resize = (written == -1 ? resize * 2 : written + 1);
-    if (mem != buf)
-      MSVCRT_free (mem);
-    if (!(mem = (char *)MSVCRT_malloc(resize)))
-      return MSVCRT_EOF;
-  }
-  retval = MSVCRT_fwrite(mem, sizeof(*mem), written, file);
-  if (mem != buf)
-    MSVCRT_free (mem);
-  return retval;
-}
-
-/*********************************************************************
- *		vfwprintf (MSVCRT.@)
- * FIXME:
- * Is final char included in written (then resize is too big) or not
- * (then we must test for equality too)?
- */
-int MSVCRT_vfwprintf(MSVCRT_FILE* file, const WCHAR *format, va_list valist)
-{
-  WCHAR buf[2048], *mem = buf;
-  int written, resize = sizeof(buf) / sizeof(WCHAR), retval;
-  /* See vfprintf comments */
-  while ((written = _vsnwprintf(mem, resize, format, valist)) == -1 ||
-          written > resize)
-  {
-    resize = (written == -1 ? resize * 2 : written + sizeof(WCHAR));
-    if (mem != buf)
-      MSVCRT_free (mem);
-    if (!(mem = (WCHAR *)MSVCRT_malloc(resize*sizeof(*mem))))
-      return MSVCRT_EOF;
-  }
-  retval = MSVCRT_fwrite(mem, sizeof(*mem), written, file);
-  if (mem != buf)
-    MSVCRT_free (mem);
-  return retval;
-}
-
-/*********************************************************************
  *		vprintf (MSVCRT.@)
  */
 int MSVCRT_vprintf(const char *format, va_list valist)
diff -aurN msvcrt-A00/dlls/msvcrt/Makefile.in msvcrt-A01/dlls/msvcrt/Makefile.in
--- msvcrt-A00/dlls/msvcrt/Makefile.in	2002-10-30 23:49:03.000000000 +0000
+++ msvcrt-A01/dlls/msvcrt/Makefile.in	2002-11-02 19:39:22.000000000 +0000
@@ -35,6 +35,7 @@
 	string.c \
 	thread.c \
 	time.c \
+	vfprintf.c \
 	wcs.c

 SUBDIRS = tests
diff -aurN msvcrt-A00/dlls/msvcrt/vfprintf.c msvcrt-A01/dlls/msvcrt/vfprintf.c
--- msvcrt-A00/dlls/msvcrt/vfprintf.c	1970-01-01 00:00:00.000000000 +0000
+++ msvcrt-A01/dlls/msvcrt/vfprintf.c	2002-11-03 11:23:45.000000000 +0000
@@ -0,0 +1,97 @@
+/* vfprintf, vfwprintf for MSVCRT and internal helper functions thereof
+ *
+ * Copyright 2002 Jaco Greeff
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#include <stdarg.h>
+#include <string.h>
+#include <stdio.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include "winbase.h"
+#include "winnls.h"
+#include "wine/unicode.h"
+#include "msvcrt/stdio.h"
+#include "msvcrt/stdlib.h"
+#include "msvcrt/string.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
+
+/*********************************************************************
+ *      vfprintf (MSVCRT.@)
+ *
+ * FIXME: We don't handle the Microsoft format flag extentions
+ * %C and %S at all
+ */
+int MSVCRT_vfprintf(MSVCRT_FILE *fFile, const char *szFormat, va_list vaList)
+{
+    char buf[2048], *mem = buf;
+    int written, resize = sizeof(buf), retval;
+
+    /* There are two conventions for vsnprintf failing:
+    * Return -1 if we truncated, or
+    * Return the number of bytes that would have been written
+    * The code below handles both cases
+    */
+    while ((written = vsnprintf(mem, resize, szFormat, vaList)) == -1 ||
+            written > resize)
+    {
+        resize = (written == -1 ? resize * 2 : written + 1);
+        if (mem != buf)
+        MSVCRT_free (mem);
+        if (!(mem = (char *)MSVCRT_malloc(resize)))
+        return MSVCRT_EOF;
+    }
+    retval = MSVCRT_fwrite(mem, sizeof(*mem), written, fFile);
+    if (mem != buf)
+        MSVCRT_free (mem);
+    return retval;
+}
+
+/*********************************************************************
+ *      vfwprintf (MSVCRT.@)
+ *
+ * FIXME: We don't handle the Microsoft format flag extentions
+ * %C and %S at all
+ */
+int MSVCRT_vfwprintf(MSVCRT_FILE *fFile, const WCHAR *szFormat, va_list vaList)
+{
+    WCHAR buf[2048], *mem = buf;
+    int written, resize = sizeof(buf) / sizeof(WCHAR), retval;
+
+    /* See vfprintf comments */
+    while ((written = _vsnwprintf(mem, resize, szFormat, vaList)) == -1 ||
+            written > resize)
+    {
+        resize = (written == -1 ? resize * 2 : written + sizeof(WCHAR));
+        if (mem != buf)
+        MSVCRT_free (mem);
+        if (!(mem = (WCHAR *)MSVCRT_malloc(resize*sizeof(*mem))))
+        return MSVCRT_EOF;
+    }
+    retval = MSVCRT_fwrite(mem, sizeof(*mem), written, fFile);
+    if (mem != buf)
+        MSVCRT_free (mem);
+    return retval;
+}




More information about the wine-patches mailing list