Code Review
/
src
/
app-framework-main.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
afm-udb: refactor add_fields_of_content
[src/app-framework-main.git]
/
src
/
afm-udb.c
diff --git
a/src/afm-udb.c
b/src/afm-udb.c
index
638387e
..
7f4a16e
100644
(file)
--- a/
src/afm-udb.c
+++ b/
src/afm-udb.c
@@
-182,17
+182,25
@@
static int add_fields_of_content(
{
char *name, *value, *read, *write;
{
char *name, *value, *read, *write;
- read = strstr(content, x_afm_prefix);
- while (read) {
+ /* start at the beginning */
+ read = content;
+ for (;;) {
+ /* search the next key */
+ read = strstr(read, x_afm_prefix);
+ if (!read)
+ return 0;
+
+ /* search to equal */
name = read + x_afm_prefix_length;
value = strchr(name, '=');
if (value == NULL)
name = read + x_afm_prefix_length;
value = strchr(name, '=');
if (value == NULL)
- read =
strstr(name, x_afm_prefix);
+ read =
name; /* not found */
else {
else {
+ /* get the value (translate it) */
*value++ = 0;
read = write = value;
while(*read && *read != '\n') {
*value++ = 0;
read = write = value;
while(*read && *read != '\n') {
- if (
read[0]
!= '\\')
+ if (
*read
!= '\\')
*write++ = *read++;
else {
switch(*++read) {
*write++ = *read++;
else {
switch(*++read) {
@@
-203,13
+211,14
@@
static int add_fields_of_content(
read += !!*read;
}
}
read += !!*read;
}
}
- read
= strstr(read, x_afm_prefix)
;
+ read
+= !!*read
;
*write = 0;
*write = 0;
+
+ /* add the found field now */
if (add_field(priv, pub, name, value) < 0)
return -1;
}
}
if (add_field(priv, pub, name, value) < 0)
return -1;
}
}
- return 0;
}
/*
}
/*