| 38 |  | #include <sys/stat.h> | 
| 39 |  | #include "ezxml.h" | 
| 40 |  |  | 
| 41 | + | #ifdef _WIN32 | 
| 42 | + | #include <io.h> | 
| 43 | + | #define read            _read | 
| 44 | + | #define open            _open | 
| 45 | + | #define close           _close | 
| 46 | + | #endif | 
| 47 | + |  | 
| 48 |  | #define EZXML_WS   "\t\r\n "  /* whitespace */ | 
| 49 |  | #define EZXML_ERRL 128        /* maximum error string length */ | 
| 50 |  |  | 
| 150 |  | char *t, fmt[EZXML_ERRL]; | 
| 151 |  |  | 
| 152 |  | for (t = root->s; t < s; t++) if (*t == '\n') line++; | 
| 153 | < | snprintf(fmt, EZXML_ERRL, "[error near line %d]: %s", line, err); | 
| 153 | > | sprintf(fmt, "[error near line %d]: %s", line, err); | 
| 154 |  |  | 
| 155 |  | va_start(ap, err); | 
| 156 |  | vsnprintf(root->err, EZXML_ERRL, fmt, ap); | 
| 170 |  | char *e, *r = s, *m = s; | 
| 171 |  | long b, c, d, l; | 
| 172 |  |  | 
| 173 | < | for (; *s; s++) { /* normalize line endings */ | 
| 174 | < | while (*s == '\r') { | 
| 175 | < | *(s++) = '\n'; | 
| 176 | < | if (*s == '\n') memmove(s, (s + 1), strlen(s)); | 
| 177 | < | } | 
| 178 | < | } | 
| 173 | > | for (; *s; s++)     /* normalize line endings */ | 
| 174 | > | if (*s == '\r') { | 
| 175 | > | char *s2 = s+1; | 
| 176 | > | do { | 
| 177 | > | while (*s2 == '\r') | 
| 178 | > | ++s2; | 
| 179 | > | *s++ = *s2; | 
| 180 | > | } while (*s2++); | 
| 181 | > | break; | 
| 182 | > | } | 
| 183 |  |  | 
| 184 |  | for (s = r; ; ) { | 
| 185 |  | while (*s && *s != '&' && (*s != '%' || t != '%') && !isspace(*s)) s++; | 
| 374 |  | if (*(s = t + strcspn(t, EZXML_WS ">")) == '>') continue; | 
| 375 |  | else *s = '\0'; /* null terminate tag name */ | 
| 376 |  | for (i = 0; root->attr[i] && strcmp(n, root->attr[i][0]); i++); | 
| 377 | < |  | 
| 378 | < | while (*(n = ++s + strspn(s, EZXML_WS)) && *n != '>') { | 
| 377 | > | ++s; | 
| 378 | > | while (*(n = s + strspn(s, EZXML_WS)) && *n != '>') { | 
| 379 |  | if (*(s = n + strcspn(n, EZXML_WS))) *s = '\0'; /* attr name */ | 
| 380 |  | else { ezxml_err(root, t, "malformed <!ATTLIST"); break; } | 
| 381 |  |  | 
| 416 |  | root->attr[i][j + 1] = (v) ? ezxml_decode(v, root->ent, *c) | 
| 417 |  | : NULL; | 
| 418 |  | root->attr[i][j] = n; /* attribute name  */ | 
| 419 | + | ++s; | 
| 420 |  | } | 
| 421 |  | } | 
| 422 |  | else if (! strncmp(s, "<!--", 4)) s = strstr(s + 4, "-->"); /* comments */ |