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

📄 xos_r.h

📁 远程桌面连接工具
💻 H
📖 第 1 页 / 共 3 页
字号:
/* UnixWare 2.0, or other systems with thread support but no _r API. *//* WARNING:  The h_addr_list and s_aliases values are *not* copied! */typedef struct {  struct hostent hent;  char           h_name[MAXHOSTNAMELEN];  struct hostent *hptr;} _Xgethostbynameparams;typedef struct {  struct servent sent;  char           s_name[255];  char		 s_proto[255];  struct servent *sptr;} _Xgetservbynameparams;# define _Xg_copyHostent(hp) \   (memcpy(&(hp).hent, (hp).hptr, sizeof(struct hostent)), \    strcpy((hp).h_name, (hp).hptr->h_name), \    ((hp).hent.h_name = (hp).h_name), \    ((hp).hptr = &(hp).hent), \     0 )# define _Xg_copyServent(sp) \   (memcpy(&(sp).sent, (sp).sptr, sizeof(struct servent)), \    strcpy((sp).s_name, (sp).sptr->s_name), \    ((sp).sent.s_name = (sp).s_name), \    strcpy((sp).s_proto, (sp).sptr->s_proto), \    ((sp).sent.s_proto = (sp).s_proto), \    ((sp).sptr = &(sp).sent), \    0 )# define _XGethostbyname(h,hp) \   ((_Xos_processLock), \    (((hp).hptr = gethostbyname((h))) ? _Xg_copyHostent(hp) : 0), \    (_Xos_processUnlock), \    (hp).hptr )# define _XGethostbyaddr(a,al,t,hp) \   ((_Xos_processLock), \    (((hp).hptr = gethostbyaddr((a),(al),(t))) ? _Xg_copyHostent(hp) : 0), \    (_Xos_processUnlock), \    (hp).hptr )# define _XGetservbyname(s,p,sp) \   ((_Xos_processLock), \    (((sp).sptr = getservbyname((s),(p))) ? _Xg_copyServent(sp) : 0), \    (_Xos_processUnlock), \    (sp).sptr )#elif defined(XUSE_NETDB_R_API)/* * POSIX does not specify _r equivalents for <netdb.h> API, but some * vendors provide them anyway.  Use them only when explicitly asked. */# ifdef _POSIX_REENTRANT_FUNCTIONS#  ifndef _POSIX_THREAD_SAFE_FUNCTIONS#   if defined(AIXV3) || defined(AIXV4) || defined(__osf__)#    define X_POSIX_THREAD_SAFE_FUNCTIONS 1#   endif#  endif# endif# ifdef _POSIX_THREAD_SAFE_FUNCTIONS#  define X_POSIX_THREAD_SAFE_FUNCTIONS 1# endif# ifndef X_POSIX_THREAD_SAFE_FUNCTIONStypedef struct {    struct hostent      hent;    char                hbuf[LINE_MAX];    int                 herr;} _Xgethostbynameparams;typedef struct {    struct servent      sent;    char                sbuf[LINE_MAX];} _Xgetservbynameparams;#  define _XGethostbyname(h,hp) \  gethostbyname_r((h),&(hp).hent,(hp).hbuf,sizeof((hp).hbuf),&(hp).herr)#  define _XGethostbyaddr(a,al,t,hp) \  gethostbyaddr_r((a),(al),(t),&(hp).hent,(hp).hbuf,sizeof((hp).hbuf),&(hp).herr)#  define _XGetservbyname(s,p,sp) \  getservbyname_r((s),(p),&(sp).sent,(sp).sbuf,sizeof((sp).sbuf))# elsetypedef struct {  struct hostent      hent;  struct hostent_data hdata;} _Xgethostbynameparams;typedef struct {  struct servent      sent;  struct servent_data sdata;} _Xgetservbynameparams;#  define _XGethostbyname(h,hp) \  (bzero((char*)&(hp).hdata,sizeof((hp).hdata)),	\   ((gethostbyname_r((h),&(hp).hent,&(hp).hdata) == -1) ? NULL : &(hp).hent))#  define _XGethostbyaddr(a,al,t,hp) \  (bzero((char*)&(hp).hdata,sizeof((hp).hdata)),	\   ((gethostbyaddr_r((a),(al),(t),&(hp).hent,&(hp).hdata) == -1) ? NULL : &(hp).hent))#  define _XGetservbyname(s,p,sp) \  (bzero((char*)&(sp).sdata,sizeof((sp).sdata)),	\   ((getservbyname_r((s),(p),&(sp).sent,&(sp).sdata) == -1) ? NULL : &(sp).sent) )# endif# ifdef X_POSIX_THREAD_SAFE_FUNCTIONS#  undef X_POSIX_THREAD_SAFE_FUNCTIONS# endif#else/* The regular API is assumed to be MT-safe under POSIX. */typedef int _Xgethostbynameparams; /* dummy */typedef int _Xgetservbynameparams; /* dummy */# define _XGethostbyname(h,hp)		gethostbyname((h))# define _XGethostbyaddr(a,al,t,hp)	gethostbyaddr((a),(al),(t))# define _XGetservbyname(s,p,sp)	getservbyname((s),(p))#endif /* X_INCLUDE_NETDB_H */#if defined(X_INCLUDE_NETDB_H) && !defined(_XOS_INCLUDED_NETDB_H)# define _XOS_INCLUDED_NETDB_H#endif/***** <dirent.h> wrappers *****//* * Effective prototypes for <dirent.h> wrappers: * * #define X_INCLUDE_DIRENT_H * #define XOS_USE_..._LOCKING * #include <X11/Xos_r.h> *  * typedef ... _Xreaddirparams; * * struct dirent *_XReaddir(DIR *dir_pointer, _Xreaddirparams); */#if defined(X_INCLUDE_DIRENT_H) && !defined(_XOS_INCLUDED_DIRENT_H)# include <sys/types.h># if !defined(X_NOT_POSIX) || defined(SYSV) || defined(USG)#  include <dirent.h># else#  include <sys/dir.h>#  ifndef dirent#   define dirent direct#  endif# endif# if defined(XUSE_MTSAFE_API) || defined(XUSE_MTSAFE_DIRENTAPI)#  define XOS_USE_MTSAFE_DIRENTAPI 1# endif#endif#if !defined(X_INCLUDE_DIRENT_H) || defined(_XOS_INCLUDED_DIRENT_H)/* Do nothing. */#elif !defined(XTHREADS) && !defined(X_FORCE_USE_MTSAFE_API)/* Use regular, unsafe API. */typedef int _Xreaddirparams;	/* dummy */# define _XReaddir(d,p)	readdir(d)#elif !defined(XOS_USE_MTSAFE_DIRENTAPI) || defined(XNO_MTSAFE_DIRENTAPI)/* Systems with thread support but no _r API. */typedef struct {  struct dirent *result;  struct dirent dir_entry;# ifdef _POSIX_PATH_MAX  char buf[_POSIX_PATH_MAX];# elif defined(NAME_MAX)  char buf[NAME_MAX];# else  char buf[255];# endif} _Xreaddirparams;# define _XReaddir(d,p)	\ ( (_Xos_processLock),						 \   (((p).result = readdir((d))) ?				 \    (memcpy(&((p).dir_entry), (p).result, (p).result->d_reclen), \     ((p).result = &(p).dir_entry), 0) :			 \    0),								 \   (_Xos_processUnlock),					 \   (p).result )#elsetypedef struct {  struct dirent *result;  struct dirent dir_entry;# ifdef _POSIX_PATH_MAX  char buf[_POSIX_PATH_MAX];# elif defined(NAME_MAX)  char buf[NAME_MAX];# else  char buf[255];# endif} _Xreaddirparams;# if defined(AIXV3) || defined(AIXV4) || defined(_POSIX_THREAD_SAFE_FUNCTIONS)/* AIX defines the draft POSIX symbol, but uses the final API. *//* POSIX final API, returns (int)0 on success. */#  if defined(__osf__)/* OSF/1 V4.0 <dirent.h> doesn't declare _Preaddir_r, breaking under C++. */extern int _Preaddir_r(DIR *, struct dirent *, struct dirent **);#  endif#  define _XReaddir(d,p)						\    (readdir_r((d), &((p).dir_entry), &((p).result)) ? NULL : (p).result)# elif defined(_POSIX_REENTRANT_FUNCTIONS) && defined(__osf__)/* * OSF/1 V3.2 readdir_r() will SEGV if the main program is not * explicitly linked with -lc_r.  The library REQUIREDLIBS don't help. * Assume that if threads have been initialized we're linked properly. */#  define _XReaddir(d,p)						\ ( (_Xos_isThreadInitialized) ?						\   (readdir_r((d), &((p).dir_entry)) ? NULL : &((p).dir_entry)) :	\   ((_Xos_processLock),							\    (((p).result = readdir((d))) ?					\     (memcpy(&((p).dir_entry), (p).result, (p).result->d_reclen),	\      ((p).result = &(p).dir_entry), 0) :				\     0),								\    (_Xos_processUnlock),						\    (p).result) )# elif defined(_POSIX_REENTRANT_FUNCTIONS)/* POSIX draft API, returns (int)0 on success. */#  define _XReaddir(d,p)	\    (readdir_r((d),&((p).dir_entry)) ? NULL : &((p).dir_entry))# elif defined(SVR4)/* Pre-POSIX API, returns non-NULL on success. */#  define _XReaddir(d,p)	(readdir_r((d), &(p).dir_entry))# else/* We have no idea what is going on.  Fake it all using process locks. */#  define _XReaddir(d,p)	\    ( (_Xos_processLock),						\      (((p).result = readdir((d))) ?					\       (memcpy(&((p).dir_entry), (p).result, (p).result->d_reclen),	\	((p).result = &(p).dir_entry), 0) :				\       0),								\      (_Xos_processUnlock),						\      (p).result )# endif#endif /* X_INCLUDE_DIRENT_H */#if defined(X_INCLUDE_DIRENT_H) && !defined(_XOS_INCLUDED_DIRENT_H)# define _XOS_INCLUDED_DIRENT_H#endif/***** <unistd.h> wrappers *****//* * Effective prototypes for <unistd.h> wrappers: * * #define X_INCLUDE_UNISTD_H * #define XOS_USE_..._LOCKING * #include <X11/Xos_r.h> *  * typedef ... _Xgetloginparams; * typedef ... _Xttynameparams; * * char *_XGetlogin(_Xgetloginparams); * char *_XTtyname(int, _Xttynameparams); */#if defined(X_INCLUDE_UNISTD_H) && !defined(_XOS_INCLUDED_UNISTD_H)/* <unistd.h> already included by <X11/Xos.h> */# if defined(XUSE_MTSAFE_API) || defined(XUSE_MTSAFE_UNISTDAPI)#  define XOS_USE_MTSAFE_UNISTDAPI 1# endif#endif#if !defined(X_INCLUDE_UNISTD_H) || defined(_XOS_INCLUDED_UNISTD_H)/* Do nothing. */#elif !defined(XTHREADS) && !defined(X_FORCE_USE_MTSAFE_API)/* Use regular, unsafe API. */typedef int _Xgetloginparams;	/* dummy */typedef int _Xttynameparams;	/* dummy */# define _XGetlogin(p)	getlogin()# define _XTtyname(f)	ttyname((f))#elif !defined(XOS_USE_MTSAFE_UNISTDAPI) || defined(XNO_MTSAFE_UNISTDAPI)/* Systems with thread support but no _r API. */typedef struct {  char *result;# if defined(MAXLOGNAME)  char buf[MAXLOGNAME];# elif defined(LOGIN_NAME_MAX)  char buf[LOGIN_NAME_MAX];# else  char buf[64];# endif} _Xgetloginparams;typedef struct {  char *result;# ifdef TTY_NAME_MAX  char buf[TTY_NAME_MAX];# elif defined(_POSIX_TTY_NAME_MAX)  char buf[_POSIX_TTY_NAME_MAX];# elif defined(_POSIX_PATH_MAX)  char buf[_POSIX_PATH_MAX];# else  char buf[256];# endif} _Xttynameparams;# define _XGetlogin(p) \ ( (_Xos_processLock), \   (((p).result = getlogin()) ? \    (strncpy((p).buf, (p).result, sizeof((p).buf)), \     ((p).buf[sizeof((p).buf)-1] = '\0'), \     ((p).result = (p).buf), 0) : 0), \   (_Xos_processUnlock), \   (p).result )#define _XTtyname(f,p) \ ( (_Xos_processLock), \   (((p).result = ttyname(f)) ? \    (strncpy((p).buf, (p).result, sizeof((p).buf)), \     ((p).buf[sizeof((p).buf)-1] = '\0'), \     ((p).result = (p).buf), 0) : 0), \   (_Xos_processUnlock), \   (p).result )#elif defined(_POSIX_THREAD_SAFE_FUNCTIONS) || defined(_POSIX_REENTRANT_FUNCTIONS)/* POSIX API. * * extern int getlogin_r(char *, size_t); * extern int ttyname_r(int, char *, size_t); */typedef struct {# if defined(MAXLOGNAME)  char buf[MAXLOGNAME];# elif defined(LOGIN_NAME_MAX)  char buf[LOGIN_NAME_MAX];# else  char buf[64];# endif} _Xgetloginparams;typedef struct {# ifdef TTY_NAME_MAX  char buf[TTY_NAME_MAX];# elif defined(_POSIX_TTY_NAME_MAX)  char buf[_POSIX_TTY_NAME_MAX];# elif defined(_POSIX_PATH_MAX)  char buf[_POSIX_PATH_MAX];# else  char buf[256];# endif} _Xttynameparams;# define _XGetlogin(p)	(getlogin_r((p).buf, sizeof((p).buf)) ? NULL : (p).buf)# define _XTtyname(f,p)	\	(ttyname_r((f), (p).buf, sizeof((p).buf)) ? NULL : (p).buf)#else/* Pre-POSIX API. * * extern char *getlogin_r(char *, size_t); * extern char *ttyname_r(int, char *, size_t); */typedef struct {# if defined(MAXLOGNAME)  char buf[MAXLOGNAME];# elif defined(LOGIN_NAME_MAX)  char buf[LOGIN_NAME_MAX];# else  char buf[64];# endif} _Xgetloginparams;typedef struct {# ifdef TTY_NAME_MAX  char buf[TTY_NAME_MAX];# elif defined(_POSIX_TTY_NAME_MAX)  char buf[_POSIX_TTY_NAME_MAX];# elif defined(_POSIX_PATH_MAX)  char buf[_POSIX_PATH_MAX];# else  char buf[256];# endif} _Xttynameparams;

⌨️ 快捷键说明

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