diff options
Diffstat (limited to 'libgloss/mep/read.c')
-rw-r--r-- | libgloss/mep/read.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/libgloss/mep/read.c b/libgloss/mep/read.c new file mode 100644 index 000000000..3cf5f7b78 --- /dev/null +++ b/libgloss/mep/read.c @@ -0,0 +1,36 @@ +/* read.c -- read characters from file, with hook. + * + * Copyright (c) 2003 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the BSD + * License. This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY expressed or implied, including the implied + * warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy + * of this license is available at http://www.opensource.org/licenses. Any + * Red Hat trademarks that are incorporated in the source code or documentation + * are not subject to the BSD License and may only be used or replicated with + * the express permission of Red Hat, Inc. + */ + +extern int __mep_read(int, unsigned char *, int); +extern int _ioIn(void) __attribute__((weak)); + +int +read(int fd, unsigned char *buf, int count) +{ + if (fd == 0 && &_ioIn) + { + int c = 0; + while (c < count) + { + int ch = _ioIn(); + *buf++ = ch; + if (ch == -1) + break; + c ++; + } + return c; + } + return __mep_read(fd, buf, count); +} |