aboutsummaryrefslogtreecommitdiffstats
path: root/portbash/libc.sh
diff options
context:
space:
mode:
Diffstat (limited to 'portbash/libc.sh')
-rw-r--r--portbash/libc.sh172
1 files changed, 172 insertions, 0 deletions
diff --git a/portbash/libc.sh b/portbash/libc.sh
new file mode 100644
index 0000000..28429b3
--- /dev/null
+++ b/portbash/libc.sh
@@ -0,0 +1,172 @@
+#! /bin/sh
+
+CC=cc
+export CC
+
+cat > x.c <<EOF
+extern char *alloca();
+
+main()
+{
+ char *s;
+ s = alloca(20);
+}
+EOF
+
+if ${CC} x.c > /dev/null 2>&1; then
+ :
+else
+ echo '#undef HAVE_ALLOCA'
+fi
+rm -f x.c x.o a.out
+
+cat > x.c << EOF
+#include <sys/types.h>
+#include <sys/param.h>
+extern char *getwd();
+main()
+{
+ getwd();
+}
+EOF
+
+if ${CC} x.c > /dev/null 2>&1; then
+ echo '#define HAVE_GETWD'
+else
+ echo '#undef HAVE_GETWD'
+ rm -f x.c x.o a.out
+
+ cat > x.c << EOF
+extern char *getcwd();
+
+main()
+{
+ getcwd();
+}
+EOF
+
+ if ${CC} x.c >/dev/null 2>&1; then
+ echo '#define HAVE_GETCWD'
+ fi
+fi
+rm -f a.out x.c x.o
+
+cat > x.c << EOF
+/*
+ * exit 0 if we have bcopy in libc and it works as in BSD
+ */
+
+extern int bcopy();
+
+char x[] = "12345";
+char y[] = "67890";
+
+main()
+{
+ bcopy(x, y, 5);
+ exit(strcmp(x, y));
+}
+EOF
+
+if ${CC} x.c > /dev/null 2>&1 && ./a.out ; then
+ BC='-DHAVE_BCOPY'
+fi
+
+rm -f x.c x.o a.out
+
+cat > x.c << EOF
+/*
+ * If this compiles, the system has uid_t and gid_t
+ */
+
+#include <sys/types.h>
+
+uid_t u;
+gid_t g;
+
+main()
+{
+ exit(0);
+}
+EOF
+
+if ${CC} x.c > /dev/null 2>&1; then
+ UIDT='-DHAVE_UID_T'
+fi
+
+rm -f x.c x.o a.out
+
+cat > x.c <<EOF
+#include <signal.h>
+
+extern char *sys_siglist[];
+
+main()
+{
+ char *x;
+
+ x = sys_siglist[3];
+ write(2, x, strlen(x));
+ exit(0);
+}
+EOF
+
+if ${CC} ./x.c >/dev/null 2>&1; then
+ echo '#define HAVE_SYS_SIGLIST'
+else
+
+ cat > x.c <<EOF
+#include <signal.h>
+
+extern char *_sys_siglist[];
+
+main()
+{
+ exit(0);
+}
+EOF
+
+ if ${CC} ./x.c >/dev/null 2>&1; then
+ echo '#define HAVE_SYS_SIGLIST'
+ SL='-Dsys_siglist=_sys_siglist'
+ fi
+fi
+
+PG=
+if ${CC} pgrp.c >/dev/null 2>&1; then
+ PG=`./a.out`
+fi
+
+if [ -f /unix ] && [ -f /usr/ccs/lib/libc.so ]; then
+ R4="-DUSGr4"
+fi
+
+touch not_a_directory
+if [ -f /usr/include/dirent.h ]; then
+ d='<dirent.h>'
+else
+ d='<sys/dir.h>'
+fi
+
+cat > x.c << EOF
+/*
+ * exit 0 if opendir does not check whether its argument is a directory
+ */
+
+#include $d
+DIR *dir;
+
+main()
+{
+ dir = opendir("not_a_directory");
+ exit (dir == 0);
+}
+EOF
+
+if ${CC} x.c > /dev/null 2>&1 && ./a.out ; then
+ OD='-DOPENDIR_NOT_ROBUST'
+fi
+
+rm -f x.c x.o a.out pgrp.o not_a_directory
+echo "#define SYSDEP_CFLAGS $BC $UIDT $SL $PG $R4 $OD"
+exit 0