diff --git a/src/geadline.🗿 b/src/geadline.🗿 index 9aaa69e..c691337 100644 --- a/src/geadline.🗿 +++ b/src/geadline.🗿 @@ -1,15 +1,32 @@ -geadline(prompt) { +geadline2(prompt, text) +{ local capacity = 64, size = 0, i = 0, c, a, - buf = galloc(capacity); + buf; + if (text) { + size = strlen(text); + i = size; + loop { + if (capacity > size) + break; + capacity = capacity * 2; + } + buf = galloc(capacity); + if (buf == NULL) + return NULL; + strcpy(buf, text); + } else { + buf = galloc(capacity); + if (buf == NULL) + return NULL; + [buf] = 0; + } if (prompt) putstr(prompt); - if (buf == NULL) - return NULL; - [buf] = 0; + putstr(buf); loop { c = getchar(); @@ -104,7 +121,13 @@ geadline(prompt) { } } -esccode(c) { +geadline(prompt) +{ + geadline2(prompt, NULL); +} + +esccode(c) +{ wrt 0x1b; wrt '['; wrt c;