diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | mach/devstream.c | 14 |
2 files changed, 15 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 1bf429ddce..e259705895 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Thu Mar 21 11:19:15 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu> + + * mach/devstream.c (input): Translate \r to \n on input. + Wed Mar 20 11:28:49 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * stdio-common/printf.h, stdio-common/printf_fp.c, diff --git a/mach/devstream.c b/mach/devstream.c index a2162db98b..c35e548dd2 100644 --- a/mach/devstream.c +++ b/mach/devstream.c @@ -1,7 +1,7 @@ /* stdio on a Mach device port. - Translates \n to \r\n on output, echos input. + Translates \n to \r\n on output, echos and translates \r to \n on input. -Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -63,6 +63,14 @@ input (FILE *f) err = device_write_inband ((device_t) f->__cookie, 0, f->__target, buffer, nread, (int *) &to_read); + /* Translate LF to CR. */ + { + char *p; + for (p = memchr (buffer, '\r', nread); p; + p = memchr (p + 1, '\r', (buffer + nread) - (p + 1))) + *p = '\n'; + } + if (f->__buffer == NULL) return (unsigned char) c; @@ -84,7 +92,7 @@ output (FILE *f, int c) while (to_write > 0) { if (err = device_write ((device_t) f->__cookie, 0, - f->__target, (char *)p, + f->__target, (char *)p, to_write, &wrote)) { errno = err; |