From 69e3e0267601b502ed38bbb5f4e77ed2f128d540 Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Thu, 9 Feb 2023 23:18:02 +0100 Subject: change var call to $[var] --- smash/env.c | 15 +++++++++------ smash/main.c | 2 ++ 2 files changed, 11 insertions(+), 6 deletions(-) (limited to 'smash') diff --git a/smash/env.c b/smash/env.c index 58285f0..69e5e68 100644 --- a/smash/env.c +++ b/smash/env.c @@ -31,14 +31,16 @@ char* new_line_and_replace_vars(const char *line, u64 n) char *replaced; for (int i = 0; i < n && line[i]; ++i) { - if (line[i] == '$') { + if (line[i] == '$' && line[i + 1] == '[') { clear_buf(var, 64); - ++i; - for (int j = 0; line[i] && line[i] != ' ';) { + i += 2; + + for (int j = 0; line[i] && line[i] != ']';) { var[j] = line[i]; ++j; ++i; } + ++i; if (cstr_length(var) == 0) { size++; @@ -56,15 +58,16 @@ char* new_line_and_replace_vars(const char *line, u64 n) for (int i = 0; i < size && line[line_pos]; ++i) { - if (line[line_pos] == '$') { + if (line[line_pos] == '$' && line[line_pos + 1] == '[') { clear_buf(var, 64); - ++line_pos; + line_pos += 2; - for (int j = 0; line[line_pos] && line[line_pos] != ' ';) { + for (int j = 0; line[line_pos] && line[line_pos] != ']';) { var[j] = line[line_pos]; ++j; ++line_pos; } + ++line_pos; if (cstr_length(var)) { const char *e = getenv(var); diff --git a/smash/main.c b/smash/main.c index 645f4eb..fe393e1 100644 --- a/smash/main.c +++ b/smash/main.c @@ -88,6 +88,8 @@ int main(int argc, char *argv[]) line = new_line_and_replace_vars(linebuf, BUFSIZ); line_length = cstr_length(line); + wff(STDERR_FD, "execute: %s\n", line); + if (line_length > 0) { exec(line); } -- cgit v1.2.3-70-g09d2