aboutsummaryrefslogtreecommitdiff
path: root/src/lsh_main_func.c
diff options
context:
space:
mode:
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++;