version 1.4, 1999/03/05 04:47:45 |
version 1.5, 2000/01/09 01:10:37 |
|
|
} |
} |
|
|
/* Create the stored record. */ |
/* Create the stored record. */ |
(void) memmove(&((u_char *)(data.data))[1], bp, len + 1); |
|
data.size = len + 2; |
|
if (info) { |
if (info) { |
|
(void) memcpy(&((u_char *)(data.data))[1], bp, len + 1); |
|
data.size = len + 2; |
for (t = memchr((char *)data.data + 1, ',', data.size - 1); |
for (t = memchr((char *)data.data + 1, ',', data.size - 1); |
t; |
t; |
t = memchr(t, ',', data.size - (t - (char *)data.data))) |
t = memchr(t, ',', data.size - (t - (char *)data.data))) |
|
|
warnx("NUL in entry: %.*s", (int)MIN(len, 20), bp); |
warnx("NUL in entry: %.*s", (int)MIN(len, 20), bp); |
continue; |
continue; |
} |
} |
|
} else { |
|
char *capbeg, *capend; |
|
|
|
t = (char *)data.data + 1; |
|
/* Copy the cap name and trailing ':' */ |
|
len = p - bp + 1; |
|
memcpy(t, bp, len); |
|
t += len; |
|
|
|
/* Copy entry, collapsing empty fields. */ |
|
capbeg = p + 1; |
|
while (*capbeg) { |
|
/* Skip empty fields. */ |
|
if ((len = strspn(capbeg, ": \t\n\r"))) |
|
capbeg += len; |
|
|
|
/* Find the end of this cap and copy it w/ : */ |
|
capend = strchr(capbeg, ':'); |
|
if (capend) |
|
len = capend - capbeg + 1; |
|
else |
|
len = strlen(capbeg); |
|
memcpy(t, capbeg, len); |
|
t += len; |
|
capbeg += len; |
|
} |
|
*t = '\0'; |
|
data.size = t - (char *)data.data + 1; |
} |
} |
|
|
/* Store the record under the name field. */ |
/* Store the record under the name field. */ |