diff options
| -rw-r--r-- | include/tinyrad_internal.h | 3 | ||||
| -rw-r--r-- | lib/libtinyrad/ldict.c | 2 | ||||
| -rw-r--r-- | lib/libtinyrad/lstrings.c | 10 |
3 files changed, 10 insertions, 5 deletions
diff --git a/include/tinyrad_internal.h b/include/tinyrad_internal.h index dda1d5d..4b1c6f3 100644 --- a/include/tinyrad_internal.h +++ b/include/tinyrad_internal.h | |||
| @@ -254,7 +254,8 @@ _TINYRAD_F int | |||
| 254 | tinyrad_strtoargs( | 254 | tinyrad_strtoargs( |
| 255 | char * str, | 255 | char * str, |
| 256 | char *** argvp, | 256 | char *** argvp, |
| 257 | int * argcp ); | 257 | int * argcp, |
| 258 | int retain_quotes ); | ||
| 258 | 259 | ||
| 259 | 260 | ||
| 260 | #endif /* end of header */ | 261 | #endif /* end of header */ |
diff --git a/lib/libtinyrad/ldict.c b/lib/libtinyrad/ldict.c index 7796692..1c95aa0 100644 --- a/lib/libtinyrad/ldict.c +++ b/lib/libtinyrad/ldict.c | |||
| @@ -1536,7 +1536,7 @@ tinyrad_dict_parse( | |||
| 1536 | file = parent; | 1536 | file = parent; |
| 1537 | continue; | 1537 | continue; |
| 1538 | }; | 1538 | }; |
| 1539 | if ((rc = tinyrad_strtoargs(buff, &argv, &argc)) != TRAD_SUCCESS) | 1539 | if ((rc = tinyrad_strtoargs(buff, &argv, &argc, TRAD_NO)) != TRAD_SUCCESS) |
| 1540 | { | 1540 | { |
| 1541 | tinyrad_file_error(file, rc, msgsp); | 1541 | tinyrad_file_error(file, rc, msgsp); |
| 1542 | tinyrad_file_destroy(file, TRAD_FILE_RECURSE); | 1542 | tinyrad_file_destroy(file, TRAD_FILE_RECURSE); |
diff --git a/lib/libtinyrad/lstrings.c b/lib/libtinyrad/lstrings.c index f55161f..ddd3395 100644 --- a/lib/libtinyrad/lstrings.c +++ b/lib/libtinyrad/lstrings.c | |||
| @@ -279,7 +279,8 @@ int | |||
| 279 | tinyrad_strtoargs( | 279 | tinyrad_strtoargs( |
| 280 | char * str, | 280 | char * str, |
| 281 | char *** argvp, | 281 | char *** argvp, |
| 282 | int * argcp ) | 282 | int * argcp, |
| 283 | int retain_quotes ) | ||
| 283 | { | 284 | { |
| 284 | char quote; | 285 | char quote; |
| 285 | char * bol; | 286 | char * bol; |
| @@ -306,20 +307,23 @@ tinyrad_strtoargs( | |||
| 306 | case '"': | 307 | case '"': |
| 307 | case '\'': | 308 | case '\'': |
| 308 | quote = str[pos]; | 309 | quote = str[pos]; |
| 309 | bol = &str[pos+1]; | 310 | bol = ((retain_quotes)) ? &str[pos] : &str[pos+1]; |
| 310 | for( pos += 1; ((bol[pos] != '\0') && (bol[pos] != quote)); pos++); | 311 | for( pos += 1; ((bol[pos] != '\0') && (bol[pos] != quote)); pos++); |
| 311 | if (bol[pos] != quote) | 312 | if (bol[pos] != quote) |
| 312 | { | 313 | { |
| 313 | tinyrad_strsfree(argv); | 314 | tinyrad_strsfree(argv); |
| 314 | return(TRAD_ESYNTAX); | 315 | return(TRAD_ESYNTAX); |
| 315 | }; | 316 | }; |
| 316 | bol[pos] = '\0'; | 317 | if ((retain_quotes)) |
| 318 | bol[pos] = '\0'; | ||
| 317 | pos++; | 319 | pos++; |
| 318 | if ( (bol[pos] != ' ') && (bol[pos] != '\t') && (bol[pos] != '\0') ) | 320 | if ( (bol[pos] != ' ') && (bol[pos] != '\t') && (bol[pos] != '\0') ) |
| 319 | { | 321 | { |
| 320 | tinyrad_strsfree(argv); | 322 | tinyrad_strsfree(argv); |
| 321 | return(TRAD_ESYNTAX); | 323 | return(TRAD_ESYNTAX); |
| 322 | }; | 324 | }; |
| 325 | if (!(retain_quotes)) | ||
| 326 | bol[pos] = '\0'; | ||
| 323 | if ((rc = tinyrad_strsadd(&argv, bol)) != TRAD_SUCCESS) | 327 | if ((rc = tinyrad_strsadd(&argv, bol)) != TRAD_SUCCESS) |
| 324 | { | 328 | { |
| 325 | tinyrad_strsfree(argv); | 329 | tinyrad_strsfree(argv); |
