aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/loadsave.c39
1 files changed, 21 insertions, 18 deletions
diff --git a/src/loadsave.c b/src/loadsave.c
index 32782ff..8fee31d 100644
--- a/src/loadsave.c
+++ b/src/loadsave.c
@@ -552,29 +552,32 @@ int get_field_s(struct ds_node *root, const char *key, char **val)
}
if ( !hq ) {
fprintf(stderr, "No quotes in '%s'\n", node->value);
- return 1;
- }
+ v = strdup(node->value); /* Use the whole thing */
+ } else {
- for ( i=len-1; i>=0; i-- ) {
- if ( node->value[i] == '"' ) {
- s2 = i;
- break;
+ for ( i=len-1; i>=0; i-- ) {
+ if ( node->value[i] == '"' ) {
+ s2 = i;
+ break;
+ }
}
- }
- if ( s1 == s2 ) {
- fprintf(stderr, "Mismatched quotes in '%s'\n", node->value);
- return 1;
- }
+ if ( s1 == s2 ) {
+ fprintf(stderr, "Mismatched quotes in '%s'\n",
+ node->value);
+ return 1;
+ }
- v = malloc(s2-s1+1);
- if ( v == NULL ) {
- fprintf(stderr, "Failed to allocate space for '%s'\n", key);
- return 1;
- }
+ v = malloc(s2-s1+1);
+ if ( v == NULL ) {
+ fprintf(stderr, "Failed to allocate space for '%s'\n",
+ key);
+ return 1;
+ }
- strncpy(v, node->value+s1+1, s2-s1-1);
- v[s2-s1-1] = '\0';
+ strncpy(v, node->value+s1+1, s2-s1-1);
+ v[s2-s1-1] = '\0';
+ }
*val = unescape_text(v);
free(v);