| int ix = 0; | int ix = 0; | ||||
| if (pw != NULL) { | if (pw != NULL) { | ||||
| wchar_t quote = pw[-1]; | |||||
| if ((quote != '"') && (quote != '\'')) quote = 0; | |||||
| unsigned int c; | unsigned int c; | ||||
| int prev_c = 0; | int prev_c = 0; | ||||
| while ((ix < (len-4)) && ((c = *pw++) != 0)) { | while ((ix < (len-4)) && ((c = *pw++) != 0)) { | ||||
| if ((c == '"') && (prev_c != '\\')) | |||||
| if ((quote == 0) && (isspace(c) || (c == '/'))) | |||||
| break; | |||||
| if ((quote != 0) && (c == quote) && (prev_c != '\\')) | |||||
| break; // " indicates end of attribute, unless preceded by backstroke | break; // " indicates end of attribute, unless preceded by backstroke | ||||
| int n = utf8_out(c, &buf[ix]); | int n = utf8_out(c, &buf[ix]); | ||||
| while (iswspace(*pw)) pw++; | while (iswspace(*pw)) pw++; | ||||
| if ((*pw == '"') || (*pw == '\'')) // allow single-quotes ? | if ((*pw == '"') || (*pw == '\'')) // allow single-quotes ? | ||||
| return pw+1; | return pw+1; | ||||
| else | |||||
| else if (iswspace(*pw) || (*pw == '/')) // end of attribute | |||||
| return empty; | return empty; | ||||
| else | |||||
| return pw; | |||||
| } | } | ||||
| } | } | ||||
| pw++; | pw++; |