diff --git a/contrib/sdk/sources/newlib/libc/crt/console.asm b/contrib/sdk/sources/newlib/libc/crt/console.asm index f36b768f91..c98f8a8684 100644 --- a/contrib/sdk/sources/newlib/libc/crt/console.asm +++ b/contrib/sdk/sources/newlib/libc/crt/console.asm @@ -11,6 +11,7 @@ public _con_set_flags@4 public _con_cls public _con_write_string@8 public _con_getch2@0 +public _con_gets section '.text' align 16 @@ -168,6 +169,9 @@ _con_write_string@8: _con_getch2@0: jmp [con_getch2] +_con_gets: + jmp [con_gets] + _con_get_flags: _con_set_flags@4: _con_cls: diff --git a/contrib/sdk/sources/newlib/libc/include/stdio.h b/contrib/sdk/sources/newlib/libc/include/stdio.h index 700e7a852c..f373618d64 100644 --- a/contrib/sdk/sources/newlib/libc/include/stdio.h +++ b/contrib/sdk/sources/newlib/libc/include/stdio.h @@ -146,12 +146,19 @@ typedef _fpos64_t fpos64_t; #define stdin (_REENT->_stdin) #define stdout (_REENT->_stdout) -#define stderr (_REENT->_stderr) + +#ifndef _NO_STDERR + #define stderr (_REENT->_stderr) +#else + #define stderr stdout +#endif #define _stdin_r(x) ((x)->_stdin) #define _stdout_r(x) ((x)->_stdout) #define _stderr_r(x) ((x)->_stderr) + + /* * Functions defined in ANSI C standard. */ diff --git a/contrib/sdk/sources/newlib/libc/sys/conio.c b/contrib/sdk/sources/newlib/libc/sys/conio.c index e9d3e70788..338a975a4e 100644 --- a/contrib/sdk/sources/newlib/libc/sys/conio.c +++ b/contrib/sdk/sources/newlib/libc/sys/conio.c @@ -1,6 +1,9 @@ #include <_ansi.h> +#include #include #include "io.h" +#include + void load_libconsole(); void __stdcall con_init(unsigned w_w, unsigned w_h, unsigned s_w, unsigned s_h, const char* t); @@ -10,6 +13,7 @@ unsigned __stdcall con_set_flags(unsigned new_flags); void __stdcall con_cls(void); void __stdcall con_write_string(const char* string, unsigned length); short __stdcall con_getch2(void); +char* __stdcall con_gets(char*, unsigned); int __gui_mode; @@ -17,15 +21,18 @@ static int console_read(const char *path, void *buff, size_t offset, size_t count, size_t *done) { char *p = buff; - int cnt = 0; + /*int cnt = 0; short c; - char ch; + char ch;*/ + con_gets(p, count+1); + *done = strlen(p); // __asm__ volatile("int3"); - +/* do { c = con_getch2(); + printf("%d\n",(char)c); ch = (char)c; if(ch != 0) { @@ -34,12 +41,11 @@ static int console_read(const char *path, void *buff, cnt++; } }while(ch != 0x0D); - *done = cnt; +*/ return 0; } - static int console_write(const char *path, const void *buff, size_t offset, size_t count, size_t *writes) {