From d102598c3989239d749b86b0f49fa54554f54402 Mon Sep 17 00:00:00 2001 From: Upstream Date: Mon, 12 Jan 1970 13:46:40 +0000 Subject: external/netcat 110 --- stupidh | 464 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 464 insertions(+) create mode 100755 stupidh (limited to 'stupidh') diff --git a/stupidh b/stupidh new file mode 100755 index 0000000..9214102 --- /dev/null +++ b/stupidh @@ -0,0 +1,464 @@ +#! /bin/sh +## +## Find stupid system include dependencies and account for them. Squirts +## a sample .h file to stdout containing [too many of] the right things. +## If you hose the output into "stupid.h", you will get MORE information. +## This takes a while to run, because it checks so many things. +## +## IF YOU HAVE a system/arch/compiler/whatever that is NOT one of: +## msdos-msc6.x ultrix-vax ultrix-mips sunos4.1.x-sparc solaris2.x-sparc +## aix-rs6k linux1.[01].x-x86 freebsd-x86 netbsd-x86 hpux +## [... hopefully this list will grow very large] +## or even if you aren't sure, you would be doing me and the net in general +## a wonderful service by running this and MAILING me the "full" output, e.g. +## +## chmod +x stupidh +## ./stupidh > stupid.h +## mail hobbit@avian.org < stupid.h +## +## WARNING: You may have to change "cc" to "gcc" below if you don't have +## "cc" [e.g. solaris, thank you very fucking much, Sun]. +## Please note any errors this generates, too... +## +## *Hobbit*, 941122 and previous. VERSION: 1.3 951107 +## +## edits: Use a consistent naming scheme, for easier identification and cleanup. +## accomodate gcc's BOGUS assumptions based on input filename. +## added a few more include-names and try-predefines; some swiped from autoconf. +## added a couple of things commonly done as #defines so we can SEE 'em + +## Here is where to change "cc" to "gcc" if needed: +CC=cc + +if test -z "${INCLUDE}" ; then + INCLUDE=/usr/include +fi + +echo '/* STUPIDH run:' +uname -a +echo '*/' +echo '' + +echo "/* Includes, from ${INCLUDE} */" +for xx in \ +assert ctype cdefs errno file fcntl ioctl malloc stdio stdlib stdarg iostdio \ +stddef dirent direct dir ndir utmp wtmp utmpx wtmpx lastlog login paths \ +getopt string strings signal setjmp io param stat types time timeb utime \ +dos msdos unistd socket netdb varargs sysinfo systeminfo resource ulimit \ +stream stropts pstat sysmacros termio termios sgtty tty ttyent lstat select \ +sockio wait vfork bsdtypes mkdev utsname sysexits \ +; do + + XX='' + if test -f ${INCLUDE}/${xx}.h ; then + echo "#include <${xx}.h>" + XX=`echo $xx | tr '[a-z]' '[A-Z]'` + fi + if test -f ${INCLUDE}/sys/${xx}.h ; then + echo "#include " + XX=`echo $xx | tr '[a-z]' '[A-Z]'` + fi + +# everyone seems to have their own conventions; this may not be complete. +# thats why this is so STUPID. +# HAS_xx and USE_xx might indicate functions and available library calls, +# not includes. Deal... + + if test "${XX}" ; then + echo "#define USE_${XX}_H" + echo "#define HAS_${XX}_H" + echo "#define HAS_${XX}" + echo "#define HAS${XX}" + echo "#define HAVE_${XX}_H" + echo "#define HAVE_${XX}" + echo "#define HAVE${XX}H" + echo "#define ${XX}H" + echo '' + fi +# Stupid hack: "dir" and "dirent" might mutually exclusive, a la GNU +# includes. This is to prevent it from biting us. + if test "${xx}" = "dirent" ; then + echo "#ifdef _SYS_DIRENT_H" + echo "#undef _SYS_DIRENT_H" + echo "#endif" + fi + +### To make a DOS batchfile instead, do this [on a unix box!], xfer results, +### and have "xxx.bat" that types out all the cruft for %INCLUDE%\%1. +### WARNING: I might not have gotten the superquoting exactly right here... +# echo "if exist %INCLUDE%\\${xx}.h call xxx ${xx}" +# echo "if exist %INCLUDE%\\sys\\${xx}.h call xxx sys/${xx}" +### You also need to save and manually run the CPP input file, below. +### I've done this for msc6 and would appreciate results for other compilers. + +done +sync +sleep 1 + +### Note: if all the previous output went to "stupid.h", it will be +### reincluded in the second part of this. + +sed -e '/^#/d' -e '/^[ ]*$/d' > st00pid.in << 'EOF' + +### More recently, some of this was swiped from the "gcc" doc. Autoconf is +### worth a harder look for more ideas; havent gotten around to it yet. +# architectures +alpha +dec +ibm +i370 +i960 +i860 +ibm032 +a29k +indigo +iris +mips +mipsel +sparc +sparclite +ncr +sh +harris +apple +vax +x86 +ix86 +i286 +i386 +i486 +i586 +pentium +intel +smp +mpu +mpu8080 +mpu8086 +amiga +hp +hppa +hp400 +hp9000 +snake +decmips +mc68000 +mc68010 +mc68020 +mc68030 +m68000 +m68010 +m68020 +m68030 +m68k +m88k +u3b15 +u3b +u3b2 +u3b5 +u3b15 +u3b20d +we32k +ppc +powerpc +arm +aviion +ns32000 +iapx286 +# minor exception to lc-vs-uc thing? +iAPX286 +rs6000 +rs6k +risc +sun +sun3 +sun4 +sun4c +sun4m +sequent +apollo +solbourne +pyr +pyramid +interdata +intertec +pdp11 +u370 +next +mac +macintosh + +# for completeness; ya never know ... yes, found it!! -- solaris inet/common.h +big_endian +little_endian +lsbfirst +msbfirst + +# vendors/OSes +unix +munix +m_unix +gcos +os +gssc +tss +isc +# *This* pair of imbeciles does *caseified defines*. Pinheads. One of +# these might trigger before the "tr" step. +NetBSD +netbsd +freebsd +FreeBSD +# cant do 386bsd, I dont think, but ... +_386bsd +bsd386 +bsdunix +bsd_2 +bsd_20 +bsd +bsdi +bsd4 +bsd42 +bsd43 +bsd44 +bsd4_2 +bsd4_3 +bsd4_4 +linux +minix +ultrix +ult3 +ult4 +bull +convex +convex_source +res +rt +esix +dg +dgux +encore +osf +osf1 +osf2 +# oops: +# osf/1 +mach +mach386 +mach_386 +nextstep +tahoe +reno +sunos +sunos3 +sunos4 +sunos5 +solaris +sun_src_compat +svr3 +svr4 +svr3_style +svr4_style +sysv +hpux +hp_ux +irix +sgi +sony +news +newsos +news_os +luna +lynxos +riscos +microport +ewsux +ews_ux +mport +dynix +genix +unicos +unixware +msdos +dos +os2 +novell +univel +plan9 +att +att_unix +sco +odt +aix +aux +a_ux +rsx +vms + +# compiler cruft?? +ansi +ansi_source +ansic +stdc +lint +sccs +libc_sccs +ms +msc +microsoft +gcc +gnu +gnuc +gnucc +gnu_source +sabre +saber +cygnus +source +all_source +gprof +prof +posix +posix_source +posix_sources +posix_c_source +xopen_source +args +p +proto +no_proto +prototype +prototypes +reentrant +kernel +str +trace +asm +libcpp +athena +athena_compat +# some preprocessors cant deal with this +# c++ +cxx +cplusplus +borland +turbo +turboc +lattice +highc + +# various defines that pop out of other .h files that we need to know about +index +strchr +rindex +strrchr +bcopy +memcpy +bzero +memset +path_login +path_lastlog +path_utmp +path_utmpx + +EOF + +# FL must be named something.c, so STUPID gcc recognized it as a non-object!! +( FL=st00pid.c + if test -f stupid.h ; then + cp stupid.h $FL + sync + echo '/* Re-including stupid.h */' + sleep 1 + else + echo '/* Skipping stupid.h */' + fi + while read xx ; do + XX=`echo $xx | tr '[a-z]' '[A-Z]'` + echo "#ifdef ${xx}" >> $FL + echo "\"${xx}\" = ${xx}" >> $FL + echo "#endif" >> $FL + echo "#ifdef _${xx}" >> $FL + echo "\"_${xx}\" = _${xx}" >> $FL + echo "#endif" >> $FL + echo "#ifdef _${xx}_" >> $FL + echo "\"_${xx}_\" = _${xx}_" >> $FL + echo "#endif" >> $FL + echo "#ifdef __${xx}" >> $FL + echo "\"__${xx}\" = __${xx}" >> $FL + echo "#endif" >> $FL + echo "#ifdef __${xx}__" >> $FL + echo "\"__${xx}__\" = __${xx}__" >> $FL + echo "#endif" >> $FL + echo "#ifdef ${XX}" >> $FL + echo "\"${XX}\" = ${XX}" >> $FL + echo "#endif" >> $FL + echo "#ifdef _${XX}" >> $FL + echo "\"_${XX}\" = _${XX}" >> $FL + echo "#endif" >> $FL + echo "#ifdef _${XX}_" >> $FL + echo "\"_${XX}_\" = _${XX}_" >> $FL + echo "#endif" >> $FL + echo "#ifdef __${XX}" >> $FL + echo "\"__${XX}\" = __${XX}" >> $FL + echo "#endif" >> $FL + echo "#ifdef __${XX}__" >> $FL + echo "\"__${XX}__\" = __${XX}__" >> $FL + echo "#endif" >> $FL + done +# and pick up a few specials + echo "#ifdef major" >> $FL + echo "\"major\" = major (x)" >> $FL + echo "\"minor\" = minor (x)" >> $FL + echo "#endif" >> $FL + echo "#ifdef FD_SETSIZE" >> $FL + echo "\"FD_SETSIZE\" = FD_SETSIZE" >> $FL + echo "#endif" >> $FL +) < st00pid.in +sync + +echo '/* Compiler predefines:' +${CC} -E st00pid.c | sed -e '/^#/d' -e '/^[ ]*$/d' +echo '*/' +sync + +cat > st00pid.c << 'EOF' +#include +main() { +union { + char *bletch; + int *i; +} yow; +static char orig[16]; + strcpy (orig, "ABCDEFGHIJK"); + yow.bletch = orig; + printf ("endian thing: %s = 0x%lx, addrbyte = %x -- ", + yow.bletch, *yow.i, *yow.i & 0xFF); + printf (((*yow.i & 0xff) == 0x41) ? "LITTLE\n" : "BIG\n"); + printf ("short %d; int %d; long %d\n", + sizeof (short), sizeof (int), sizeof (long)); +} +EOF + +${CC} -o st00pid.x st00pid.c +echo '/* Architecture:' +./st00pid.x +echo '*/' + +### dont nuke if generating DOS batchfiles +rm -f st00pid.* +sync +exit 0 + +### stuff remaining to deal with: +# maybe take out the slew of HAS_* and HAS* excess predefines, and only use +# our "standardized" scheme [like we were going to generate a real includible +# file outa this??] +# various POSIX_ME_HARDERisms: +# vfork +# lockf/flock/fcntl/euuugh +# signal stuff +# termio/termios/sgtty hair +# strdup and related +# ifdef HAVE_STD_LIB and such nonsense +# auto-sniff cc-vs-gcc somehow? maybe a straight OR with exit statii.. + -- cgit v1.2.3