diff options
Diffstat (limited to 'targets/corstone-300/retarget.c')
-rw-r--r-- | targets/corstone-300/retarget.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/targets/corstone-300/retarget.c b/targets/corstone-300/retarget.c index 13cf68b..4bde44d 100644 --- a/targets/corstone-300/retarget.c +++ b/targets/corstone-300/retarget.c @@ -33,7 +33,8 @@ #define STDOUT 0x8002 #define STDERR 0x8003 -#define RETARGET(fun) _sys##fun +#define RETARGET(fun) _sys##fun +#define IO_OUTPUT(len) 0 #else /* @@ -52,7 +53,8 @@ extern FILEHANDLE _open(const char * /*name*/, int /*openmode*/); #define STDOUT 0x01 #define STDERR 0x02 -#define RETARGET(fun) fun +#define RETARGET(fun) fun +#define IO_OUTPUT(len) len #endif @@ -90,15 +92,16 @@ int RETARGET(_write)(FILEHANDLE fh, const unsigned char *buf, unsigned int len, case STDOUT: case STDERR: { int c; + unsigned int i; - while (len-- > 0) { - c = fputc(*buf++, stdout); + for (i = 0; i < len; i++) { + c = fputc(buf[i], stdout); if (c == EOF) { return EOF; } } - return 0; + return IO_OUTPUT(len); } default: return EOF; @@ -111,17 +114,18 @@ int RETARGET(_read)(FILEHANDLE fh, unsigned char *buf, unsigned int len, int mod switch (fh) { case STDIN: { int c; + unsigned int i; - while (len-- > 0) { + for (i = 0; i < len; i++) { c = fgetc(stdin); if (c == EOF) { return EOF; } - *buf++ = (unsigned char)c; + buf[i] = (unsigned char)c; } - return 0; + return IO_OUTPUT(len); } default: return EOF; |