From 099abdcbf174b5e36786a20609bff07ede74b415 Mon Sep 17 00:00:00 2001 From: Andrew Pamment Date: Sun, 1 Dec 2019 08:08:59 +1000 Subject: [PATCH] md_getstring --- MD_Getc.c | 27 ++++++++++++++++++++++++++- MagiDoor.h | 1 + 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/MD_Getc.c b/MD_Getc.c index 184750d..3e8550a 100644 --- a/MD_Getc.c +++ b/MD_Getc.c @@ -20,7 +20,32 @@ char md_getc() { sleep(1); continue; } - md_putchar(c); return c; } +} + +int md_getstring(char *ptr, int maxlen) { + char c; + int len = 0; + while (len < maxlen) { + c = md_getc(); + if (c == '\n' || c == '\0') { + continue; + } + if (c == '\r') { + return len; + } else if (c == '\b' || c == 127) { + if (len > 0) { + md_printf("\027[D \027[D"); + len--; + ptr[len] = '\0'; + } + continue; + } + ptr[len++] = c; + ptr[len] = '\0'; + md_putchar(c); + } + + return len; } \ No newline at end of file diff --git a/MagiDoor.h b/MagiDoor.h index f9c5645..4b8381b 100644 --- a/MagiDoor.h +++ b/MagiDoor.h @@ -21,4 +21,5 @@ extern void md_exit(int exitcode); extern void md_putchar(char c); extern void md_printf(const char *fmt, ...); extern char md_getc(); +extern int md_getstring(char *ptr, int maxlen); #endif \ No newline at end of file