diff --git a/mingw-w64-crt/ChangeLog b/mingw-w64-crt/ChangeLog
index d63550b..8cf7d04 100644
--- a/mingw-w64-crt/ChangeLog
+++ b/mingw-w64-crt/ChangeLog
@@ -1,3 +1,10 @@
+2011-08-09  Ozkan Sezer  <sezeroz@gmail.com>
+
+	* Makefile.am: Remove stdio/wcstof.c from build.
+	* Makefile.in: Regenerate.
+	* misc/mbrtowc.c, misc/wcrtomb.c, misc/wcstof.c, misc/wcstold.c,
+	misc/wctob.c: Fix utterly incomprehensible whitespace style.
+
 2011-08-07  Christian Franke  <Christian.Franke@t-online.de>
 
 	* stdio/mingw_vfscanf.c: Fix segmentation fault when a char or string
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index a73ae4c..082250b 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -221,7 +221,7 @@
   misc/wcstoumax.c            misc/_wctime32.c     misc/_wctime.c        misc/wctob.c                 misc/wctrans.c         \
   misc/wctype.c               misc/wdirent.c       misc/winbs_uint64.c   misc/winbs_ulong.c           misc/winbs_ushort.c    \
   misc/wmemchr.c              misc/wmemcmp.c       misc/wmemcpy.c        misc/wmemmove.c              misc/wmemset.c         \
-  misc/wcstof.c misc/mingw_wcstod.c misc/mingw_wcstof.c misc/mingw_wcstold.c \
+  misc/wcstof.c               misc/mingw_wcstod.c  misc/mingw_wcstof.c   misc/mingw_wcstold.c         \
   stdio/mingw_pformat.h \
   stdio/atoll.c stdio/_Exit.c stdio/_findfirst64i32.c \
   stdio/_findnext64i32.c stdio/fopen64.c \
@@ -245,7 +245,7 @@
   stdio/_stat.c stdio/strtof.c stdio/ulltoa.c stdio/ulltow.c stdio/vfscanf.c \
   stdio/vfwscanf.c stdio/vscanf.c stdio/vsnprintf.c stdio/vsnprintf_s.c \
   stdio/vsnwprintf.c stdio/vsscanf.c \
-  stdio/vswscanf.c stdio/vwscanf.c stdio/wcstof.c \
+  stdio/vswscanf.c stdio/vwscanf.c   \
   stdio/_wfindfirst64i32.c stdio/_wfindnext64i32.c \
   stdio/_wstat64i32.c stdio/_wstat.c stdio/wtoll.c \
   stdio/fgetpos64.c        stdio/fseeko32.c        stdio/fsetpos64.c        stdio/ftello.c            stdio/ftruncate64.c     \
diff --git a/mingw-w64-crt/Makefile.in b/mingw-w64-crt/Makefile.in
index e8f447a..ed1d2e3 100644
--- a/mingw-w64-crt/Makefile.in
+++ b/mingw-w64-crt/Makefile.in
@@ -441,12 +441,11 @@
 	stdio/strtof.c stdio/ulltoa.c stdio/ulltow.c stdio/vfscanf.c \
 	stdio/vfwscanf.c stdio/vscanf.c stdio/vsnprintf.c \
 	stdio/vsnprintf_s.c stdio/vsnwprintf.c stdio/vsscanf.c \
-	stdio/vswscanf.c stdio/vwscanf.c stdio/wcstof.c \
-	stdio/_wfindfirst64i32.c stdio/_wfindnext64i32.c \
-	stdio/_wstat64i32.c stdio/_wstat.c stdio/wtoll.c \
-	stdio/fgetpos64.c stdio/fseeko32.c stdio/fsetpos64.c \
-	stdio/ftello.c stdio/ftruncate64.c stdio/truncate.c \
-	intrincs/ilockadd.c intrincs/ilockand64.c \
+	stdio/vswscanf.c stdio/vwscanf.c stdio/_wfindfirst64i32.c \
+	stdio/_wfindnext64i32.c stdio/_wstat64i32.c stdio/_wstat.c \
+	stdio/wtoll.c stdio/fgetpos64.c stdio/fseeko32.c \
+	stdio/fsetpos64.c stdio/ftello.c stdio/ftruncate64.c \
+	stdio/truncate.c intrincs/ilockadd.c intrincs/ilockand64.c \
 	intrincs/ilockcxch64.c intrincs/ilockcxchptr.c \
 	intrincs/ilockdec64.c intrincs/ilockexch64.c \
 	intrincs/ilockexchptr.c intrincs/ilockinc64.c \
@@ -908,7 +907,6 @@
 	stdio/lib32_libmingwex_a-vsscanf.$(OBJEXT) \
 	stdio/lib32_libmingwex_a-vswscanf.$(OBJEXT) \
 	stdio/lib32_libmingwex_a-vwscanf.$(OBJEXT) \
-	stdio/lib32_libmingwex_a-wcstof.$(OBJEXT) \
 	stdio/lib32_libmingwex_a-_wfindfirst64i32.$(OBJEXT) \
 	stdio/lib32_libmingwex_a-_wfindnext64i32.$(OBJEXT) \
 	stdio/lib32_libmingwex_a-_wstat64i32.$(OBJEXT) \
@@ -1410,12 +1408,11 @@
 	stdio/strtof.c stdio/ulltoa.c stdio/ulltow.c stdio/vfscanf.c \
 	stdio/vfwscanf.c stdio/vscanf.c stdio/vsnprintf.c \
 	stdio/vsnprintf_s.c stdio/vsnwprintf.c stdio/vsscanf.c \
-	stdio/vswscanf.c stdio/vwscanf.c stdio/wcstof.c \
-	stdio/_wfindfirst64i32.c stdio/_wfindnext64i32.c \
-	stdio/_wstat64i32.c stdio/_wstat.c stdio/wtoll.c \
-	stdio/fgetpos64.c stdio/fseeko32.c stdio/fsetpos64.c \
-	stdio/ftello.c stdio/ftruncate64.c stdio/truncate.c \
-	intrincs/ilockadd.c intrincs/ilockand64.c \
+	stdio/vswscanf.c stdio/vwscanf.c stdio/_wfindfirst64i32.c \
+	stdio/_wfindnext64i32.c stdio/_wstat64i32.c stdio/_wstat.c \
+	stdio/wtoll.c stdio/fgetpos64.c stdio/fseeko32.c \
+	stdio/fsetpos64.c stdio/ftello.c stdio/ftruncate64.c \
+	stdio/truncate.c intrincs/ilockadd.c intrincs/ilockand64.c \
 	intrincs/ilockcxch64.c intrincs/ilockcxchptr.c \
 	intrincs/ilockdec64.c intrincs/ilockexch64.c \
 	intrincs/ilockexchptr.c intrincs/ilockinc64.c \
@@ -1884,7 +1881,6 @@
 	stdio/lib64_libmingwex_a-vsscanf.$(OBJEXT) \
 	stdio/lib64_libmingwex_a-vswscanf.$(OBJEXT) \
 	stdio/lib64_libmingwex_a-vwscanf.$(OBJEXT) \
-	stdio/lib64_libmingwex_a-wcstof.$(OBJEXT) \
 	stdio/lib64_libmingwex_a-_wfindfirst64i32.$(OBJEXT) \
 	stdio/lib64_libmingwex_a-_wfindnext64i32.$(OBJEXT) \
 	stdio/lib64_libmingwex_a-_wstat64i32.$(OBJEXT) \
@@ -3314,7 +3310,7 @@
   misc/wcstoumax.c            misc/_wctime32.c     misc/_wctime.c        misc/wctob.c                 misc/wctrans.c         \
   misc/wctype.c               misc/wdirent.c       misc/winbs_uint64.c   misc/winbs_ulong.c           misc/winbs_ushort.c    \
   misc/wmemchr.c              misc/wmemcmp.c       misc/wmemcpy.c        misc/wmemmove.c              misc/wmemset.c         \
-  misc/wcstof.c misc/mingw_wcstod.c misc/mingw_wcstof.c misc/mingw_wcstold.c \
+  misc/wcstof.c               misc/mingw_wcstod.c  misc/mingw_wcstof.c   misc/mingw_wcstold.c         \
   stdio/mingw_pformat.h \
   stdio/atoll.c stdio/_Exit.c stdio/_findfirst64i32.c \
   stdio/_findnext64i32.c stdio/fopen64.c \
@@ -3338,7 +3334,7 @@
   stdio/_stat.c stdio/strtof.c stdio/ulltoa.c stdio/ulltow.c stdio/vfscanf.c \
   stdio/vfwscanf.c stdio/vscanf.c stdio/vsnprintf.c stdio/vsnprintf_s.c \
   stdio/vsnwprintf.c stdio/vsscanf.c \
-  stdio/vswscanf.c stdio/vwscanf.c stdio/wcstof.c \
+  stdio/vswscanf.c stdio/vwscanf.c   \
   stdio/_wfindfirst64i32.c stdio/_wfindnext64i32.c \
   stdio/_wstat64i32.c stdio/_wstat.c stdio/wtoll.c \
   stdio/fgetpos64.c        stdio/fseeko32.c        stdio/fsetpos64.c        stdio/ftello.c            stdio/ftruncate64.c     \
@@ -5472,8 +5468,6 @@
 	stdio/$(DEPDIR)/$(am__dirstamp)
 stdio/lib32_libmingwex_a-vwscanf.$(OBJEXT): stdio/$(am__dirstamp) \
 	stdio/$(DEPDIR)/$(am__dirstamp)
-stdio/lib32_libmingwex_a-wcstof.$(OBJEXT): stdio/$(am__dirstamp) \
-	stdio/$(DEPDIR)/$(am__dirstamp)
 stdio/lib32_libmingwex_a-_wfindfirst64i32.$(OBJEXT):  \
 	stdio/$(am__dirstamp) stdio/$(DEPDIR)/$(am__dirstamp)
 stdio/lib32_libmingwex_a-_wfindnext64i32.$(OBJEXT):  \
@@ -6879,8 +6873,6 @@
 	stdio/$(DEPDIR)/$(am__dirstamp)
 stdio/lib64_libmingwex_a-vwscanf.$(OBJEXT): stdio/$(am__dirstamp) \
 	stdio/$(DEPDIR)/$(am__dirstamp)
-stdio/lib64_libmingwex_a-wcstof.$(OBJEXT): stdio/$(am__dirstamp) \
-	stdio/$(DEPDIR)/$(am__dirstamp)
 stdio/lib64_libmingwex_a-_wfindfirst64i32.$(OBJEXT):  \
 	stdio/$(am__dirstamp) stdio/$(DEPDIR)/$(am__dirstamp)
 stdio/lib64_libmingwex_a-_wfindnext64i32.$(OBJEXT):  \
@@ -9291,7 +9283,6 @@
 	-rm -f stdio/lib32_libmingwex_a-vsscanf.$(OBJEXT)
 	-rm -f stdio/lib32_libmingwex_a-vswscanf.$(OBJEXT)
 	-rm -f stdio/lib32_libmingwex_a-vwscanf.$(OBJEXT)
-	-rm -f stdio/lib32_libmingwex_a-wcstof.$(OBJEXT)
 	-rm -f stdio/lib32_libmingwex_a-wtoll.$(OBJEXT)
 	-rm -f stdio/lib64_libmingwex_a-_Exit.$(OBJEXT)
 	-rm -f stdio/lib64_libmingwex_a-_findfirst64i32.$(OBJEXT)
@@ -9362,7 +9353,6 @@
 	-rm -f stdio/lib64_libmingwex_a-vsscanf.$(OBJEXT)
 	-rm -f stdio/lib64_libmingwex_a-vswscanf.$(OBJEXT)
 	-rm -f stdio/lib64_libmingwex_a-vwscanf.$(OBJEXT)
-	-rm -f stdio/lib64_libmingwex_a-wcstof.$(OBJEXT)
 	-rm -f stdio/lib64_libmingwex_a-wtoll.$(OBJEXT)
 	-rm -f testcases/complex/tests32_cabs-main.$(OBJEXT)
 	-rm -f testcases/complex/tests32_cacos-main.$(OBJEXT)
@@ -10786,7 +10776,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib32_libmingwex_a-vsscanf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib32_libmingwex_a-vswscanf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib32_libmingwex_a-vwscanf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib32_libmingwex_a-wcstof.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib32_libmingwex_a-wtoll.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib64_libmingwex_a-_Exit.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib64_libmingwex_a-_findfirst64i32.Po@am__quote@
@@ -10857,7 +10846,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib64_libmingwex_a-vsscanf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib64_libmingwex_a-vswscanf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib64_libmingwex_a-vwscanf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib64_libmingwex_a-wcstof.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib64_libmingwex_a-wtoll.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@testcases/$(DEPDIR)/t_ansi_io.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@testcases/$(DEPDIR)/t_float.Po@am__quote@
@@ -18680,20 +18668,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stdio/lib32_libmingwex_a-vwscanf.obj `if test -f 'stdio/vwscanf.c'; then $(CYGPATH_W) 'stdio/vwscanf.c'; else $(CYGPATH_W) '$(srcdir)/stdio/vwscanf.c'; fi`
 
-stdio/lib32_libmingwex_a-wcstof.o: stdio/wcstof.c
-@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stdio/lib32_libmingwex_a-wcstof.o -MD -MP -MF stdio/$(DEPDIR)/lib32_libmingwex_a-wcstof.Tpo -c -o stdio/lib32_libmingwex_a-wcstof.o `test -f 'stdio/wcstof.c' || echo '$(srcdir)/'`stdio/wcstof.c
-@am__fastdepCC_TRUE@	$(am__mv) stdio/$(DEPDIR)/lib32_libmingwex_a-wcstof.Tpo stdio/$(DEPDIR)/lib32_libmingwex_a-wcstof.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='stdio/wcstof.c' object='stdio/lib32_libmingwex_a-wcstof.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stdio/lib32_libmingwex_a-wcstof.o `test -f 'stdio/wcstof.c' || echo '$(srcdir)/'`stdio/wcstof.c
-
-stdio/lib32_libmingwex_a-wcstof.obj: stdio/wcstof.c
-@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stdio/lib32_libmingwex_a-wcstof.obj -MD -MP -MF stdio/$(DEPDIR)/lib32_libmingwex_a-wcstof.Tpo -c -o stdio/lib32_libmingwex_a-wcstof.obj `if test -f 'stdio/wcstof.c'; then $(CYGPATH_W) 'stdio/wcstof.c'; else $(CYGPATH_W) '$(srcdir)/stdio/wcstof.c'; fi`
-@am__fastdepCC_TRUE@	$(am__mv) stdio/$(DEPDIR)/lib32_libmingwex_a-wcstof.Tpo stdio/$(DEPDIR)/lib32_libmingwex_a-wcstof.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='stdio/wcstof.c' object='stdio/lib32_libmingwex_a-wcstof.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stdio/lib32_libmingwex_a-wcstof.obj `if test -f 'stdio/wcstof.c'; then $(CYGPATH_W) 'stdio/wcstof.c'; else $(CYGPATH_W) '$(srcdir)/stdio/wcstof.c'; fi`
-
 stdio/lib32_libmingwex_a-_wfindfirst64i32.o: stdio/_wfindfirst64i32.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stdio/lib32_libmingwex_a-_wfindfirst64i32.o -MD -MP -MF stdio/$(DEPDIR)/lib32_libmingwex_a-_wfindfirst64i32.Tpo -c -o stdio/lib32_libmingwex_a-_wfindfirst64i32.o `test -f 'stdio/_wfindfirst64i32.c' || echo '$(srcdir)/'`stdio/_wfindfirst64i32.c
 @am__fastdepCC_TRUE@	$(am__mv) stdio/$(DEPDIR)/lib32_libmingwex_a-_wfindfirst64i32.Tpo stdio/$(DEPDIR)/lib32_libmingwex_a-_wfindfirst64i32.Po
@@ -27080,20 +27054,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stdio/lib64_libmingwex_a-vwscanf.obj `if test -f 'stdio/vwscanf.c'; then $(CYGPATH_W) 'stdio/vwscanf.c'; else $(CYGPATH_W) '$(srcdir)/stdio/vwscanf.c'; fi`
 
-stdio/lib64_libmingwex_a-wcstof.o: stdio/wcstof.c
-@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stdio/lib64_libmingwex_a-wcstof.o -MD -MP -MF stdio/$(DEPDIR)/lib64_libmingwex_a-wcstof.Tpo -c -o stdio/lib64_libmingwex_a-wcstof.o `test -f 'stdio/wcstof.c' || echo '$(srcdir)/'`stdio/wcstof.c
-@am__fastdepCC_TRUE@	$(am__mv) stdio/$(DEPDIR)/lib64_libmingwex_a-wcstof.Tpo stdio/$(DEPDIR)/lib64_libmingwex_a-wcstof.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='stdio/wcstof.c' object='stdio/lib64_libmingwex_a-wcstof.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stdio/lib64_libmingwex_a-wcstof.o `test -f 'stdio/wcstof.c' || echo '$(srcdir)/'`stdio/wcstof.c
-
-stdio/lib64_libmingwex_a-wcstof.obj: stdio/wcstof.c
-@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stdio/lib64_libmingwex_a-wcstof.obj -MD -MP -MF stdio/$(DEPDIR)/lib64_libmingwex_a-wcstof.Tpo -c -o stdio/lib64_libmingwex_a-wcstof.obj `if test -f 'stdio/wcstof.c'; then $(CYGPATH_W) 'stdio/wcstof.c'; else $(CYGPATH_W) '$(srcdir)/stdio/wcstof.c'; fi`
-@am__fastdepCC_TRUE@	$(am__mv) stdio/$(DEPDIR)/lib64_libmingwex_a-wcstof.Tpo stdio/$(DEPDIR)/lib64_libmingwex_a-wcstof.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='stdio/wcstof.c' object='stdio/lib64_libmingwex_a-wcstof.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stdio/lib64_libmingwex_a-wcstof.obj `if test -f 'stdio/wcstof.c'; then $(CYGPATH_W) 'stdio/wcstof.c'; else $(CYGPATH_W) '$(srcdir)/stdio/wcstof.c'; fi`
-
 stdio/lib64_libmingwex_a-_wfindfirst64i32.o: stdio/_wfindfirst64i32.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stdio/lib64_libmingwex_a-_wfindfirst64i32.o -MD -MP -MF stdio/$(DEPDIR)/lib64_libmingwex_a-_wfindfirst64i32.Tpo -c -o stdio/lib64_libmingwex_a-_wfindfirst64i32.o `test -f 'stdio/_wfindfirst64i32.c' || echo '$(srcdir)/'`stdio/_wfindfirst64i32.c
 @am__fastdepCC_TRUE@	$(am__mv) stdio/$(DEPDIR)/lib64_libmingwex_a-_wfindfirst64i32.Tpo stdio/$(DEPDIR)/lib64_libmingwex_a-_wfindfirst64i32.Po
diff --git a/mingw-w64-crt/misc/mbrtowc.c b/mingw-w64-crt/misc/mbrtowc.c
index 9226c82..d087e8a 100644
--- a/mingw-w64-crt/misc/mbrtowc.c
+++ b/mingw-w64-crt/misc/mbrtowc.c
@@ -20,8 +20,7 @@
   union {
     mbstate_t val;
     char mbcs[4];
-  }  shift_state;
-
+  } shift_state;
 
   /* Do the prelim checks */
   if (s == NULL)
@@ -41,54 +40,55 @@
       *pwc = 0;
       return 0;
     }
- 
+
   if (mb_max > 1)
     {
       if (shift_state.mbcs[0] != 0)
 	{
 	  /* Complete the mb char with the trailing byte.  */
-          shift_state.mbcs[1] = *s;  /* the second byte */
-          if (MultiByteToWideChar(cp, MB_ERR_INVALID_CHARS,
+	  shift_state.mbcs[1] = *s;  /* the second byte */
+	  if (MultiByteToWideChar(cp, MB_ERR_INVALID_CHARS,
 				  shift_state.mbcs, 2, pwc, 1)
 		 == 0)
 	    {
-	      /* An invalid trailing byte */	 
+	      /* An invalid trailing byte */
 	      errno = EILSEQ;
 	      return -1;
 	    }
-          return 2;
-        }
+	  return 2;
+	}
       else if (IsDBCSLeadByteEx (cp, *s))
-        {
-          /* If told to translate one byte, just save the leadbyte
-             in *ps.  */
+	{
+	  /* If told to translate one byte, just save the leadbyte
+	     in *ps.  */
 	  if (n < 2)
 	    {
-	      ((char*) ps)[0] = *s; 
+	      ((char*) ps)[0] = *s;
 	      return -2;
 	    }
-          /* Else translate the first two bytes  */  
-          else if (MultiByteToWideChar (cp, MB_ERR_INVALID_CHARS,
+	  /* Else translate the first two bytes  */  
+	  else if (MultiByteToWideChar (cp, MB_ERR_INVALID_CHARS,
 					s, 2, pwc, 1)
 		    == 0)
 	    {
 	      errno = EILSEQ;
 	      return -1;
 	    }
-          return 2;
-        }
+	  return 2;
+	}
     }
 
-  /* Fall through to single byte char  */ 
+  /* Fall through to single byte char  */
   if (cp == 0)
       *pwc = (wchar_t)(unsigned char)*s;
- 
+
   else if (MultiByteToWideChar (cp, MB_ERR_INVALID_CHARS, s, 1, pwc, 1)
 	    == 0)
     {
       errno = EILSEQ;
       return  -1;
     }
+
   return 1;
 }
 
@@ -116,7 +116,7 @@
   const unsigned int cp = __mingw_get_codepage();
   const unsigned int mb_max = MB_CUR_MAX;
 
-  if ( src == NULL || *src == NULL )	/* undefined behavior */
+  if (src == NULL || *src == NULL)	/* undefined behavior */
     return 0;
 
   if (dst != NULL)
@@ -127,14 +127,13 @@
 		  > 0)
 	{
 	  ++dst;
-   	  *src += ret;
-          n += ret;
-        }
+	  *src += ret;
+	  n += ret;
+	}
 
       if (n < len && ret == 0)
-        *src = (char *)NULL;
+	*src = (char *)NULL;
     }
-  
   else
     {
       wchar_t byte_bucket = 0;
@@ -143,9 +142,9 @@
 				     internal_ps, cp, mb_max))
 		  > 0)
 	{
-          *src += ret;
-          n += ret;
-        }
+	  *src += ret;
+	  n += ret;
+	}
     }
   return n;
 }
diff --git a/mingw-w64-crt/misc/wcrtomb.c b/mingw-w64-crt/misc/wcrtomb.c
index cc12fbb..5e0cb6a 100644
--- a/mingw-w64-crt/misc/wcrtomb.c
+++ b/mingw-w64-crt/misc/wcrtomb.c
@@ -17,7 +17,7 @@
 static int __MINGW_ATTRIB_NONNULL(1)
  __wcrtomb_cp (char *dst, wchar_t wc, const unsigned int cp,
 	       const unsigned int mb_max)
-{       
+{
   if (cp == 0)
     {
       if (wc > 255)
@@ -31,15 +31,15 @@
   else
     {
       int invalid_char = 0;
-   
+
       int size = WideCharToMultiByte (cp, 0 /* Is this correct flag? */,
 				      &wc, 1, dst, mb_max,
 				      NULL, &invalid_char);
       if (size == 0 || invalid_char)  
-        {
-          errno = EILSEQ;
-          return -1;
-        }
+	{
+	  errno = EILSEQ;
+	  return -1;
+	}
       return size;
     }
 }
@@ -48,7 +48,7 @@
 wcrtomb (char *dst, wchar_t wc, mbstate_t * __UNUSED_PARAM (ps))
 {
   char byte_bucket [MB_LEN_MAX];
-  char* tmp_dst = dst ? dst : byte_bucket;      
+  char* tmp_dst = dst ? dst : byte_bucket;
   return (size_t)__wcrtomb_cp (tmp_dst, wc, __mingw_get_codepage (),
 			       MB_CUR_MAX);
 }
@@ -61,41 +61,40 @@
   const unsigned int cp = __mingw_get_codepage();
   const unsigned int mb_max = MB_CUR_MAX;
   const wchar_t *pwc = *src;
-  
+
   if (src == NULL || *src == NULL) /* undefined behavior */
-     return 0;
+    return 0;
 
   if (dst != NULL)
     {
-       while (n < len)
-        {
-          if ((ret = __wcrtomb_cp (dst, *pwc, cp, mb_max)) <= 0)
-	     return (size_t) -1;
-  	  n += ret;
-   	  dst += ret;
-          if (*(dst - 1) == '\0')
+      while (n < len)
+	{
+	  if ((ret = __wcrtomb_cp (dst, *pwc, cp, mb_max)) <= 0)
+	    return (size_t) -1;
+	  n += ret;
+	  dst += ret;
+	  if (*(dst - 1) == '\0')
 	    {
-	      *src = (wchar_t*) NULL;;
+	      *src = (wchar_t *) NULL;
 	      return (n  - 1);
 	    }
 	  pwc++;
-        }
+	}
       *src = pwc;
     }
   else
     {
       char byte_bucket [MB_LEN_MAX];
       while (n < len)
-        {
-	  if ((ret = __wcrtomb_cp (byte_bucket, *pwc, cp, mb_max))
-		 <= 0)
- 	    return (size_t) -1;    
+	{
+	  if ((ret = __wcrtomb_cp (byte_bucket, *pwc, cp, mb_max)) <= 0)
+	    return (size_t) -1;
 	  n += ret;
 	  if (byte_bucket [ret - 1] == '\0')
 	    return (n - 1);
-          pwc++;
-        }
+	  pwc++;
+	}
     }
- 
+
   return n;
 }
diff --git a/mingw-w64-crt/misc/wcstof.c b/mingw-w64-crt/misc/wcstof.c
index 5dd16e8..c655544 100644
--- a/mingw-w64-crt/misc/wcstof.c
+++ b/mingw-w64-crt/misc/wcstof.c
@@ -31,7 +31,7 @@
   if (cp == 0) /* C locale */
     {
       for (i = 0; (wcs[i] != 0) && wcs[i] <= 255; i++)
-        cs[i] = (char) wcs[i];
+	cs[i] = (char) wcs[i];
       cs[i]  = '\0';
     }
   else
@@ -41,7 +41,7 @@
       /* loop through till we hit null or invalid character */
       for (i = 0; (wcs[i] != 0) && (nbytes != 0); i++)
 	{
-     	  nbytes = WideCharToMultiByte(cp, WC_COMPOSITECHECK | WC_SEPCHARS,
+	  nbytes = WideCharToMultiByte(cp, WC_COMPOSITECHECK | WC_SEPCHARS,
 				       wcs + i, 1, cs + mb_len, MB_CUR_MAX,
 				       NULL, NULL);
 	  mb_len += nbytes;
@@ -59,6 +59,6 @@
       *wcse = (wchar_t *) wcs + i;
     }
   free (cs);
- 
+
   return ret;
 }
diff --git a/mingw-w64-crt/misc/wcstold.c b/mingw-w64-crt/misc/wcstold.c
index 3cedd22..68f2a4b 100644
--- a/mingw-w64-crt/misc/wcstold.c
+++ b/mingw-w64-crt/misc/wcstold.c
@@ -32,14 +32,14 @@
   unsigned int i;
   long double ret;
   const unsigned int cp = __mingw_get_codepage();
-  
+
   /* Allocate enough room for (possibly) mb chars */
   cs = (char *) malloc ((wcslen(wcs)+1) * MB_CUR_MAX);
 
   if (cp == 0) /* C locale */
     {
       for (i = 0; (wcs[i] != 0) && wcs[i] <= 255; i++)
-        cs[i] = (char) wcs[i];                                                                                                                                                                                                                                                                                                   
+        cs[i] = (char) wcs[i];
       cs[i]  = '\0';
     }
   else
@@ -49,7 +49,7 @@
       /* loop through till we hit null or invalid character */
       for (i = 0; (wcs[i] != 0) && (nbytes != 0); i++)
 	{
-     	  nbytes = WideCharToMultiByte(cp, WC_COMPOSITECHECK | WC_SEPCHARS,
+	  nbytes = WideCharToMultiByte(cp, WC_COMPOSITECHECK | WC_SEPCHARS,
 				       wcs + i, 1, cs + mb_len, MB_CUR_MAX,
 				       NULL, NULL);
 	  mb_len += nbytes;
diff --git a/mingw-w64-crt/misc/wctob.c b/mingw-w64-crt/misc/wctob.c
index 2f548fc..eaead9f 100644
--- a/mingw-w64-crt/misc/wctob.c
+++ b/mingw-w64-crt/misc/wctob.c
@@ -22,7 +22,8 @@
     if (!WideCharToMultiByte (__mingw_get_codepage(),
 			      0 /* Is this correct flag? */,
 			      &w, 1, &c, 1, NULL, &invalid_char)
-         || invalid_char)
+	 || invalid_char)
       return EOF;
+
     return (int) c;
 }
diff --git a/mingw-w64-crt/stdio/wcstof.c b/mingw-w64-crt/stdio/wcstof.c
deleted file mode 100644
index 011d3dc..0000000
--- a/mingw-w64-crt/stdio/wcstof.c
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the w64 mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#include <wchar.h>
-
-float wcstof( const wchar_t *nptr, wchar_t **endptr)
-{
-  return (wcstod(nptr, endptr));
-}
