#include <wctype.h>
#include <limits.h>
#include <string.h>
-#include <errno.h>
-#include <math.h>
-#include <float.h>
#include "stdio_impl.h"
#include "shgetc.h"
FLOCK(f);
+ fwide(f, 1);
+
for (p=fmt; *p; p++) {
+ alloc = 0;
+
if (iswspace(*p)) {
while (iswspace(p[1])) p++;
while (iswspace((c=getwc(f)))) pos++;
}
if (*p=='m') {
+ wcs = 0;
+ s = 0;
alloc = !!dest;
p++;
} else {
set = L"";
} else if (t == 's') {
invert = 1;
- set = (const wchar_t[]){
+ static const wchar_t spaces[] = {
' ', '\t', '\n', '\r', 11, 12, 0x0085,
0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005,
0x2006, 0x2008, 0x2009, 0x200a,
0x2028, 0x2029, 0x205f, 0x3000, 0 };
+ set = spaces;
} else {
if (*++p == '^') p++, invert = 1;
else invert = 0;
if (size == SIZE_l) *(wchar_t **)dest = wcs;
else *(char **)dest = s;
}
- if (wcs) wcs[i] = 0;
- if (s) s[i] = 0;
+ if (t != 'c') {
+ if (wcs) wcs[i] = 0;
+ if (s) s[i] = 0;
+ }
break;
case 'd': case 'i': case 'o': case 'u': case 'x':