about summary refs log tree commit diff
path: root/libio/bits
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2018-02-05 14:42:29 -0500
committerZack Weinberg <zackw@panix.com>2018-02-05 19:59:03 -0500
commit26c07172cde74617ca7214c93cdcfa75321e6b2b (patch)
tree27828020addf2f8ee8b44801169428b1e149f38f /libio/bits
parentde6da571eeff41e69a28744b4c57e219828e26bc (diff)
downloadglibc-26c07172cde74617ca7214c93cdcfa75321e6b2b.tar.gz
glibc-26c07172cde74617ca7214c93cdcfa75321e6b2b.tar.xz
glibc-26c07172cde74617ca7214c93cdcfa75321e6b2b.zip
Remove getc and putc macros from the public stdio.h.
The getc and putc macros in the public stdio.h expand to call _IO_getc
and _IO_putc respectively.  As _IO_getc, fgetc, and getc are all aliases
for the same function, and _IO_putc, fputc, and putc are also all aliases
for the same function, the macros are pointless.  The C standard does
not require getc and putc to be macros, so let's just not have macros.
All four symbols are exported from libc.so at the same, ancient symbol
version, so there should be no risks for binary compatibility.  Similarly,
the getchar and putchar inlines in bits/stdio.h forward to getc and putc
instead of their _IO_ aliases.

As a change from longstanding historical practice, this does seem
like it might break _something_, so there is a note in NEWS, which
is also a convenient place to advise people that if they thought getc
and putc had reduced per-character overhead they should consider using
getc_unlocked and putc_unlocked instead.  (These are also not macros,
but when optimizing, they are inlines.)

	* libio/stdio.h: Don't define getc or putc as macros.
	* libio/bits/stdio.h (getchar, putchar): Use getc and putc,
	not _IO_getc and _IO_putc.
Diffstat (limited to 'libio/bits')
-rw-r--r--libio/bits/stdio.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/libio/bits/stdio.h b/libio/bits/stdio.h
index d287083de1..eb42b22153 100644
--- a/libio/bits/stdio.h
+++ b/libio/bits/stdio.h
@@ -43,7 +43,7 @@ vprintf (const char *__restrict __fmt, _G_va_list __arg)
 __STDIO_INLINE int
 getchar (void)
 {
-  return _IO_getc (stdin);
+  return getc (stdin);
 }
 
 
@@ -78,7 +78,7 @@ getchar_unlocked (void)
 __STDIO_INLINE int
 putchar (int __c)
 {
-  return _IO_putc (__c, stdout);
+  return putc (__c, stdout);
 }