aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDavid M. Syzdek <david@syzdek.net>2022-03-10 16:21:59 -0900
committerDavid M. Syzdek <david@syzdek.net>2022-03-10 16:26:31 -0900
commitb699eb7f61b833130831a6379eb0dcf1668fcfd7 (patch)
treeb34001858f5d5e8b3c5611ac952b7d7ab9f8b731
parentf700055e599f59d13013dfbccea71e2618f508bf (diff)
downloadtinyrad-b699eb7f61b833130831a6379eb0dcf1668fcfd7.tar.gz
tinyrad-b699eb7f61b833130831a6379eb0dcf1668fcfd7.tar.bz2
tinyrad-b699eb7f61b833130831a6379eb0dcf1668fcfd7.tar.xz
tinyrad-b699eb7f61b833130831a6379eb0dcf1668fcfd7.zip
libtinyrad: updating tinyrad_strtoargs() to retain quotes
-rw-r--r--include/tinyrad_internal.h3
-rw-r--r--lib/libtinyrad/ldict.c2
-rw-r--r--lib/libtinyrad/lstrings.c10
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
254tinyrad_strtoargs( 254tinyrad_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
279tinyrad_strtoargs( 279tinyrad_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);