#include <sys/types.h>
#ifdef hpux
#define WANT_RANDOM
#define WANT_QUE
#endif
#ifdef macII
#define WANT_BFUNCS
#define WANT_MEMMOVE
#define NO_BZERO
#define WANT_RANDOM
#endif
#if defined(SVR4) && !defined(SCO325)
#define WANT_BFUNCS
#define WANT_FFS
#define WANT_RANDOM
#endif
#ifdef hcx
#define WANT_FFS
#endif
#ifdef SYSV
#ifdef i386
#ifndef SCO
#define WANT_FFS
#define WANT_MEMMOVE
#endif
#endif
#endif
#ifdef _SEQUENT_
#define WANT_GTOD
#define WANT_FFS
#endif
#ifdef WANT_BFUNCS
#include <X11/Xosdefs.h>
#if (__STDC__) || defined(SVR4) || defined(hpux)
#include <string.h>
void bcopy (b1, b2, length)
register char *b1, *b2;
register int length;
{
memmove(b2, b1, (size_t)length);
}
int bcmp (b1, b2, length)
register char *b1, *b2;
register int length;
{
return memcmp(b1, b2, (size_t)length);
}
void bzero (b, length)
register char *b;
register int length;
{
memset(b, 0, (size_t)length);
}
#else
void bcopy (b1, b2, length)
register char *b1, *b2;
register int length;
{
if (b1 < b2) {
b2 += length;
b1 += length;
while (length--)
*--b2 = *--b1;
} else {
while (length--)
*b2++ = *b1++;
}
}
#if defined(SYSV)
#include <memory.h>
int bcmp (b1, b2, length)
register char *b1, *b2;
register int length;
{
return memcmp(b1, b2, length);
}
#ifndef NO_BZERO
bzero (b, length)
register char *b;
register int length;
{
memset(b, 0, length);
}
#endif
#else
int bcmp (b1, b2, length)
register char *b1, *b2;
register int length;
{
while (length--) {
if (*b1++ != *b2++) return 1;
}
return 0;
}
void bzero (b, length)
register char *b;
register int length;
{
while (length--)
*b++ = '\0';
}
#endif
#endif
#endif
#ifdef WANT_MEMMOVE
char *memmove (b1, b2, length)
register char *b1, *b2;
register int length;
{
char *sb1 = b1;
if (b2 < b1) {
b1 += length;
b2 += length;
while (length--)
*--b1 = *--b2;
} else {
while (length--)
*b1++ = *b2++;
}
return sb1;
}
#endif
#ifdef WANT_FFS
int
ffs(mask)
unsigned int mask;
{
register i;
if ( ! mask ) return 0;
i = 1;
while (! (mask & 1)) {
i++;
mask = mask >> 1;
}
return i;
}
#endif
#ifdef WANT_RANDOM
#if defined(SYSV) || defined(SVR4) || defined(hpux)
long lrand48();
long random()
{
return (lrand48());
}
void srandom(seed)
int seed;
{
srand48(seed);
}
#else
long random()
{
return (rand());
}
void srandom(seed)
int seed;
{
srand(seed);
}
#endif
#endif
#ifdef WANT_QUE
struct qelem {
struct qelem *q_forw;
struct qelem *q_back;
char *q_data;
};
insque(elem, pred)
register struct qelem *elem, *pred;
{
register struct qelem *q;
if ( elem->q_forw = q = (pred ? pred->q_forw : pred) )
q->q_back = elem;
if ( elem->q_back = pred )
pred->q_forw = elem;
}
remque(elem)
register struct qelem *elem;
{
register struct qelem *q;
if ( ! elem ) return;
if ( q = elem->q_back ) q->q_forw = elem->q_forw;
if ( q = elem->q_forw ) q->q_back = elem->q_back;
}
#endif
#ifdef WANT_GTOD
#ifdef _SEQUENT_
#include <X11/Xos.h>
#endif
int gettimeofday (tvp, tzp)
struct timeval *tvp;
struct timezone *tzp;
{
#ifdef _SEQUENT_
get_process_stats (tvp, -1, NULL, NULL);
#ifndef SVR4
if (tzp)
{
tzset ();
tzp->tz_minuteswest = timezone / 60;
tzp->tz_dsttime = daylight;
}
#endif
return (0);
#else
time (&tvp->tv_sec);
tvp->tv_usec = 0L;
#ifndef SVR4
if (tzp) {
fprintf( stderr,
"Warning: gettimeofday() emulation does not return timezone\n"
);
}
#endif
#endif
}
#endif