secport.h
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:8k
源码类别:

CA认证

开发平台:

WINDOWS

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is the Netscape security libraries.
  13.  * 
  14.  * The Initial Developer of the Original Code is Netscape
  15.  * Communications Corporation.  Portions created by Netscape are 
  16.  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  17.  * Rights Reserved.
  18.  * 
  19.  * Contributor(s):
  20.  * 
  21.  * Alternatively, the contents of this file may be used under the
  22.  * terms of the GNU General Public License Version 2 or later (the
  23.  * "GPL"), in which case the provisions of the GPL are applicable 
  24.  * instead of those above.  If you wish to allow use of your 
  25.  * version of this file only under the terms of the GPL and not to
  26.  * allow others to use your version of this file under the MPL,
  27.  * indicate your decision by deleting the provisions above and
  28.  * replace them with the notice and other provisions required by
  29.  * the GPL.  If you do not delete the provisions above, a recipient
  30.  * may use your version of this file under either the MPL or the
  31.  * GPL.
  32.  */
  33. /*
  34.  * secport.h - portability interfaces for security libraries
  35.  *
  36.  * This file abstracts out libc functionality that libsec depends on
  37.  * 
  38.  * NOTE - These are not public interfaces
  39.  *
  40.  * $Id: secport.h,v 1.1 2000/03/31 19:41:24 relyea%netscape.com Exp $
  41.  */
  42. #ifndef _SECPORT_H_
  43. #define _SECPORT_H_
  44. /*
  45.  * define XP_MAC, XP_WIN, or XP_UNIX, in case they are not defined
  46.  * by anyone else
  47.  */
  48. #ifdef macintosh
  49. # ifndef XP_MAC
  50. # define XP_MAC 1
  51. # endif
  52. #endif
  53. #ifdef _WINDOWS
  54. # ifndef XP_WIN
  55. # define XP_WIN
  56. # endif
  57. #if defined(_WIN32) || defined(WIN32)
  58. # ifndef XP_WIN32
  59. # define XP_WIN32
  60. # endif
  61. #else
  62. # ifndef XP_WIN16
  63. # define XP_WIN16
  64. # endif
  65. #endif
  66. #endif
  67. #ifdef unix
  68. # ifndef XP_UNIX
  69. # define XP_UNIX
  70. # endif
  71. #endif
  72. #if defined(__WATCOMC__) || defined(__WATCOM_CPLUSPLUS__)
  73. #include "watcomfx.h"
  74. #endif
  75. #ifdef XP_MAC
  76. #include <types.h>
  77. #include <time.h> /* for time_t below */
  78. #else
  79. #include <sys/types.h>
  80. #endif
  81. #ifdef notdef
  82. #ifdef XP_MAC
  83. #include "NSString.h"
  84. #endif
  85. #endif
  86. #include <ctype.h>
  87. #include <string.h>
  88. #include <stddef.h>
  89. #include <stdlib.h>
  90. #include "prtypes.h"
  91. #include "prlog.h" /* for PR_ASSERT */
  92. #include "plarena.h"
  93. #include "plstr.h"
  94. /*
  95.  * HACK for NSS 2.8 to allow Admin to compile without source changes.
  96.  */
  97. #ifndef SEC_BEGIN_PROTOS
  98. #include "seccomon.h"
  99. #endif
  100. SEC_BEGIN_PROTOS
  101. extern void *PORT_Alloc(size_t len);
  102. extern void *PORT_Realloc(void *old, size_t len);
  103. extern void *PORT_AllocBlock(size_t len);
  104. extern void *PORT_ReallocBlock(void *old, size_t len);
  105. extern void PORT_FreeBlock(void *ptr);
  106. extern void *PORT_ZAlloc(size_t len);
  107. extern void PORT_Free(void *ptr);
  108. extern void PORT_ZFree(void *ptr, size_t len);
  109. extern time_t PORT_Time(void);
  110. extern void PORT_SetError(int value);
  111. extern int PORT_GetError(void);
  112. extern PLArenaPool *PORT_NewArena(unsigned long chunksize);
  113. extern void *PORT_ArenaAlloc(PLArenaPool *arena, size_t size);
  114. extern void *PORT_ArenaZAlloc(PLArenaPool *arena, size_t size);
  115. extern void PORT_FreeArena(PLArenaPool *arena, PRBool zero);
  116. extern void *PORT_ArenaGrow(PLArenaPool *arena, void *ptr,
  117.     size_t oldsize, size_t newsize);
  118. extern void *PORT_ArenaMark(PLArenaPool *arena);
  119. extern void PORT_ArenaRelease(PLArenaPool *arena, void *mark);
  120. extern void PORT_ArenaUnmark(PLArenaPool *arena, void *mark);
  121. extern char *PORT_ArenaStrdup(PLArenaPool *arena, char *str);
  122. #ifdef __cplusplus
  123. }
  124. #endif
  125. #define PORT_Assert PR_ASSERT
  126. #define PORT_ZNew(type) (type*)PORT_ZAlloc(sizeof(type))
  127. #define PORT_New(type) (type*)PORT_Alloc(sizeof(type))
  128. #define PORT_ArenaNew(poolp, type)
  129. (type*) PORT_ArenaAlloc(poolp, sizeof(type))
  130. #define PORT_ArenaZNew(poolp, type)
  131. (type*) PORT_ArenaZAlloc(poolp, sizeof(type))
  132. #define PORT_NewArray(type, num)
  133. (type*) PORT_Alloc (sizeof(type)*(num))
  134. #define PORT_ZNewArray(type, num)
  135. (type*) PORT_ZAlloc (sizeof(type)*(num))
  136. #define PORT_ArenaNewArray(poolp, type, num)
  137. (type*) PORT_ArenaAlloc (poolp, sizeof(type)*(num))
  138. #define PORT_ArenaZNewArray(poolp, type, num)
  139. (type*) PORT_ArenaZAlloc (poolp, sizeof(type)*(num))
  140. /* Please, keep these defines sorted alphbetically.  Thanks! */
  141. #ifdef XP_STRING_FUNCS
  142. #define PORT_Atoi  XP_ATOI
  143. #define PORT_Memcmp  XP_MEMCMP
  144. #define PORT_Memcpy  XP_MEMCPY
  145. #define PORT_Memmove  XP_MEMMOVE
  146. #define PORT_Memset  XP_MEMSET
  147. #define PORT_Strcasecmp XP_STRCASECMP
  148. #define PORT_Strcat  XP_STRCAT
  149. #define PORT_Strchr  XP_STRCHR
  150. #define PORT_Strrchr XP_STRRCHR
  151. #define PORT_Strcmp  XP_STRCMP
  152. #define PORT_Strcpy  XP_STRCPY
  153. #define PORT_Strdup  XP_STRDUP
  154. #define PORT_Strlen(s)  XP_STRLEN(s)
  155. #define PORT_Strncasecmp XP_STRNCASECMP
  156. #define PORT_Strncat  strncat
  157. #define PORT_Strncmp  XP_STRNCMP
  158. #define PORT_Strncpy  strncpy
  159. #define PORT_Strstr  XP_STRSTR
  160. #define PORT_Strtok  XP_STRTOK_R
  161. #define PORT_Tolower  XP_TO_LOWER
  162. #else /* XP_STRING_FUNCS */
  163. #define PORT_Atoi  atoi
  164. #define PORT_Memcmp  memcmp
  165. #define PORT_Memcpy  memcpy
  166. #ifndef SUNOS4
  167. #define PORT_Memmove  memmove
  168. #else /*SUNOS4*/
  169. #define PORT_Memmove(s,ct,n)    bcopy ((ct), (s), (n))
  170. #endif/*SUNOS4*/
  171. #define PORT_Memset  memset
  172. #define PORT_Strcasecmp PL_strcasecmp
  173. #define PORT_Strcat  strcat
  174. #define PORT_Strchr  strchr
  175. #define PORT_Strrchr    PL_strrchr
  176. #define PORT_Strcmp  strcmp
  177. #define PORT_Strcpy  strcpy
  178. #ifdef XP_MAC
  179. char *PORT_Strdup(const char *);
  180. #else
  181. #define PORT_Strdup  strdup
  182. #endif
  183. #define PORT_Strlen(s)  strlen(s)
  184. #define PORT_Strncasecmp PL_strncasecmp
  185. #define PORT_Strncat  strncat
  186. #define PORT_Strncmp  strncmp
  187. #define PORT_Strncpy  strncpy
  188. #define PORT_Strstr  strstr
  189. #define PORT_Strtok  strtok
  190. #define PORT_Tolower  tolower
  191. #endif /* XP_STRING_FUNCS */
  192. typedef PRBool (* PORTCharConversionWSwapFunc) (PRBool toUnicode,
  193. unsigned char *inBuf, unsigned int inBufLen,
  194. unsigned char *outBuf, unsigned int maxOutBufLen,
  195. unsigned int *outBufLen, PRBool swapBytes);
  196. typedef PRBool (* PORTCharConversionFunc) (PRBool toUnicode,
  197. unsigned char *inBuf, unsigned int inBufLen,
  198. unsigned char *outBuf, unsigned int maxOutBufLen,
  199. unsigned int *outBufLen);
  200. #ifdef __cplusplus
  201. extern "C" {
  202. #endif
  203. void PORT_SetUCS4_UTF8ConversionFunction(PORTCharConversionFunc convFunc);
  204. void PORT_SetUCS2_ASCIIConversionFunction(PORTCharConversionWSwapFunc convFunc);
  205. PRBool PORT_UCS4_UTF8Conversion(PRBool toUnicode, unsigned char *inBuf,
  206. unsigned int inBufLen, unsigned char *outBuf,
  207. unsigned int maxOutBufLen, unsigned int *outBufLen);
  208. PRBool PORT_UCS2_ASCIIConversion(PRBool toUnicode, unsigned char *inBuf,
  209. unsigned int inBufLen, unsigned char *outBuf,
  210. unsigned int maxOutBufLen, unsigned int *outBufLen,
  211. PRBool swapBytes);
  212. void PORT_SetUCS2_UTF8ConversionFunction(PORTCharConversionFunc convFunc);
  213. PRBool PORT_UCS2_UTF8Conversion(PRBool toUnicode, unsigned char *inBuf,
  214. unsigned int inBufLen, unsigned char *outBuf,
  215. unsigned int maxOutBufLen, unsigned int *outBufLen);
  216. PR_EXTERN(PRBool)
  217. sec_port_ucs4_utf8_conversion_function
  218. (
  219.   PRBool toUnicode,
  220.   unsigned char *inBuf,
  221.   unsigned int inBufLen,
  222.   unsigned char *outBuf,
  223.   unsigned int maxOutBufLen,
  224.   unsigned int *outBufLen
  225. );
  226. PR_EXTERN(PRBool)
  227. sec_port_ucs2_utf8_conversion_function
  228. (
  229.   PRBool toUnicode,
  230.   unsigned char *inBuf,
  231.   unsigned int inBufLen,
  232.   unsigned char *outBuf,
  233.   unsigned int maxOutBufLen,
  234.   unsigned int *outBufLen
  235. );
  236. extern int NSS_PutEnv(const char * envVarName, const char * envValue);
  237. SEC_END_PROTOS
  238. #endif /* _SECPORT_H_ */