diff --git a/mingw-w64-crt/stdio/mingw_fprintf.c b/mingw-w64-crt/stdio/mingw_fprintf.c
index 2b449fe..011a634 100644
--- a/mingw-w64-crt/stdio/mingw_fprintf.c
+++ b/mingw-w64-crt/stdio/mingw_fprintf.c
@@ -44,9 +44,9 @@
 
 #include "mingw_pformat.h"
 
-int __cdecl __fprintf (FILE *, const char *, ...) __MINGW_NOTHROW;
+int __cdecl __fprintf (FILE *, const APICHAR *, ...) __MINGW_NOTHROW;
 
-int __cdecl __fprintf( FILE *stream, const char *fmt, ... )
+int __cdecl __fprintf(FILE *stream, const APICHAR *fmt, ...)
 {
   register int retval;
   va_list argv; va_start( argv, fmt );
@@ -54,4 +54,3 @@
   va_end( argv );
   return retval;
 }
-
diff --git a/mingw-w64-crt/stdio/mingw_pformat.c b/mingw-w64-crt/stdio/mingw_pformat.c
index 5f29b76..34a1df0 100644
--- a/mingw-w64-crt/stdio/mingw_pformat.c
+++ b/mingw-w64-crt/stdio/mingw_pformat.c
@@ -274,12 +274,12 @@
       /*
        * This is single character output to a FILE stream...
        */
-      fputc( c, (FILE *)(stream->dest) );
+      __fputc(c, (FILE *)(stream->dest));
 
     else
       /* Whereas, this is to an internal memory buffer...
        */
-      ((char *)(stream->dest))[stream->count] = c;
+      ((APICHAR *)(stream->dest))[stream->count] = c;
   }
   ++stream->count;
 }
@@ -330,11 +330,36 @@
 
   /* Emit the data...
    */
+#ifdef __BUILD_WIDEAPI
+  {
+    /* mbrtowc */
+    size_t l;
+    wchar_t w[12], *p;
+    while( count > 0 )
+    {
+      mbstate_t ps;
+      memset(&ps, 0, sizeof(ps) );
+      --count;
+      p = &w[0];
+      l = mbrtowc (p, s, strlen (s), &ps);
+      if (!l)
+        break;
+      if ((ssize_t)l < 0)
+      {
+        l = 1;
+        w[0] = (wchar_t) *s;
+      }
+      s += l;
+      __pformat_putc((int)w[0], stream);
+    }
+  }
+#else
   while( count-- )
     /*
      * copying the requisite number of characters from the input.
      */
     __pformat_putc( *s++, stream );
+#endif
 
   /* If we still haven't consumed the entire specified field width,
    * we must be doing flush left justification; any residual width
@@ -373,7 +398,9 @@
    * by byte, through `__pformat_putc()', to ensure that any specified
    * output quota is honoured.
    */
-  char buf[16]; mbstate_t state; int len = wcrtomb( buf, L'\0', &state );
+  char buf[16];
+  mbstate_t state;
+  int len = wcrtomb(buf, L'\0', &state);
 
   if( (stream->precision >= 0) && (count > stream->precision) )
     /*
@@ -408,13 +435,19 @@
   /* Emit the data, converting each character from the wide
    * to the multibyte domain as we go...
    */
+#ifdef __BUILD_WIDEAPI
+  while(count-- > 0 && *s != 0)
+  {
+      __pformat_putc(*s++, stream);
+  }
+#else
   while( (count-- > 0) && ((len = wcrtomb( buf, *s++, &state )) > 0) )
   {
     char *p = buf;
     while( len-- > 0 )
       __pformat_putc( *p++, stream );
   }
-
+#endif
   /* If we still haven't consumed the entire specified field width,
    * we must be doing flush left justification; any residual width
    * must be filled with blanks, to the right of the output value.
@@ -1729,7 +1762,8 @@
   }
 }
 
-int __pformat( int flags, void *dest, int max, const char *fmt, va_list argv )
+int
+__pformat (int flags, void *dest, int max, const APICHAR *fmt, va_list argv)
 {
   int c;
 
@@ -1767,7 +1801,7 @@
       /* Save the current format scan position, so that we can backtrack
        * in the event of encountering an invalid format specification...
        */
-      const char *backtrack = fmt;
+      const APICHAR *backtrack = fmt;
 
       /* Restart capture for dynamic field width and precision specs...
        */
@@ -1835,7 +1869,6 @@
 	      wchar_t argval = (wchar_t)(va_arg( argv, int ));
 	      __pformat_wputchars( &argval, 1, &stream );
 	    }
-
 	    else
 	    { /* while anything else is simply taken as `char', (which
 	       * is also promoted to an `int' argument)...
@@ -1854,20 +1887,18 @@
 
 	  case 's':
 	    if( (length == PFORMAT_LENGTH_LONG)
-	    ||  (length == PFORMAT_LENGTH_LLONG)  )
+	         || (length == PFORMAT_LENGTH_LLONG))
 	    {
 	      /* considering any `long' type modifier as a reference to
 	       * a `wchar_t' string...
 	       */
 	      __pformat_wcputs( va_arg( argv, wchar_t * ), &stream );
 	    }
-
 	    else
 	      /* This is normal string output;
 	       * we simply invoke the appropriate handler...
 	       */
 	      __pformat_puts( va_arg( argv, char * ), &stream );
-
 	    goto format_scan;
 
 	  case 'o':
diff --git a/mingw-w64-crt/stdio/mingw_pformat.h b/mingw-w64-crt/stdio/mingw_pformat.h
index 5e498c5..898abad 100644
--- a/mingw-w64-crt/stdio/mingw_pformat.h
+++ b/mingw-w64-crt/stdio/mingw_pformat.h
@@ -50,6 +50,12 @@
 # endif
 #endif
 
+#ifdef __BUILD_WIDEAPI
+#define APICHAR	wchar_t
+#else
+#define APICHAR char
+#endif
+
 /* The following are the declarations specific to the `pformat' API...
  */
 #define PFORMAT_TO_FILE     0x1000
@@ -60,7 +66,22 @@
   * Map MinGW specific function names, for use in place of the generic
   * implementation defined equivalent function names.
   */
+#ifdef __BUILD_WIDEAPI
+# define __pformat        __mingw_wpformat
+#define __fputc(X,STR) fputwc((wchar_t) (X), (STR))
+
+# define __printf         __mingw_wprintf
+# define __fprintf        __mingw_fwprintf
+# define __sprintf        __mingw_swprintf
+# define __snprintf       __mingw_snwprintf
+
+# define __vprintf        __mingw_vwprintf
+# define __vfprintf       __mingw_vfwprintf
+# define __vsprintf       __mingw_vswprintf
+# define __vsnprintf      __mingw_vsnwprintf
+#else
 # define __pformat        __mingw_pformat
+#define __fputc(X,STR) fputc((X), (STR))
 
 # define __printf         __mingw_printf
 # define __fprintf        __mingw_fprintf
@@ -71,9 +92,8 @@
 # define __vfprintf       __mingw_vfprintf
 # define __vsprintf       __mingw_vsprintf
 # define __vsnprintf      __mingw_vsnprintf
-
+#endif /* __BUILD_WIDEAPI */
 #endif
 
-int __cdecl __pformat( int, void *, int, const char *, va_list ) __MINGW_NOTHROW;
-
+int __cdecl __pformat(int, void *, int, const APICHAR *, va_list) __MINGW_NOTHROW;
 #endif /* !defined PFORMAT_H */
diff --git a/mingw-w64-crt/stdio/mingw_printf.c b/mingw-w64-crt/stdio/mingw_printf.c
index 515d721..5d23b02 100644
--- a/mingw-w64-crt/stdio/mingw_printf.c
+++ b/mingw-w64-crt/stdio/mingw_printf.c
@@ -44,9 +44,9 @@
 
 #include "mingw_pformat.h"
 
-int __cdecl __printf( const char *, ... ) __MINGW_NOTHROW;
+int __cdecl __printf(const APICHAR *, ...) __MINGW_NOTHROW;
 
-int __cdecl __printf( const char *fmt, ... )
+int __cdecl __printf(const APICHAR *fmt, ...)
 {
   register int retval;
   va_list argv; va_start( argv, fmt );
diff --git a/mingw-w64-crt/stdio/mingw_snprintf.c b/mingw-w64-crt/stdio/mingw_snprintf.c
index 4618860..0c0d762 100644
--- a/mingw-w64-crt/stdio/mingw_snprintf.c
+++ b/mingw-w64-crt/stdio/mingw_snprintf.c
@@ -28,14 +28,13 @@
 
 #include "mingw_pformat.h"
 
-int __cdecl __snprintf (char *, size_t, const char *fmt, ...) __MINGW_NOTHROW;
-int __cdecl __vsnprintf (char *, size_t, const char *fmt, va_list) __MINGW_NOTHROW;
+int __cdecl __snprintf (APICHAR *, size_t, const APICHAR *fmt, ...) __MINGW_NOTHROW;
+int __cdecl __vsnprintf (APICHAR *, size_t, const APICHAR *fmt, va_list) __MINGW_NOTHROW;
 
-int __cdecl __snprintf( char *buf, size_t length, const char *fmt, ... )
+int __cdecl __snprintf(APICHAR *buf, size_t length, const APICHAR *fmt, ...)
 {
   va_list argv; va_start( argv, fmt );
   register int retval = __vsnprintf( buf, length, fmt, argv );
   va_end( argv );
   return retval;
 }
-
diff --git a/mingw-w64-crt/stdio/mingw_sprintf.c b/mingw-w64-crt/stdio/mingw_sprintf.c
index be8cfb9..4b46eb5 100644
--- a/mingw-w64-crt/stdio/mingw_sprintf.c
+++ b/mingw-w64-crt/stdio/mingw_sprintf.c
@@ -44,9 +44,9 @@
 
 #include "mingw_pformat.h"
 
-int __cdecl __sprintf (char *, const char *, ...) __MINGW_NOTHROW;
+int __cdecl __sprintf (APICHAR *, const APICHAR *, ...) __MINGW_NOTHROW;
 
-int __cdecl __sprintf( char *buf, const char *fmt, ... )
+int __cdecl __sprintf(APICHAR *buf, const APICHAR *fmt, ...)
 {
   register int retval;
   va_list argv; va_start( argv, fmt );
@@ -54,4 +54,3 @@
   va_end( argv );
   return retval;
 }
-
diff --git a/mingw-w64-crt/stdio/mingw_vfprintf.c b/mingw-w64-crt/stdio/mingw_vfprintf.c
index c6f4b07..68a0008 100644
--- a/mingw-w64-crt/stdio/mingw_vfprintf.c
+++ b/mingw-w64-crt/stdio/mingw_vfprintf.c
@@ -44,10 +44,9 @@
 
 #include "mingw_pformat.h"
 
-int __cdecl __vfprintf (FILE *, const char *, va_list) __MINGW_NOTHROW;
+int __cdecl __vfprintf (FILE *, const APICHAR *, va_list) __MINGW_NOTHROW;
 
-int __cdecl __vfprintf( FILE *stream, const char *fmt, va_list argv )
+int __cdecl __vfprintf(FILE *stream, const APICHAR *fmt, va_list argv)
 {
   return __pformat( PFORMAT_TO_FILE | PFORMAT_NOLIMIT, stream, 0, fmt, argv );
 }
-
diff --git a/mingw-w64-crt/stdio/mingw_vprintf.c b/mingw-w64-crt/stdio/mingw_vprintf.c
index 1d5d2a5..c60431a 100644
--- a/mingw-w64-crt/stdio/mingw_vprintf.c
+++ b/mingw-w64-crt/stdio/mingw_vprintf.c
@@ -44,10 +44,9 @@
 
 #include "mingw_pformat.h"
 
-int __cdecl __vprintf (const char *, va_list) __MINGW_NOTHROW;
+int __cdecl __vprintf (const APICHAR *, va_list) __MINGW_NOTHROW;
 
-int __cdecl __vprintf( const char *fmt, va_list argv )
+int __cdecl __vprintf(const APICHAR *fmt, va_list argv)
 {
   return __pformat( PFORMAT_TO_FILE | PFORMAT_NOLIMIT, stdout, 0, fmt, argv );
 }
-
diff --git a/mingw-w64-crt/stdio/mingw_vsnprintf.c b/mingw-w64-crt/stdio/mingw_vsnprintf.c
index 0d40887..b477300 100644
--- a/mingw-w64-crt/stdio/mingw_vsnprintf.c
+++ b/mingw-w64-crt/stdio/mingw_vsnprintf.c
@@ -28,8 +28,8 @@
 
 #include "mingw_pformat.h"
 
-int __cdecl __vsnprintf (char *, size_t, const char *fmt, va_list) __MINGW_NOTHROW;
-int __cdecl __vsnprintf( char *buf, size_t length, const char *fmt, va_list argv )
+int __cdecl __vsnprintf (APICHAR *, size_t, const APICHAR *fmt, va_list) __MINGW_NOTHROW;
+int __cdecl __vsnprintf(APICHAR *buf, size_t length, const APICHAR *fmt, va_list argv )
 {
   register int retval;
 
@@ -38,7 +38,7 @@
      * No buffer; simply compute and return the size required,
      * without actually emitting any data.
      */
-    return __pformat( 0, buf, 0, fmt, argv );
+    return __pformat( 0, buf, 0, fmt, argv);
 
   /* If we get to here, then we have a buffer...
    * Emit data up to the limit of buffer length less one,
diff --git a/mingw-w64-crt/stdio/mingw_vsprintf.c b/mingw-w64-crt/stdio/mingw_vsprintf.c
index 13ee7a0..af9793d 100644
--- a/mingw-w64-crt/stdio/mingw_vsprintf.c
+++ b/mingw-w64-crt/stdio/mingw_vsprintf.c
@@ -44,12 +44,11 @@
 
 #include "mingw_pformat.h"
 
-int __cdecl __vsprintf (char *, const char *, va_list) __MINGW_NOTHROW;
+int __cdecl __vsprintf (APICHAR *, const APICHAR *, va_list) __MINGW_NOTHROW;
 
-int __cdecl __vsprintf( char *buf, const char *fmt, va_list argv )
+int __cdecl __vsprintf(APICHAR *buf, const APICHAR *fmt, va_list argv)
 {
   register int retval;
   buf[retval = __pformat( PFORMAT_NOLIMIT, buf, 0, fmt, argv )] = '\0';
   return retval;
 }
-
