/* 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 /* For Solaris */ #include /* SOLARIS: for rand and srand */ #include /* 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 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 */