| 1127 | #define elementskip { if(*s=='"') { do { ++s; s += strcspn(s, "\"\n\r"); } while(*s == '\"' && s[-1] == '\\'); s += *s=='"'; } else s += strcspn(s, "\n\r\t "); } |
| 1128 | |
| 1129 | void explodelist(const char *s, vector<char *> &elems) |
| 1130 | { |
| 1131 | whitespaceskip; |
| 1132 | while(*s) |
| 1133 | { |
| 1134 | const char *elem = s; |
| 1135 | elementskip; |
| 1136 | #ifdef STANDALONE |
| 1137 | char *newelem = *elem == '"' ? newstring(elem + 1, s - elem - (s[-1]=='"' ? 2 : 1)) : newstring(elem, s-elem); |
| 1138 | #else |
| 1139 | size_t len = 0; |
| 1140 | char *newelem = *elem == '"' ? newstring(elem + 1, (len = s - elem - (s[-1]=='"' ? 2 : 1))) : newstring(elem, s-elem); |
| 1141 | if(*elem == '"') filterrichtext(newelem, newelem, len); |
| 1142 | #endif |
| 1143 | elems.add(newelem); |
| 1144 | whitespaceskip; |
| 1145 | } |
| 1146 | } |
| 1147 | |
| 1148 | void looplist(char *list, char *varlist, char *body, bool withi) |
| 1149 | { |
no test coverage detected