⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xlibos.h

📁 ftam等标准协议服务器和客户端的源代码。
💻 H
字号:
/* * Xlib include file for 4.2BSD based systems. */#include <netinet/in.h>#include <sys/ioctl.h>#include <netdb.h>#include <sys/uio.h>	/* needed for XlibInt.c */#include <sys/param.h> /* needed for XConnDis.c */#define MSKCNT ((NOFILE + 31) / 32)	/* size of bit array */#if (MSKCNT==1)#define BITMASK(i) (1 << (i))#define MASKIDX(i) 0#endif#if (MSKCNT>1)#define BITMASK(i) (1 << ((i) & 31))#define MASKIDX(i) ((i) >> 5)#endif#define MASKWORD(buf, i) buf[MASKIDX(i)]#define BITSET(buf, i) MASKWORD(buf, i) |= BITMASK(i)#define BITCLEAR(buf, i) MASKWORD(buf, i) &= ~BITMASK(i)#define GETBIT(buf, i) (MASKWORD(buf, i) & BITMASK(i))#if (MSKCNT==1)#define COPYBITS(src, dst) dst[0] = src[0]#define CLEARBITS(buf) buf[0] = 0#define MASKANDSETBITS(dst, b1, b2) dst[0] = (b1[0] & b2[0])#define ORBITS(dst, b1, b2) dst[0] = (b1[0] | b2[0])#define UNSETBITS(dst, b1) (dst[0] &= ~b1[0])#define ANYSET(src) (src[0])#endif#if (MSKCNT==2)#define COPYBITS(src, dst) { dst[0] = src[0]; dst[1] = src[1]; }#define CLEARBITS(buf) { buf[0] = 0; buf[1] = 0; }#define MASKANDSETBITS(dst, b1, b2)  {\		      dst[0] = (b1[0] & b2[0]);\		      dst[1] = (b1[1] & b2[1]); }#define ORBITS(dst, b1, b2)  {\		      dst[0] = (b1[0] | b2[0]);\		      dst[1] = (b1[1] | b2[1]); }#define UNSETBITS(dst, b1) {\                      dst[0] &= ~b1[0]; \                      dst[1] &= ~b1[1]; }#define ANYSET(src) (src[0] || src[1])#endif#if (MSKCNT==3)#define COPYBITS(src, dst) { dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2]; }#define CLEARBITS(buf) { buf[0] = 0; buf[1] = 0; buf[2] = 0; }#define MASKANDSETBITS(dst, b1, b2)  {\		      dst[0] = (b1[0] & b2[0]);\		      dst[1] = (b1[1] & b2[1]);\		      dst[2] = (b1[2] & b2[2]); }#define ORBITS(dst, b1, b2)  {\		      dst[0] = (b1[0] | b2[0]);\		      dst[1] = (b1[1] | b2[1]);\		      dst[2] = (b1[2] | b2[2]); }#define UNSETBITS(dst, b1) {\                      dst[0] &= ~b1[0]; \                      dst[1] &= ~b1[1]; \                      dst[2] &= ~b1[2]; }#define ANYSET(src) (src[0] || src[1] || src[2])#endif#if (MSKCNT>3)#define COPYBITS(src, dst) bcopy((caddr_t) src, (caddr_t) dst,\				 MSKCNT*sizeof(long))#define CLEARBITS(buf) bzero((caddr_t) buf, MSKCNT*sizeof(long))#define MASKANDSETBITS(dst, b1, b2)  { int cri;\		      for (cri=0; i<MSKCNT; cri++) \		          dst[cri] = (b1[cri] & b2[cri]); }#define ORBITS(dst, b1, b2)  { int cri;\		      for (cri=0; i<MSKCNT; cri++) \		          dst[cri] = (b1[cri] | b2[cri]); }#define UNSETBITS(dst, b1)  { int cri;\		      for (cri=0; i<MSKCNT; cri++) \		          dst[cri] &= ~b1[cri]; }#define ANYSET(src) (src[0] || src[1] || src[2])#endifchar *malloc(), *realloc(), *calloc(), *alloca();char *strncpy(), *strncat();void exit();void bcopy();void perror();void free();#define LockDisplay(dis)#define LockMutex(mutex)#define UnlockMutex(mutex)#define UnlockDisplay(dis)#define Xfree(ptr) free((ptr))#define Xalloca(size) alloca((size))#if (defined ibm032)&&(defined __HIGHC__)pragma on(alloca);#endif/* * Note that some machines do not return a valid pointer for malloc(0), in * which case we provide an alternate under the control of the * define MALLOC_0_RETURNS_NULL.  This is necessary because some * Xlib code expects malloc(0) to return a valid pointer to storage. */#ifdef MALLOC_0_RETURNS_NULL# define Xmalloc(size) malloc(((size) > 0 ? (size) : 1))# define Xrealloc(ptr, size) realloc((ptr), ((size) > 0 ? (size) : 1))# define Xcalloc(nelem, elsize) calloc(((nelem) > 0 ? (nelem) : 1), (elsize))#else# define Xmalloc(size) malloc((size))# define Xrealloc(ptr, size) realloc((ptr), (size))# define Xcalloc(nelem, elsize) calloc((nelem), (elsize))#endif#ifdef ISOCONN/* * Should pick up next from server header file... */#define MAXSOCKS 64#define UNIX_IO 0#define ISODE_IO 1#define BytesReadable(fd, ptr) \ioctlfn[fd2family[fd]](fd, ptr)#define ReadFromServer(fd, data, size) \readfn[fd2family[fd]]((fd), (data), (size))#define WriteToServer(fd, bufind, size) \writefn[fd2family[fd]]((fd), (bufind), (size))#define ReadvFromServer(fd, iov, iovcnt) \readvfn[fd2family[fd]]((fd), (iov), (iovcnt))#define WritevToServer(fd, iov, iovcnt) \writevfn[fd2family[fd]]((fd), (iov), (iovcnt))#define CloseToServer(fd) \closefn[fd2family[fd]](fd)extern int isodexbug;#else /* ISOCONN */#define BytesReadable(fd, ptr) ioctl ((fd), FIONREAD, (ptr))#if !defined (mips) || !defined (SYSTYPE_SYSV)#define ReadFromServer(dpy, data, size) read((dpy), (data), (size))#define WriteToServer(dpy, bufind, size) write((dpy), (bufind), (size))#endif /* !mips || !SYSTYPE_SYSV */#define ReadvFromServer(dpy, iov, iovcnt) readv((dpy), (iov), (iovcnt))#define WritevToServer(dpy, iov, iovcnt) writev((dpy), (iov), (iovcnt))#endif /* ISOCONN *//* *	ReadvFromServer and WritevToSever use struct iovec, normally found *	in Berkeley systems in <sys/uio.h>.  See the readv(2) and writev(2) *	manual pages for details. * *	struct iovec { *		caddr_t iov_base; *		int iov_len; *	}; */extern char *index();#define SearchString(string, char) index((string), (char))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -