summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/stdio/Makefile5
-rw-r--r--libc/stdio/ctermid.c36
-rw-r--r--libc/stdio/stdio.c19
3 files changed, 58 insertions, 2 deletions
diff --git a/libc/stdio/Makefile b/libc/stdio/Makefile
index c837ae3a1..81782d50f 100644
--- a/libc/stdio/Makefile
+++ b/libc/stdio/Makefile
@@ -29,7 +29,7 @@ MOBJ=_stdio_init.o _alloc_stdio_buffer.o _free_stdio_buffer_of_file.o \
setvbuf.o setbuf.o setlinebuf.o fclose.o _fopen.o fopen.o freopen.o \
fdopen.o fflush.o fsfopen.o fseek.o rewind.o ftell.o fgetpos.o fsetpos.o \
fputc.o fgetc.o fgets.o gets.o fputs.o puts.o ungetc.o fread.o fwrite.o \
- getchar.o putchar.o _uClibc_fwrite.o _uClibc_fread.o fopen64.o
+ getchar.o putchar.o _uClibc_fwrite.o _uClibc_fread.o fopen64.o getc.o putc.o
MSRC2=printf.c
MOBJ2=printf.o sprintf.o fprintf.o vprintf.o vsprintf.o vfprintf.o snprintf.o \
@@ -38,7 +38,8 @@ MOBJ2=printf.o sprintf.o fprintf.o vprintf.o vsprintf.o vfprintf.o snprintf.o \
MSRC3=scanf.c
MOBJ3=scanf.o sscanf.o fscanf.o vscanf.o vsscanf.o vfscanf.o
-CSRC=popen.c perror.c remove.c getdelim.c getline.c tmpfile.c tmpnam.c tmpnam_r.c tempnam.c
+CSRC=popen.c perror.c remove.c getdelim.c getline.c tmpfile.c tmpnam.c \
+ tmpnam_r.c tempnam.c ctermid.c
COBJS=$(patsubst %.c,%.o, $(CSRC))
OBJS=$(MOBJ) $(MOBJ2) $(MOBJ3) $(COBJS)
diff --git a/libc/stdio/ctermid.c b/libc/stdio/ctermid.c
new file mode 100644
index 000000000..004b8fecf
--- /dev/null
+++ b/libc/stdio/ctermid.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 1991, 1997 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <stdio.h>
+#include <string.h>
+
+
+/* Return the name of the controlling terminal.
+ If S is not NULL, the name is copied into it (it should be at
+ least L_ctermid bytes long), otherwise a static buffer is used. */
+char *
+ctermid (s)
+ char *s;
+{
+ static char name[L_ctermid];
+
+ if (s == NULL)
+ s = name;
+
+ return strcpy (s, "/dev/tty");
+}
diff --git a/libc/stdio/stdio.c b/libc/stdio/stdio.c
index f87a69416..d35dd7a66 100644
--- a/libc/stdio/stdio.c
+++ b/libc/stdio/stdio.c
@@ -1000,6 +1000,25 @@ FILE *fdopen(int fd, __const char *mode)
}
#endif
+
+#ifdef L_getc
+#undef getc
+int getc(FILE *stream)
+{
+ return(((stream)->bufpos >= (stream)->bufread)? fgetc(stream) :
+ (*(stream)->bufpos++));
+}
+#endif
+
+#ifdef L_putc
+#undef putc
+int putc(int c, FILE *stream)
+{
+ return(((stream)->bufpos >= (stream)->bufwrite)? fputc((c), (stream)) :
+ (unsigned char) (*(stream)->bufpos++ = (c)) );
+}
+#endif
+
#ifdef L_getchar
#undef getchar
int getchar(void)