ESH

Executive Shell
git clone http://git.omkov.net/ESH
Log | Tree | Refs | README | Download

AuthorJamozed <[email protected]>
Date2021-03-29 10:30:04
Commit68c405989acf065a3c85f29df9768c22ef183b45
Parent0a41e43bd0e8ea92106b3ec47ec3147dc5e1c1c6

Implement single line lineRefresh

This currently only handles single lines, multi line refresh shall be implemented in the future when it is needed

Diffstat

M src/lineread.c | 7 +++++--
M src/main.c | 4 ----

2 files changed, 5 insertions, 6 deletions

diff --git a/src/lineread.c b/src/lineread.c
index b6bb64f..a0b8f44 100644
--- a/src/lineread.c
+++ b/src/lineread.c
@@ -129,7 +129,10 @@ static inline void tcrestore(void) {
 
 /* Refresh line */
 static void lineRefresh(struct line *l) {
-	
+	fputs("\r\x1b[0K", stdout);
+	fputs(l->prompt, stdout); fputs(l->s, stdout);
+	fprintf(stdout, "\r\x1b[%zuC", l->pl + l->sp);
+	return;
 }
 
 /* Move cursor left */
@@ -161,7 +164,7 @@ static int lineInsert(struct line *l, char c) {
 	}
 	else {
 		memmove(l->s + l->sp + 1, l->s + l->sp, l->sl - l->sp);
-		l->s[l->sp++] = c; l->s[++l->sp] = 0; lineRefresh(l);
+		l->s[l->sp++] = c; l->s[++l->sl] = 0; lineRefresh(l);
 	} return c;
 }
 
diff --git a/src/main.c b/src/main.c
index fb7f153..5bd0101 100644
--- a/src/main.c
+++ b/src/main.c
@@ -65,10 +65,6 @@ int main(int ac, char *av[]) { (void)(ac);
 		char **args = parse(line); free(line);
 		if (!args) { printf("PARSEFAIL\n"); error(1, "%s", serr()); }
 
-		for (int i = 0; args[i]; ++i) {
-			printf("%s\n", args[i]);
-		}
-		
 		_ret = execute(args);
 
 		for (size_t i = 0; args[i]; ++i) { free(args[i]); } free(args);