diff --git a/src/msh.c b/src/msh.c index 3e62a3c..9d8490a 100644 --- a/src/msh.c +++ b/src/msh.c @@ -21,7 +21,6 @@ #define DEFAULTTOKENSCAPACITY 64 #define DEFAULTHISTORYCAPACITY 128 -const int LINESIZE = 512; int cd(int argc, char** argv) { if (argc != 1) { @@ -143,7 +142,7 @@ int main(int argc, char** argv) { int retval = 0; char* line = NULL; size_t linecapacity = 0; - char prompt[LINESIZE] = {}; + char prompt[DEFAULTLINECAPACITY] = {}; size_t linelen = 0; char* tokenwork = NULL; size_t tokenworkcapacity = 0; @@ -161,7 +160,7 @@ int main(int argc, char** argv) { int laststatus = 0; int wstatus; - char pwd[LINESIZE] = {}; + char pwd[DEFAULTLINECAPACITY] = {}; char* pwd_disp; char* user; @@ -280,7 +279,7 @@ int main(int argc, char** argv) { // Main loop while(1) { - char* result = getcwd(pwd, LINESIZE - 1); + char* result = getcwd(pwd, DEFAULTLINECAPACITY - 1); if (result == NULL) { retval = 1; goto cleanup; @@ -293,7 +292,7 @@ int main(int argc, char** argv) { snprintf( prompt, - LINESIZE, + DEFAULTLINECAPACITY, ANSI_BG_BLUE ANSI_FG_BLACK "%s" // status @@ -401,8 +400,9 @@ int main(int argc, char** argv) { } } else if (ansi == ANSI_DELETE_WORD) { if (cursor > 0) { + // 0123 56 size_t index = strnrcspn(line, cursor, " \t"); - memmove(line + index, line + cursor, LINESIZE - cursor); + memmove(line + index, line + cursor, linecapacity - cursor); linelen -= cursor - index; cursor = index; } @@ -423,12 +423,12 @@ int main(int argc, char** argv) { if (cursor == linelen) { line[cursor] = 0; } else { - memmove(line + cursor, line + cursor + 1, LINESIZE - (cursor)); + memmove(line + cursor, line + cursor + 1, linecapacity - (cursor)); } } else { // We are typing if (cursor != linelen) { - memmove(line + cursor + 1, line + cursor, LINESIZE - cursor - 1); + memmove(line + cursor + 1, line + cursor, linecapacity - cursor - 1); } line[cursor] = readc;