aboutsummaryrefslogtreecommitdiff
path: root/src/lsh_main_func.c
diff options
context:
space:
mode:
authoriceyrazor <iceyrazor@mailfence.com>2026-02-27 20:24:10 -0600
committericeyrazor <iceyrazor@mailfence.com>2026-02-27 20:24:10 -0600
commitb6a561f81c569ccc63423dc69eca4bc082ea60e9 (patch)
tree3bb222fc93b3a53f7398450d820e80ca73fcf5c8 /src/lsh_main_func.c
parent1eb83090ac4b5a31b352a843c85304df9af1f3e0 (diff)
better pop
fixed poping quotes that shouldnt be popdddd
Diffstat (limited to 'src/lsh_main_func.c')
-rw-r--r--src/lsh_main_func.c35
1 files changed, 4 insertions, 31 deletions
diff --git a/src/lsh_main_func.c b/src/lsh_main_func.c
index 8a3aade..aa16cbd 100644
--- a/src/lsh_main_func.c
+++ b/src/lsh_main_func.c
@@ -135,6 +135,8 @@ char * strtok_quotes(char *token){
parse_args_last_p[0]='\0';
parse_args_last_p=&parse_args_last_p[1];
return_char=&return_char[1];
+ } else {
+ pop(return_char,ch_i);
}
ch_i++;
}
@@ -153,8 +155,10 @@ char * strtok_quotes(char *token){
} 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];
+ pop(return_char,ch_i);
return return_char;
}
+ pop(return_char,ch_i);
}
}
} else {
@@ -171,36 +175,6 @@ char * strtok_quotes(char *token){
return return_char;
}
-char *pop_quotes(char *token){
- int ch_i=0;
- char *right=(char*)malloce(sizeof(char)*strlen(token)+1);
- char *ret_token=(char*)malloce(sizeof(char)*strlen(token)+1);
- strcpy(ret_token,token);
-
- while(ch_i<strlen(ret_token)){
- if(ret_token[ch_i]=='\0'){
- free(right);
- free(token);
- return ret_token;
- }
- while(ret_token[ch_i]=='"' || ret_token[ch_i]=='\''){
- if(ret_token[ch_i-1]=='\\'){
- strcpy(right,&ret_token[ch_i]);
- ret_token[ch_i-1]='\0';
- strcat(ret_token,right);
- break;
- }
- strcpy(right,&ret_token[ch_i+1]);
- ret_token[ch_i]='\0';
- strcat(ret_token,right);
- }
- ch_i++;
- }
- free(right);
- free(token);
- return ret_token;
-}
-
#define LSH_TOK_BUFSIZE 64
char **lsh_split_line(char *line)
{
@@ -211,7 +185,6 @@ char **lsh_split_line(char *line)
token = strtok_quotes(line);
while (token != NULL) {
token = handle_vars(token);
- token = pop_quotes(token);
tokens[position] = token;
position++;