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

📄 tclwinport.h

📁 linux系统下的音频通信
💻 H
字号:
/* * tclWinPort.h -- * *	This header file handles porting issues that occur because of *	differences between Windows and Unix. It should be the only *	file that contains #ifdefs to handle different flavors of OS. * * Copyright (c) 1994-1996 Sun Microsystems, Inc. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * SCCS: @(#) tclWinPort.h 1.53 97/07/30 14:12:17 */#ifndef _TCLWINPORT#define _TCLWINPORT#include <malloc.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <process.h>#include <signal.h>#include <winsock.h>#include <sys/stat.h>#include <sys/timeb.h>#include <time.h>#include <io.h>#include <fcntl.h>#include <float.h>#define WIN32_LEAN_AND_MEAN#include <windows.h>#undef WIN32_LEAN_AND_MEAN#ifdef BUILD_tcl# undef TCL_STORAGE_CLASS# define TCL_STORAGE_CLASS DLLEXPORT#endif/* * Define EINPROGRESS in terms of WSAEINPROGRESS. */#ifndef	EINPROGRESS#define EINPROGRESS WSAEINPROGRESS#endif/* * If ENOTSUP is not defined, define it to a value that will never occur. */#ifndef ENOTSUP#define	ENOTSUP		-1030507#endif/* * The following defines wrap the system memory allocation routines for * use by tclAlloc.c. */#define TclpSysAlloc(size, isBin)	((void*)GlobalAlloc(GMEM_FIXED, \					    (DWORD)size))#define TclpSysFree(ptr)		(GlobalFree((HGLOBAL)ptr))#define TclpSysRealloc(ptr, size)	((void*)GlobalReAlloc((HGLOBAL)ptr, \					    (DWORD)size, 0))/* * The default platform eol translation on Windows is TCL_TRANSLATE_CRLF: */#define	TCL_PLATFORM_TRANSLATION	TCL_TRANSLATE_CRLF/* * Declare dynamic loading extension macro. */#define TCL_SHLIB_EXT ".dll"/* * Supply definitions for macros to query wait status, if not already * defined in header files above. */#if TCL_UNION_WAIT#   define WAIT_STATUS_TYPE union wait#else#   define WAIT_STATUS_TYPE int#endif#ifndef WIFEXITED#   define WIFEXITED(stat)  (((*((int *) &(stat))) & 0xff) == 0)#endif#ifndef WEXITSTATUS#   define WEXITSTATUS(stat) (((*((int *) &(stat))) >> 8) & 0xff)#endif#ifndef WIFSIGNALED#   define WIFSIGNALED(stat) (((*((int *) &(stat)))) && ((*((int *) &(stat))) == ((*((int *) &(stat))) & 0x00ff)))#endif#ifndef WTERMSIG#   define WTERMSIG(stat)    ((*((int *) &(stat))) & 0x7f)#endif#ifndef WIFSTOPPED#   define WIFSTOPPED(stat)  (((*((int *) &(stat))) & 0xff) == 0177)#endif#ifndef WSTOPSIG#   define WSTOPSIG(stat)    (((*((int *) &(stat))) >> 8) & 0xff)#endif/* * Define constants for waitpid() system call if they aren't defined * by a system header file. */#ifndef WNOHANG#   define WNOHANG 1#endif#ifndef WUNTRACED#   define WUNTRACED 2#endif/* * Define MAXPATHLEN in terms of MAXPATH if available */#ifndef MAXPATH#define MAXPATH MAX_PATH#endif /* MAXPATH */#ifndef MAXPATHLEN#define MAXPATHLEN MAXPATH#endif /* MAXPATHLEN */#ifndef F_OK#    define F_OK 00#endif#ifndef X_OK#    define X_OK 01#endif#ifndef W_OK#    define W_OK 02#endif#ifndef R_OK#    define R_OK 04#endif/* * Define macros to query file type bits, if they're not already * defined. */#ifndef S_ISREG#   ifdef S_IFREG#       define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)#   else#       define S_ISREG(m) 0#   endif# endif#ifndef S_ISDIR#   ifdef S_IFDIR#       define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)#   else#       define S_ISDIR(m) 0#   endif# endif#ifndef S_ISCHR#   ifdef S_IFCHR#       define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)#   else#       define S_ISCHR(m) 0#   endif# endif#ifndef S_ISBLK#   ifdef S_IFBLK#       define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)#   else#       define S_ISBLK(m) 0#   endif# endif#ifndef S_ISFIFO#   ifdef S_IFIFO#       define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)#   else#       define S_ISFIFO(m) 0#   endif# endif/* * Define pid_t and uid_t if they're not already defined. */#if ! TCL_PID_T#   define pid_t int#endif#if ! TCL_UID_T#   define uid_t int#endif/* * Provide a stub definition for TclGetUserHome(). */#define TclGetUserHome(name,bufferPtr) (NULL)/* * Visual C++ has some odd names for common functions, so we need to * define a few macros to handle them.  Also, it defines EDEADLOCK and * EDEADLK as the same value, which confuses Tcl_ErrnoId(). */#ifdef _MSC_VER#    define environ _environ#    define hypot _hypot#    define exception _exception#    undef EDEADLOCK#endif /* _MSC_VER *//* * The following defines redefine the Windows Socket errors as * BSD errors so Tcl_PosixError can do the right thing. */#ifndef EWOULDBLOCK#define EWOULDBLOCK             EAGAIN#endif#ifndef EALREADY#define EALREADY	149	/* operation already in progress */#endif#ifndef ENOTSOCK#define ENOTSOCK	95	/* Socket operation on non-socket */#endif#ifndef EDESTADDRREQ#define EDESTADDRREQ	96	/* Destination address required */#endif#ifndef EMSGSIZE#define EMSGSIZE	97	/* Message too long */#endif#ifndef EPROTOTYPE#define EPROTOTYPE	98	/* Protocol wrong type for socket */#endif#ifndef ENOPROTOOPT#define ENOPROTOOPT	99	/* Protocol not available */#endif#ifndef EPROTONOSUPPORT#define EPROTONOSUPPORT	120	/* Protocol not supported */#endif#ifndef ESOCKTNOSUPPORT#define ESOCKTNOSUPPORT	121	/* Socket type not supported */#endif#ifndef EOPNOTSUPP#define EOPNOTSUPP	122	/* Operation not supported on socket */#endif#ifndef EPFNOSUPPORT#define EPFNOSUPPORT	123	/* Protocol family not supported */#endif#ifndef EAFNOSUPPORT#define EAFNOSUPPORT	124	/* Address family not supported */#endif#ifndef EADDRINUSE#define EADDRINUSE	125	/* Address already in use */#endif#ifndef EADDRNOTAVAIL#define EADDRNOTAVAIL	126	/* Can't assign requested address */#endif#ifndef ENETDOWN#define ENETDOWN	127	/* Network is down */#endif#ifndef ENETUNREACH#define ENETUNREACH	128	/* Network is unreachable */#endif#ifndef ENETRESET#define ENETRESET	129	/* Network dropped connection on reset */#endif#ifndef ECONNABORTED#define ECONNABORTED	130	/* Software caused connection abort */#endif#ifndef ECONNRESET#define ECONNRESET	131	/* Connection reset by peer */#endif#ifndef ENOBUFS#define ENOBUFS		132	/* No buffer space available */#endif#ifndef EISCONN#define EISCONN		133	/* Socket is already connected */#endif#ifndef ENOTCONN#define ENOTCONN	134	/* Socket is not connected */#endif#ifndef ESHUTDOWN#define ESHUTDOWN	143	/* Can't send after socket shutdown */#endif#ifndef ETOOMANYREFS#define ETOOMANYREFS	144	/* Too many references: can't splice */#endif#ifndef ETIMEDOUT#define ETIMEDOUT	145	/* Connection timed out */#endif#ifndef ECONNREFUSED#define ECONNREFUSED	146	/* Connection refused */#endif#ifndef ELOOP#define ELOOP		90	/* Symbolic link loop */#endif#ifndef EHOSTDOWN#define EHOSTDOWN	147	/* Host is down */#endif#ifndef EHOSTUNREACH#define EHOSTUNREACH	148	/* No route to host */#endif#ifndef ENOTEMPTY#define ENOTEMPTY 	93	/* directory not empty */#endif#ifndef EUSERS#define EUSERS		94	/* Too many users (for UFS) */#endif#ifndef EDQUOT#define EDQUOT		49	/* Disc quota exceeded */#endif#ifndef ESTALE#define ESTALE		151	/* Stale NFS file handle */#endif#ifndef EREMOTE#define EREMOTE		66	/* The object is remote */#endif/* * The following define ensures that we use the native putenv * implementation to modify the environment array.  This keeps * the C level environment in synch with the system level environment. */#define USE_PUTENV	1    /* * The following defines map from standard socket names to our internal * wrappers that redirect through the winSock function table (see the * file tclWinSock.c). */#define getservbyname	TclWinGetServByName#define getsockopt	TclWinGetSockOpt#define ntohs		TclWinNToHS#define setsockopt	TclWinSetSockOpt/* * The following implements the Windows method for exiting the process. */#define TclPlatformExit(status) exit(status)/* * The following declarations belong in tclInt.h, but depend on platform * specific types (e.g. struct tm). */EXTERN struct tm *	TclpGetDate _ANSI_ARGS_((const time_t *tp,			    int useGMT));EXTERN unsigned long	TclpGetPid _ANSI_ARGS_((Tcl_Pid pid));EXTERN size_t		TclStrftime _ANSI_ARGS_((char *s, size_t maxsize,			    const char *format, const struct tm *t));/* * The following prototypes and defines replace the Windows versions * of POSIX function that various compilier vendors didn't implement  * well or consistantly. */#define lstat		TclStatEXTERN int		TclpStat _ANSI_ARGS_((CONST char *path, 			    struct stat *buf));EXTERN int		TclpAccess _ANSI_ARGS_((CONST char *path, 			    int mode));#define TclpReleaseFile(file)	ckfree((char *) file)/* * Declarations for Windows specific functions. */EXTERN void		TclWinConvertError _ANSI_ARGS_((DWORD errCode));EXTERN void		TclWinConvertWSAError _ANSI_ARGS_((DWORD errCode));EXTERN struct servent * PASCAL FAR			TclWinGetServByName _ANSI_ARGS_((const char FAR *nm,		            const char FAR *proto));EXTERN int PASCAL FAR	TclWinGetSockOpt _ANSI_ARGS_((SOCKET s, int level,		            int optname, char FAR * optval, int FAR *optlen));EXTERN HINSTANCE	TclWinGetTclInstance _ANSI_ARGS_((void));EXTERN HINSTANCE	TclWinLoadLibrary _ANSI_ARGS_((char *name));EXTERN u_short PASCAL FAR			TclWinNToHS _ANSI_ARGS_((u_short ns));EXTERN int PASCAL FAR	TclWinSetSockOpt _ANSI_ARGS_((SOCKET s, int level,		            int optname, const char FAR * optval, int optlen));# undef TCL_STORAGE_CLASS# define TCL_STORAGE_CLASS DLLIMPORT#endif /* _TCLWINPORT */

⌨️ 快捷键说明

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