From 022a202e31157859bc0fac25479a4782514e50a9 Mon Sep 17 00:00:00 2001 From: iceyrazor Date: Wed, 18 Feb 2026 20:53:04 -0600 Subject: quotes - now parsing single quotes - quotes are now removed from string - fully handling escape quotes (i think) --- src/lsh_main_func.c | 54 +++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 10 deletions(-) (limited to 'src/lsh_main_func.c') diff --git a/src/lsh_main_func.c b/src/lsh_main_func.c index 9864b20..74e7881 100644 --- a/src/lsh_main_func.c +++ b/src/lsh_main_func.c @@ -117,7 +117,7 @@ char * strtok_quotes(char *token){ } char *return_char=parse_args_last_p; - bool in_quote=false; + char in_quote=' '; if(parse_args_last_p != NULL){ int ch_i=0; @@ -125,36 +125,39 @@ char * strtok_quotes(char *token){ if (parse_args_last_p[ch_i] == '\0') break; - if (in_quote==false&parse_args_last_p[ch_i]=='"'){ + if (in_quote==' ' && (parse_args_last_p[ch_i]=='"' || parse_args_last_p[ch_i]=='\'')){ bool pass_check=true; if(ch_i>0 && parse_args_last_p[ch_i-1]=='\\') pass_check=false; if(pass_check==true){ - parse_args_last_p[ch_i]='\0'; + in_quote=parse_args_last_p[ch_i]; if (parse_args_last_p[ch_i+1] == '\0') break; - return_char = &return_char[1]; + if(ch_i==0){ + parse_args_last_p[0]='\0'; + parse_args_last_p=&parse_args_last_p[1]; + return_char=&return_char[1]; + } ch_i++; - in_quote=true; } } - if(in_quote==true){ - if (parse_args_last_p[ch_i]=='"'){ + if(in_quote!=' '){ + if (parse_args_last_p[ch_i]==in_quote){ bool pass_check=true; if(ch_i>0 && parse_args_last_p[ch_i-1]=='\\') pass_check=false; if(pass_check==true){ - if(parse_args_last_p[ch_i+1]=='\0') + in_quote=' '; + if(parse_args_last_p[ch_i+1]=='\0'){ parse_args_last_p[ch_i]='\0'; - else if(parse_args_last_p[ch_i+1]==' '){ + } else if(parse_args_last_p[ch_i+1]==' '){ parse_args_last_p[ch_i]='\0'; parse_args_last_p = &parse_args_last_p[ch_i+2]; return return_char; } - in_quote=false; } } } else { @@ -171,6 +174,36 @@ char * strtok_quotes(char *token){ return return_char; } +char *pop_quotes(char *token){ + int ch_i=0; + char *right=(char*)malloc(sizeof(char)*strlen(token)+1); + char *ret_token=(char*)malloc(sizeof(char)*strlen(token)+1); + strcpy(ret_token,token); + + while(ch_i