diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2020-09-13 18:15:47 +0200 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2020-09-13 18:15:47 +0200 |
| commit | 490237aece240c05b5a9035665a88327e1be87ed (patch) | |
| tree | b97ea8765878a7ebf9e918e008dd6577b0652fdd /src/lexer/trim.c | |
| parent | 10ec6292d997ac18803df92469d2ab4ee03166e7 (diff) | |
| download | minishell-490237aece240c05b5a9035665a88327e1be87ed.tar.gz minishell-490237aece240c05b5a9035665a88327e1be87ed.tar.bz2 minishell-490237aece240c05b5a9035665a88327e1be87ed.zip | |
Refactoring lexer/trim by removing the unecessary allocation
Diffstat (limited to 'src/lexer/trim.c')
| -rw-r--r-- | src/lexer/trim.c | 63 |
1 files changed, 27 insertions, 36 deletions
diff --git a/src/lexer/trim.c b/src/lexer/trim.c index 1a2c88d..b343d69 100644 --- a/src/lexer/trim.c +++ b/src/lexer/trim.c @@ -6,81 +6,72 @@ /* By: nahaddac <nahaddac@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/07/16 08:18:36 by nahaddac #+# #+# */ -/* Updated: 2020/09/13 10:58:26 by nahaddac ### ########.fr */ +/* Updated: 2020/09/13 18:14:59 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #include "lexer.h" -char *del_space(t_tok_lst *tok) +void del_space(char *str) { - int i; + int i; - i = ft_strlen(tok->content); - if(ft_isblank(tok->content[i - 1])) + i = ft_strlen(str); + if (ft_isblank(str[i - 1])) { i -= 1; - while(ft_isblank(tok->content[i])) + while (ft_isblank(str[i])) { - if (tok->content[i - 1] == '\\') - break; + if (str[i - 1] == '\\') + break ; i--; } - tok->content = ft_strsubf(tok->content, 0, i + 1); - return (tok->content); + str[i + 1] = '\0'; } - return(tok->content); } -char *del_quote(char *str) +void del_quote(char *str) { - int i; - i = 0; + int i; + i = 0; if (str[0] == '\'') - while(str[i++] != '\0') + while (str[i++] != '\0') { - if(str[i] == '\\') - i+=2; + if (str[i] == '\\') + i += 2; if (str[i] == '\'') - break; + break ; } else if (str[0] == '"') - while(str[i++] != '\0') + while (str[i++] != '\0') { - if(str[i] == '\\') - i+=2; + if (str[i] == '\\') + i += 2; if (str[i] == '"') - break; + break ; } - if(str[i] != '\'' && str[i] != '"') - return str; - return (ft_strsubf(str, 1, i - 1)); + str[i] = '\0'; + ft_memmove(str, str + 1, ft_strlen(str + 1) + 1); } -t_tok_lst *lexer_trim_out(t_tok_lst *tokens) +void lexer_trim(t_tok_lst *tokens) { - t_tok_lst *first; - - first = tokens; while (tokens != NULL) { if (tokens->tag & (TAG_STR_DOUBLE | TAG_STR_SINGLE)) { - tokens->content = del_quote(tokens->content); + del_quote(tokens->content); if (tokens->next == NULL) - if (tokens->tag & TAG_STICK) - tokens->tag -= TAG_STICK; + tokens->tag &= ~TAG_STICK; } else { - tokens->content = del_space(tokens); + del_space(tokens->content); if (tokens->next == NULL) - if (tokens->tag & TAG_STICK) - tokens->tag -= TAG_STICK; + tokens->tag &= ~TAG_STICK; } tokens = tokens->next; } - return (first); } |
