Add ABI compatability aliases.
authorIsaac Dunham <idunham@lavabit.com>
Sat, 6 Apr 2013 06:20:28 +0000 (23:20 -0700)
committerIsaac Dunham <idunham@lavabit.com>
Sat, 6 Apr 2013 06:20:28 +0000 (23:20 -0700)
GNU used several extensions that were incompatible with C99 and POSIX,
so they used alternate names for the standard functions.

The result is that we need these to run standards-conformant programs
that were linked with glibc.

13 files changed:
src/misc/getopt.c
src/stdio/fscanf.c
src/stdio/fwscanf.c
src/stdio/scanf.c
src/stdio/sscanf.c
src/stdio/swscanf.c
src/stdio/vfwscanf.c
src/stdio/vscanf.c
src/stdio/vsscanf.c
src/stdio/vswscanf.c
src/stdio/vwscanf.c
src/stdio/wscanf.c
src/string/strerror_r.c

index 35880a0..f1a1639 100644 (file)
@@ -70,3 +70,5 @@ int getopt(int argc, char * const argv[], const char *optstring)
        }
        return c;
 }
+
+weak_alias(getopt, __posix_getopt);
index ff6c776..58bc5fa 100644 (file)
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <stdarg.h>
+#include "libc.h"
 
 int fscanf(FILE *restrict f, const char *restrict fmt, ...)
 {
@@ -10,3 +11,5 @@ int fscanf(FILE *restrict f, const char *restrict fmt, ...)
        va_end(ap);
        return ret;
 }
+
+weak_alias(__isoc99_fscanf);
index 2f30dab..cb114b3 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <stdarg.h>
 #include <wchar.h>
+#include "libc.h"
 
 int fwscanf(FILE *restrict f, const wchar_t *restrict fmt, ...)
 {
@@ -11,3 +12,5 @@ int fwscanf(FILE *restrict f, const wchar_t *restrict fmt, ...)
        va_end(ap);
        return ret;
 }
+
+weak_alias(fwscanf,__isoc99_fwscanf);
index 3b35bdc..a740056 100644 (file)
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <stdarg.h>
+#include "libc.h"
 
 int scanf(const char *restrict fmt, ...)
 {
@@ -10,3 +11,5 @@ int scanf(const char *restrict fmt, ...)
        va_end(ap);
        return ret;
 }
+
+weak_alias(scanf,__isoc99_scanf);
index b575edf..8a2302f 100644 (file)
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <stdarg.h>
+#include "libc.h"
 
 int sscanf(const char *restrict s, const char *restrict fmt, ...)
 {
@@ -10,3 +11,5 @@ int sscanf(const char *restrict s, const char *restrict fmt, ...)
        va_end(ap);
        return ret;
 }
+
+weak_alias(sscanf,__isoc99_sscanf);
index 1fe3c3d..c798609 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <stdarg.h>
 #include <wchar.h>
+#include "libc.h"
 
 int swscanf(const wchar_t *restrict s, const wchar_t *restrict fmt, ...)
 {
@@ -11,3 +12,5 @@ int swscanf(const wchar_t *restrict s, const wchar_t *restrict fmt, ...)
        va_end(ap);
        return ret;
 }
+
+weak_alias(swscanf,__isoc99_swscanf);
index b3bc6f3..44910b4 100644 (file)
@@ -14,6 +14,7 @@
 #include "shgetc.h"
 #include "intscan.h"
 #include "floatscan.h"
+#include "libc.h"
 
 #define SIZE_hh -2
 #define SIZE_h  -1
@@ -308,3 +309,5 @@ match_fail:
        FUNLOCK(f);
        return matches;
 }
+
+weak_alias(vfwscanf,__isoc99_vfwscanf);
index 6901958..43892f0 100644 (file)
@@ -1,7 +1,10 @@
 #include <stdio.h>
 #include <stdarg.h>
+#include "libc.h"
 
 int vscanf(const char *restrict fmt, va_list ap)
 {
        return vfscanf(stdin, fmt, ap);
 }
+
+weak_alias(vscanf,__isoc99_vscanf);
index 049f4dd..929ffa3 100644 (file)
@@ -1,4 +1,5 @@
 #include "stdio_impl.h"
+#include "libc.h"
 
 static size_t do_read(FILE *f, unsigned char *buf, size_t len)
 {
@@ -13,3 +14,5 @@ int vsscanf(const char *restrict s, const char *restrict fmt, va_list ap)
        };
        return vfscanf(&f, fmt, ap);
 }
+
+weak_alias(vsscanf,__isoc99_vsscanf);
index 7a2f7c7..411dd39 100644 (file)
@@ -1,4 +1,5 @@
 #include "stdio_impl.h"
+#include "libc.h"
 #include <wchar.h>
 
 static size_t wstring_read(FILE *f, unsigned char *buf, size_t len)
@@ -34,3 +35,5 @@ int vswscanf(const wchar_t *restrict s, const wchar_t *restrict fmt, va_list ap)
        };
        return vfwscanf(&f, fmt, ap);
 }
+
+weak_alias(vswscanf,__isoc99_vswscanf);
index 9297cf0..63c9cce 100644 (file)
@@ -1,8 +1,11 @@
 #include <stdio.h>
 #include <stdarg.h>
 #include <wchar.h>
+#include "libc.h"
 
 int vwscanf(const wchar_t *restrict fmt, va_list ap)
 {
        return vfwscanf(stdin, fmt, ap);
 }
+
+weak_alias(vwscanf,__isoc99_vwscanf);
index a207cc1..8041225 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <stdarg.h>
 #include <wchar.h>
+#include "libc.h"
 
 int wscanf(const wchar_t *restrict fmt, ...)
 {
@@ -11,3 +12,5 @@ int wscanf(const wchar_t *restrict fmt, ...)
        va_end(ap);
        return ret;
 }
+
+weak_alias(wscanf,__isoc99_wscanf);
index 907dcf0..da26b4f 100644 (file)
@@ -1,5 +1,6 @@
 #include <string.h>
 #include <errno.h>
+#include "libc.h"
 
 int strerror_r(int err, char *buf, size_t buflen)
 {
@@ -15,3 +16,5 @@ int strerror_r(int err, char *buf, size_t buflen)
        memcpy(buf, msg, l+1);
        return 0;
 }
+
+weak_alias(strerror_r, __xpg_strerror_r);