how to determine your operating environment
Mister Snuffle-upagus
arnold at gatech.UUCP
Wed Oct 24 01:21:49 AEST 1984
# I have placed an exit after the archive, so don't worry about the .signature
#! /bin/sh
echo 'extracting --- README' 1>&2
cat > README << 'End of README'
README:
These two files are designed to do two things:
1) Help your C programs figure out if they are being compiled
in a System V, 4.1BSD, or 4.2BSD environment, and
2) Return a printable string that returns your system name.
This file depends on the first.
These have been tested on a Pyramid, in both universes, on a vax running
4.1, and on a vax running System V. The files should be pretty
self explanotory. Basically, it depends on the preprocessor identifiers
USG (System V), BSD (4.1 and 4.2), and BSD4_2 (4.2 only).
A makefile using these might have a line like
CFLAGS= -O `where`
Comments, suggestions, etc, are welcome. Have fun!
'End of README'
echo 'extracting --- where.sh' 1>&2
cat > where.sh << 'End of where.sh'
#! /bin/sh
# where --- shell file to determine what kind of environment we are in
if test -r /bin/universe # on a pyramid
then
case `/bin/universe` in
att) echo "-DUSG -UBSD -UBSD4_2"
;;
ucb) echo "-UUSG -DBSD -DBSD4_2"
;;
*) echo unknown operating system! 1>&2
echo "-UUSG -UBSD -UBSD4_2" # undefine them all
;;
esac
else # on something that is not a pyrmaid, probably a vax
if grep SIGTSTP /usr/include/signal.h > /dev/null
then # berkeley unix
if test -r /usr/include/whoami.h # 4.1
then
echo "-UUSG -DBSD -UBSD4_2"
else # 4.2
echo "-UUSG -DBSD -DBSD4_2"
fi
else # ATT unix
echo "-DUSG -UBSD -UBSD4_2"
fi
fi
End of where.sh
chmod +x where.sh
echo 'extracting --- sysname.c' 1>&2
cat > sysname.c << 'End of sysname.c'
/* sysname --- return a string telling us who we are */
#include <stdio.h>
#define EOS '\0'
#ifdef USG
#include <sys/utsname.h> /* stuff to find out who we are */
#endif
char *sysname ()
{
int i, j, k;
char c;
static char buf[MAXLINE] = "";
FILE *fp;
#ifdef USG /* System V */
struct utsname whoarewe;
uname (& whoarewe);
return (whoarewe.sysname);
#else
#ifdef BSD4_2 /* Berkeley 4.2 */
if (buf[0] != EOS)
return (buf); /* something already there */
j = sizeof (buf);
k = gethostname (buf, & j);
if (k != 0)
return ("unknown");
else
return (buf);
#else /* Berkeley 4.1 */
if (buf[0] != EOS)
return (buf);
if ((fp = fopen ("/usr/include/whoami.h", "r")) == NULL)
return ("unknown");
else
{
auto char *cp;
/*
* file should contain a single line:
* #define sysname "......"
*/
while ((c = getc (fp)) != '"' && c != EOF)
;
if (c == EOF)
cp = "unknown";
else
{
for (i = 0; (c = getc (fp)) != '"' && c != EOF; i++)
buf[i] = c;
buf[i] = EOS;
if (c == EOF && i == 0)
cp = "unknown";
else
cp = buf;
}
fclose (fp);
return (cp);
}
#endif
#endif
}
End of sysname.c
exit
--
Arnold Robbins
CSNET: arnold at gatech ARPA: arnold%gatech.csnet at csnet-relay.arpa
UUCP: { akgua, allegra, hplabs, ihnp4 }!gatech!arnold
Can you tell me how to get, how to get to Sesame Street?
More information about the Comp.sources.unix
mailing list