--- /dev/null
+--- fgetwln.c.orig 2005-09-14 19:51:14.000000000 -0700
++++ fgetwln.c 2005-09-14 19:53:18.000000000 -0700
+@@ -35,7 +35,7 @@
+ #include "local.h"
+
+ wchar_t *
+-fgetwln(FILE * __restrict fp, size_t *lenp)
++fgetwln_l(FILE * __restrict fp, size_t *lenp, locale_t loc)
+ {
+ wint_t wc;
+ size_t len;
+@@ -44,7 +44,7 @@
+ ORIENT(fp, 1);
+
+ len = 0;
+- while ((wc = __fgetwc(fp)) != WEOF) {
++ while ((wc = __fgetwc(fp, loc)) != WEOF) {
+ #define GROW 512
+ if (len * sizeof(wchar_t) >= fp->_lb._size &&
+ __slbexpand(fp, (len + GROW) * sizeof(wchar_t)))
+@@ -65,3 +65,9 @@
+ *lenp = 0;
+ return (NULL);
+ }
++
++wchar_t *
++fgetwln(FILE * __restrict fp, size_t *lenp)
++{
++ return fgetwln_l(fp, lenp, __current_locale());
++}