Un-inline fclose()
authorH. Peter Anvin <hpa@zytor.com>
Wed, 27 Feb 2008 20:51:29 +0000 (12:51 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Wed, 27 Feb 2008 20:51:29 +0000 (12:51 -0800)
gcc complains that fclose() is too big to be inlined with -Os, so
humour it and move fclose() out of line.

com32/include/stdio.h
com32/lib/Makefile
com32/lib/fclose.c [new file with mode: 0644]

index 7cbb4b8..bbb7552 100644 (file)
@@ -54,12 +54,7 @@ static __inline__ FILE *fdopen(int __fd, const char *__m)
 {
   (void)__m; return __create_file(__fd);
 }
-static __inline__ int fclose(FILE *__f)
-{
-  extern int close(int);
-  return close(fileno(__f));
-}
-
+__extern int fclose(FILE *__f);
 __extern int fputs(const char *, FILE *);
 __extern int puts(const char *);
 __extern int fputc(int, FILE *);
index 810c2bc..3dec5c3 100644 (file)
@@ -4,7 +4,7 @@ include MCONFIG
 LIBOBJS = \
        abort.o atexit.o atoi.o atol.o atoll.o calloc.o creat.o         \
        ctypes.o errno.o fgetc.o fgets.o fopen.o fprintf.o fputc.o      \
-       putchar.o setjmp.o                                              \
+       fclose.o putchar.o setjmp.o                                     \
        fputs.o fread2.o fread.o free.o fwrite2.o fwrite.o getopt.o     \
        lrand48.o malloc.o stack.o memccpy.o memchr.o memcmp.o          \
        memcpy.o mempcpy.o memmem.o memmove.o memset.o memswap.o        \
diff --git a/com32/lib/fclose.c b/com32/lib/fclose.c
new file mode 100644 (file)
index 0000000..41f6a62
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * fclose.c
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+
+int fclose(FILE *__f)
+{
+  return close(fileno(__f));
+}