From 4557ddddb1e8acb4405375a18f58f6363e13d5e3 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Sun, 20 Oct 2019 19:28:04 +0200 Subject: [PATCH] mescc: Mes C Library: Prepare for M2-Planet: fdgetc. * lib/mes/fdgetc.c: Rewrite C-constructs not supported by M2-Planet. --- lib/mes/fdgetc.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/mes/fdgetc.c b/lib/mes/fdgetc.c index 74a8eaff..0370c24e 100644 --- a/lib/mes/fdgetc.c +++ b/lib/mes/fdgetc.c @@ -19,12 +19,14 @@ */ #include +#include #include +#include #include #include #include -int __ungetc_buf[__FILEDES_MAX + 1] = { 0 }; +int *__ungetc_buf; int __ungetc_p (int filedes) @@ -35,8 +37,13 @@ __ungetc_p (int filedes) void __ungetc_init () { - if (__ungetc_buf[__FILEDES_MAX] == 0) - memset (__ungetc_buf, -1, (__FILEDES_MAX + 1) * sizeof (int)); + if (__ungetc_buf == 0) + { + int save_errno = errno; + __ungetc_buf = malloc ((__FILEDES_MAX + 1) * sizeof (int)); + errno = save_errno; + memset (__ungetc_buf, -1, (__FILEDES_MAX + 1) * sizeof (int)); + } } void @@ -65,10 +72,10 @@ fdgetc (int fd) int r = read (fd, &c, 1); if (r < 1) return -1; - i = (int) c; + i = c; } if (i < 0) - i += 256; + i = i + 256; return i; }