projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix nmem_strsplit_escape subsitutes escape char away
[yaz-moved-to-github.git]
/
src
/
nmemsdup.c
diff --git
a/src/nmemsdup.c
b/src/nmemsdup.c
index
fcfb074
..
a0fa637
100644
(file)
--- a/
src/nmemsdup.c
+++ b/
src/nmemsdup.c
@@
-91,29
+91,29
@@
void nmem_strsplit_escape(NMEM nmem, const char *delim, const char *dstr,
cp++;
if (!*cp)
break;
cp++;
if (!*cp)
break;
- cp0 = cp;
- while (*cp && !strchr(delim, *cp))
- {
- if (*cp == escape_char)
- cp++;
+ }
+
+ cp0 = cp;
+ while (*cp && !strchr(delim, *cp))
+ {
+ if (*cp == escape_char)
cp++;
cp++;
- }
- if (*darray)
- (*darray)[i] = nmem_strdupn(nmem, cp0, cp - cp0);
- i++;
+ cp++;
}
}
- else
+ if (*darray)
{
{
- cp0 = cp;
- while (*cp && !strchr(delim, *cp))
+ char *dst, *src;
+ (*darray)[i] = nmem_strdupn(nmem, cp0, cp - cp0);
+ dst = src = (*darray)[i];
+ for (; (*dst = *src) != '\0'; src++)
{
{
- if (*cp == escape_char)
- cp++;
- cp++;
+ if (*src != escape_char)
+ dst++;
}
}
- if (*darray)
- (*darray)[i] = nmem_strdupn(nmem, cp0, cp - cp0);
- i++;
+ }
+ i++;
+ if (!collapse)
+ {
if (!*cp)
break;
cp++;
if (!*cp)
break;
cp++;