SysDep.h
上传用户:woshihumen
上传日期:2013-07-18
资源大小:484k
文件大小:7k
源码类别:

Email服务器

开发平台:

Visual C++

  1. /*
  2.  *  XMail by Davide Libenzi ( Intranet and Internet mail server )
  3.  *  Copyright (C) 1999,..,2004  Davide Libenzi
  4.  *
  5.  *  This program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2 of the License, or
  8.  *  (at your option) any later version.
  9.  *
  10.  *  This program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  *  GNU General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with this program; if not, write to the Free Software
  17.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  *
  19.  *  Davide Libenzi <davidel@xmailserver.org>
  20.  *
  21.  */
  22. #ifndef _SYSDEP_H
  23. #define _SYSDEP_H
  24. #define SYS_SHUTDOWN_SOFT           0
  25. #define LOG_LEV_DEBUG               0
  26. #define LOG_LEV_MESSAGE             1
  27. #define LOG_LEV_WARNING             2
  28. #define LOG_LEV_ERROR               3
  29. #define SYS_PRIORITY_LOWER          -1
  30. #define SYS_PRIORITY_NORMAL         0
  31. #define SYS_PRIORITY_HIGHER         +1
  32. #define SYS_IS_VALID_FILENAME(f)    ((strcmp(f, ".") != 0) && (strcmp(f, "..") != 0))
  33. int SysInitLibrary(void);
  34. void SysCleanupLibrary(void);
  35. int SysShutdownLibrary(int iMode = SYS_SHUTDOWN_SOFT);
  36. int SysSetupSocketBuffers(int *piSndBufSize, int *piRcvBufSize);
  37. SYS_SOCKET SysCreateSocket(int iAddressFamily, int iType, int iProtocol);
  38. void SysCloseSocket(SYS_SOCKET SockFD);
  39. int SysBindSocket(SYS_SOCKET SockFD, const struct sockaddr *SockName, int iNameLen);
  40. void SysListenSocket(SYS_SOCKET SockFD, int iConnections);
  41. int SysRecvData(SYS_SOCKET SockFD, char *pszBuffer, int iBufferSize, int iTimeout);
  42. int SysRecv(SYS_SOCKET SockFD, char *pszBuffer, int iBufferSize, int iTimeout);
  43. int SysRecvDataFrom(SYS_SOCKET SockFD, struct sockaddr *pFrom, int iFromlen,
  44.     char *pszBuffer, int iBufferSize, int iTimeout);
  45. int SysSendData(SYS_SOCKET SockFD, char const *pszBuffer, int iBufferSize, int iTimeout);
  46. int SysSend(SYS_SOCKET SockFD, char const *pszBuffer, int iBufferSize, int iTimeout);
  47. int SysSendDataTo(SYS_SOCKET SockFD, const struct sockaddr *pTo,
  48.   int iToLen, char const *pszBuffer, int iBufferSize, int iTimeout);
  49. int SysConnect(SYS_SOCKET SockFD, const SYS_INET_ADDR * pSockName, int iNameLen, int iTimeout);
  50. SYS_SOCKET SysAccept(SYS_SOCKET SockFD, SYS_INET_ADDR * pSockName, int *iNameLen, int iTimeout);
  51. int SysSelect(int iMaxFD, SYS_fd_set * pReadFDs, SYS_fd_set * pWriteFDs, SYS_fd_set * pExcptFDs,
  52.       int iTimeout);
  53. int SysSendFile(SYS_SOCKET SockFD, char const *pszFileName, unsigned long ulBaseOffset,
  54. unsigned long ulEndOffset, int iTimeout);
  55. int SysSetupAddress(SYS_INET_ADDR & AddrInfo, int iFamily,
  56.     NET_ADDRESS const &NetAddr, int iPortNo);
  57. int SysGetAddrAddress(SYS_INET_ADDR const &AddrInfo, NET_ADDRESS & NetAddr);
  58. int SysGetAddrPort(SYS_INET_ADDR const &AddrInfo);
  59. int SysSetAddrAddress(SYS_INET_ADDR & AddrInfo, NET_ADDRESS const &NetAddr);
  60. int SysSetAddrPort(SYS_INET_ADDR & AddrInfo, int iPortNo);
  61. int SysGetHostByName(char const *pszName, NET_ADDRESS & NetAddr);
  62. int SysGetHostByAddr(SYS_INET_ADDR const &AddrInfo, char *pszFQDN);
  63. int SysGetPeerInfo(SYS_SOCKET SockFD, SYS_INET_ADDR & AddrInfo);
  64. int SysGetSockInfo(SYS_SOCKET SockFD, SYS_INET_ADDR & AddrInfo);
  65. char *SysInetNToA(SYS_INET_ADDR const &AddrInfo, char *pszIP);
  66. int SysInetAddr(char const *pszDotName, NET_ADDRESS & NetAddr);
  67. int SysSameAddress(NET_ADDRESS const &NetAddr1, NET_ADDRESS const &NetAddr2);
  68. SYS_SEMAPHORE SysCreateSemaphore(int iInitCount, int iMaxCount);
  69. int SysCloseSemaphore(SYS_SEMAPHORE hSemaphore);
  70. int SysWaitSemaphore(SYS_SEMAPHORE hSemaphore, int iTimeout);
  71. int SysReleaseSemaphore(SYS_SEMAPHORE hSemaphore, int iCount);
  72. int SysTryWaitSemaphore(SYS_SEMAPHORE hSemaphore);
  73. SYS_MUTEX SysCreateMutex(void);
  74. int SysCloseMutex(SYS_MUTEX hMutex);
  75. int SysLockMutex(SYS_MUTEX hMutex, int iTimeout);
  76. int SysUnlockMutex(SYS_MUTEX hMutex);
  77. int SysTryLockMutex(SYS_MUTEX hMutex);
  78. SYS_EVENT SysCreateEvent(int iManualReset);
  79. int SysCloseEvent(SYS_EVENT hEvent);
  80. int SysWaitEvent(SYS_EVENT hEvent, int iTimeout);
  81. int SysSetEvent(SYS_EVENT hEvent);
  82. int SysResetEvent(SYS_EVENT hEvent);
  83. int SysTryWaitEvent(SYS_EVENT hEvent);
  84. SYS_THREAD SysCreateThread(unsigned int (*pThreadProc) (void *), void *pThreadData);
  85. SYS_THREAD SysCreateServiceThread(unsigned int (*pThreadProc) (void *), SYS_SOCKET SockFD);
  86. void SysCloseThread(SYS_THREAD ThreadID, int iForce);
  87. int SysSetThreadPriority(SYS_THREAD ThreadID, int iPriority);
  88. int SysWaitThread(SYS_THREAD ThreadID, int iTimeout);
  89. unsigned long SysGetCurrentThreadId(void);
  90. int SysExec(char const *pszCommand, char const *const *pszArgs, int iWaitTimeout = 0,
  91.     int iPriority = SYS_PRIORITY_NORMAL, int *piExitStatus = NULL);
  92. void SysSetBreakHandler(void (*BreakHandler) (void));
  93. int SysCreateTlsKey(SYS_TLSKEY & TlsKey, void (*pFreeProc) (void *) = NULL);
  94. int SysDeleteTlsKey(SYS_TLSKEY & TlsKey);
  95. int SysSetTlsKeyData(SYS_TLSKEY & TlsKey, void *pData);
  96. void *SysGetTlsKeyData(SYS_TLSKEY & TlsKey);
  97. void SysThreadOnce(SYS_THREAD_ONCE * pThrOnce, void (*pOnceProc) (void));
  98. void *SysAlloc(unsigned int uSize);
  99. void SysFree(void *pData);
  100. void *SysRealloc(void *pData, unsigned int uSize);
  101. int SysLockFile(const char *pszFileName, char const *pszLockExt = ".lock");
  102. int SysUnlockFile(const char *pszFileName, char const *pszLockExt = ".lock");
  103. SYS_HANDLE SysOpenModule(char const *pszFilePath);
  104. int SysCloseModule(SYS_HANDLE hModule);
  105. void *SysGetSymbol(SYS_HANDLE hModule, char const *pszSymbol);
  106. int SysEventLogV(int iLogLevel, char const *pszFormat, va_list Args);
  107. int SysEventLog(int iLogLevel, char const *pszFormat, ...);
  108. int SysLogMessage(int iLogLevel, char const *pszFormat, ...);
  109. void SysSleep(int iTimeout);
  110. void SysMsSleep(int iMsTimeout);
  111. SYS_INT64 SysMsTime(void);
  112. int SysExistFile(const char *pszFilePath);
  113. int SysExistDir(const char *pszDirPath);
  114. SYS_HANDLE SysFirstFile(const char *pszPath, char *pszFileName);
  115. int SysIsDirectory(SYS_HANDLE hFind);
  116. unsigned long SysGetSize(SYS_HANDLE hFind);
  117. int SysNextFile(SYS_HANDLE hFind, char *pszFileName);
  118. void SysFindClose(SYS_HANDLE hFind);
  119. int SysGetFileInfo(char const *pszFileName, SYS_FILE_INFO & FI);
  120. int SysSetFileModTime(char const *pszFileName, time_t tMod);
  121. char *SysStrDup(const char *pszString);
  122. char *SysGetEnv(const char *pszVarName);
  123. char *SysGetTmpFile(char *pszFileName);
  124. int SysRemove(const char *pszFileName);
  125. int SysMakeDir(const char *pszPath);
  126. int SysRemoveDir(const char *pszPath);
  127. int SysMoveFile(char const *pszOldName, char const *pszNewName);
  128. int SysVSNPrintf(char *pszBuffer, int iSize, char const *pszFormat, va_list Args);
  129. int SysFileSync(FILE * pFile);
  130. char *SysStrTok(char *pszData, char const *pszDelim, char **ppszSavePtr);
  131. char *SysCTime(time_t * pTimer, char *pszBuffer, int iBufferSize);
  132. struct tm *SysLocalTime(time_t * pTimer, struct tm *pTStruct);
  133. struct tm *SysGMTime(time_t * pTimer, struct tm *pTStruct);
  134. char *SysAscTime(struct tm *pTStruct, char *pszBuffer, int iBufferSize);
  135. long SysGetTimeZone(void);
  136. long SysGetDayLight(void);
  137. int SysGetDiskSpace(char const *pszPath, SYS_INT64 * pTotal, SYS_INT64 * pFree);
  138. int SysMemoryInfo(SYS_INT64 * pRamTotal, SYS_INT64 * pRamFree,
  139.   SYS_INT64 * pVirtTotal, SYS_INT64 * pVirtFree);
  140. #endif