From c6ca64d847df28598d69d6bc0f3ebd4bdf544894 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Tue, 28 Jan 1997 15:50:39 +0100 Subject: [PATCH] Now uses write(2) instead of fwrite(3c) in the fallback. Rev: src/modules/readlinemod/readlinemod.c:1.4 --- src/modules/readlinemod/readlinemod.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/modules/readlinemod/readlinemod.c b/src/modules/readlinemod/readlinemod.c index 7e4a40a5eb..c48a61ec2b 100644 --- a/src/modules/readlinemod/readlinemod.c +++ b/src/modules/readlinemod/readlinemod.c @@ -88,6 +88,8 @@ void init_readlinemod_efuns(void) static void f_readline(INT32 args) { + char *prompt; + int plen; char line[BLOCK]; char *r; int tmp; @@ -98,20 +100,25 @@ static void f_readline(INT32 args) if(sp[-args].type != T_STRING) error("Bad argument 1 to readline()\n"); - fwrite(sp[-args].u.string->str,1,sp[-args].u.string->len,stdout); - fflush(stdout); + prompt = sp[-args].u.string->str; + plen = sp[-args].u.string->len; - pop_n_elems(args); THREADS_ALLOW(); - r=fgets(line,BLOCK,stdin); + + write(1, prompt, plen); + r=fgets(line,BLOCK,stdin); /* Should probably get rid of this one */ + line[BLOCK-1] = '\0'; /* Always NUL-terminated */ + THREADS_DISALLOW(); - if(r) + pop_n_elems(args); + + if (r) { INT32 len; - if(len=strlen(line)) + if ((len=strlen(line))) { - if(line[len-1]=='\n') + if (line[len-1]=='\n') { push_string(make_shared_binary_string(line,len-1)); return; -- GitLab