- while (*cp && strchr(delim, *cp))
- cp++;
- if (!*cp)
- break;
- cp0 = cp;
- while (*cp && !strchr(delim, *cp))
+ if (collapse)
+ {
+ if (!*cp)
+ break;
+ while (*cp && strchr(delim, *cp))
+ cp++;
+ if (!*cp)
+ break;
+ cp0 = cp;
+ while (*cp && !strchr(delim, *cp))
+ cp++;
+ (*darray)[i++] = nmem_strdupn(nmem, cp0, cp - cp0);
+ }
+ else
+ {
+ cp0 = cp;
+ while (*cp && !strchr(delim, *cp))
+ cp++;
+ (*darray)[i++] = nmem_strdupn(nmem, cp0, cp - cp0);
+ if (!*cp)
+ break;