#ifndef _XFUNCS_H_
#define _XFUNCS_H_
#include <X11/Xosdefs.h>
#if !(defined(XFree86LOADER) && defined(IN_MODULE))
#ifdef X_USEBFUNCS
void bcopy();
void bzero();
int bcmp();
#else
#if defined(SYSV) && !defined(__SCO__) && !defined(sun) && !defined(__UNIXWARE__)
#include <memory.h>
void bcopy();
#define bzero(b,len) memset(b, 0, len)
#define bcmp(b1,b2,len) memcmp(b1, b2, len)
#else
#include <string.h>
#if defined(__SCO__) || defined(sun) || defined(__UNIXWARE__)
#include <strings.h>
#endif
#define _XFUNCS_H_INCLUDED_STRING_H
#if defined(sun)
#define bcopy(b1,b2,len) memmove(b2, b1, (size_t)(len))
#define bzero(b,len) memset(b, 0, (size_t)(len))
#define bcmp(b1,b2,len) memcmp(b1, b2, (size_t)(len))
#endif
#endif
#endif
#if !defined(X_NOT_STDC_ENV) && (!defined(sun) || defined(SVR4))
#ifndef _XFUNCS_H_INCLUDED_STRING_H
#include <string.h>
#endif
#undef bzero
#define bzero(b,len) memset(b,0,len)
#else
#if defined(SYSV) || defined(luna) || defined(sun) || defined(__sxg__)
#include <memory.h>
#define memmove(dst,src,len) bcopy((char *)(src),(char *)(dst),(int)(len))
#if defined(SYSV) && defined(_XBCOPYFUNC)
#undef memmove
#define memmove(dst,src,len) _XBCOPYFUNC((char *)(src),(char *)(dst),(int)(len))
#define _XNEEDBCOPYFUNC
#endif
#else
#define memmove(dst,src,len) bcopy((char *)(src),(char *)(dst),(int)(len))
#define memcpy(dst,src,len) bcopy((char *)(src),(char *)(dst),(int)(len))
#define memcmp(b1,b2,len) bcmp((char *)(b1),(char *)(b2),(int)(len))
#endif
#endif
#if defined(X_NOT_STDC_ENV) || (defined(sun) && !defined(SVR4))
#define atexit(f) on_exit(f, 0)
#endif
#if defined WIN32 && defined __MINGW32__
#define bcopy(b1,b2,len) memmove(b2, b1, (size_t)(len))
#endif
#endif
#endif