187 lines
4.2 KiB
C
187 lines
4.2 KiB
C
/* WIDE AREA INFORMATION SERVER SOFTWARE:
|
|
Developed by Thinking Machines Corporation and put into the public
|
|
domain with no guarantees or restrictions.
|
|
*/
|
|
|
|
#ifndef lint
|
|
static char *RCSid = "$Header: /buzza/cvsroot/technologies/archie-support/prospero/lib/psrv/wais_gw/ustubs.c,v 1.1.1.1 1999/03/18 16:50:52 pedro Exp $";
|
|
#endif
|
|
|
|
/* Change log:
|
|
* $Log: ustubs.c,v $
|
|
* Revision 1.1.1.1 1999/03/18 16:50:52 pedro
|
|
* This modules includes the prosper server and the berkeley db code used
|
|
* in Archie
|
|
*
|
|
* Revision 1.1.1.1 1994/08/31 16:33:09 bajan
|
|
* New Prospero release
|
|
*
|
|
* Revision 1.2 94/04/19 00:29:17 swa
|
|
* (mitra) assert(P_IS_THIS_THREAD_MASTER()) added in places.
|
|
* Added tests for SOLARIS
|
|
*
|
|
* Revision 1.1 93/11/10 13:35:08 swa
|
|
* Initial revision
|
|
*
|
|
* Revision 1.4 92/05/06 17:35:13 jonathan
|
|
* Modified some #if's for NeXT and Mach.
|
|
*
|
|
* Revision 1.3 92/03/06 11:08:49 jonathan
|
|
* fixed incompatible return type error in HP version of getwd. Thanks to
|
|
* cshotton@oac.hsc.uth.tmc.edu.
|
|
*
|
|
* Revision 1.2 92/02/12 13:54:29 jonathan
|
|
* Added "$Log" so RCS will put the log message in the header
|
|
*
|
|
*
|
|
*/
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
/* stubs for silly non-ansi c compilers */
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
#include "ustubs.h"
|
|
#include "futil.h" /* for MAX_FILENAME_LEN */
|
|
#include "cutil.h" /* for substrcmp and NULL */
|
|
#include <pmachine.h> /* For Solaris */
|
|
#include <stdlib.h> /* SOLARIS: for rand and srand */
|
|
#include <pfs_threads.h> /* For P_IS_THIS_THREAD_MASTER */
|
|
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
#if (defined(__svr4__) || defined(hpux) || defined(SCOUNIX)) && !defined(SOLARIS)
|
|
char*
|
|
getwd(char* pathname)
|
|
{
|
|
return((char*)getcwd(pathname, MAX_FILENAME_LEN));
|
|
}
|
|
|
|
long
|
|
random(void)
|
|
{
|
|
assert(P_IS_THIS_THREAD_MASTER()); /*SOLARIS: rand, srand & random MT-Unsafe */
|
|
return(rand());
|
|
}
|
|
|
|
|
|
long
|
|
srandom(unsigned long seed)
|
|
{
|
|
assert(P_IS_THIS_THREAD_MASTER()); /*SOLARIS: rand, srand & random MT-Unsafe */
|
|
srand(seed);
|
|
return(0);
|
|
}
|
|
|
|
long
|
|
sigmask(long sig)
|
|
{
|
|
}
|
|
|
|
long
|
|
sigblock(long mask)
|
|
{
|
|
}
|
|
|
|
long
|
|
sigsetmask(long mask)
|
|
{
|
|
}
|
|
|
|
#endif
|
|
#if (defined(__svr4__) || defined(hpux))
|
|
#include <sys/systeminfo.h>
|
|
|
|
long
|
|
gethostname(char* hostname,long len)
|
|
{
|
|
return(sysinfo(SI_HOSTNAME,hostname,len));
|
|
}
|
|
|
|
#endif /* def SYSV */
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
#ifndef ANSI_LIKE /* memmove is an ANSI function not defined by K&R */
|
|
#ifndef hpux /* but HP defines it */
|
|
void*
|
|
memmove(void* str1,void* str2,size_t n)
|
|
{
|
|
#ifdef M_XENIX
|
|
memcpy((char*)str2,(char*)str1,(long)n); /* hope it works! */
|
|
#else /* ndef M_XENIX */
|
|
bcopy((char*)str2,(char*)str1,(long)n);
|
|
#endif /* ndef M_XENIX */
|
|
return(str1);
|
|
}
|
|
#endif /* ndef hpux */
|
|
|
|
#else /* ansi is defined */
|
|
|
|
#ifdef __GNUC__ /* we are ansi like, are we gcc */
|
|
|
|
#if !(defined(NeXT) || defined(Mach) || defined(__svr4__))
|
|
/* and we are not on a next or solaris ! */
|
|
|
|
void*
|
|
memmove(void* str1,void* str2,size_t n)
|
|
{
|
|
bcopy((char*)str2,(char*)str1,(long)n);
|
|
return(str1);
|
|
}
|
|
|
|
#endif /* not NeXT or Mach */
|
|
|
|
#endif /* __GNUC__ */
|
|
|
|
#endif /* else ndef ANSI_LIKE */
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
#ifndef ANSI_LIKE
|
|
|
|
/* atoi is not defined k&r. copied from the book */
|
|
long
|
|
atol(char* s)
|
|
{
|
|
long i, n, sign;
|
|
for(i=0; s[i]==' ' || s[i]== 'n' || s[i]=='t'; i++)
|
|
; /* skip white space */
|
|
sign = 1;
|
|
if (s[i] == '+' || s[i] == '-')
|
|
sign = (s[i++]=='+') ? 1 : -1;
|
|
for (n=0; s[i] >= '0' && s[i] <= '9'; i++)
|
|
n= 10 * n + s[i] - '0';
|
|
return(sign * n);
|
|
}
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
char*
|
|
strstr(char* src,char* sub)
|
|
{
|
|
/* this is a poor implementation until the ANSI version catches on */
|
|
char *ptr;
|
|
for(ptr = src; (long)ptr <= (long)src + strlen(src) - strlen(sub); ptr++){
|
|
if(substrcmp(ptr, sub))
|
|
return(ptr);
|
|
}
|
|
return(NULL);
|
|
}
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
int
|
|
remove(char* filename)
|
|
{
|
|
return(unlink(filename));
|
|
}
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
#endif /* ndef ANSI_LIKE */
|
|
|
|
|
|
|
|
|