Source code pulled from OpenBSD for OpenNTPD. The place to contribute to this code is via the OpenBSD CVS tree.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

237 lines
8.8 KiB

  1. /* $OpenBSD: wchar.h,v 1.29 2015/04/04 18:05:05 guenther Exp $ */
  2. /* $NetBSD: wchar.h,v 1.16 2003/03/07 07:11:35 tshiozak Exp $ */
  3. /*-
  4. * Copyright (c)1999 Citrus Project,
  5. * All rights reserved.
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions
  9. * are met:
  10. * 1. Redistributions of source code must retain the above copyright
  11. * notice, this list of conditions and the following disclaimer.
  12. * 2. Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in the
  14. * documentation and/or other materials provided with the distribution.
  15. *
  16. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  17. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  18. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  19. * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  20. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  21. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  22. * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  23. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  24. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  25. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  26. * SUCH DAMAGE.
  27. */
  28. /*-
  29. * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
  30. * All rights reserved.
  31. *
  32. * This code is derived from software contributed to The NetBSD Foundation
  33. * by Julian Coleman.
  34. *
  35. * Redistribution and use in source and binary forms, with or without
  36. * modification, are permitted provided that the following conditions
  37. * are met:
  38. * 1. Redistributions of source code must retain the above copyright
  39. * notice, this list of conditions and the following disclaimer.
  40. * 2. Redistributions in binary form must reproduce the above copyright
  41. * notice, this list of conditions and the following disclaimer in the
  42. * documentation and/or other materials provided with the distribution.
  43. *
  44. * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
  45. * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  46. * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  47. * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
  48. * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  49. * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  50. * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  51. * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  52. * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  53. * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  54. * POSSIBILITY OF SUCH DAMAGE.
  55. */
  56. #ifndef _WCHAR_H_
  57. #define _WCHAR_H_
  58. #include <sys/cdefs.h>
  59. #include <sys/_types.h>
  60. #ifndef NULL
  61. #ifdef __GNUG__
  62. #define NULL __null
  63. #elif defined(__cplusplus)
  64. #define NULL 0L
  65. #else
  66. #define NULL ((void *)0)
  67. #endif
  68. #endif
  69. #include <stdio.h> /* for FILE* */
  70. #if !defined(_WCHAR_T_DEFINED_) && !defined(__cplusplus)
  71. #define _WCHAR_T_DEFINED_
  72. typedef __wchar_t wchar_t;
  73. #endif
  74. #ifndef _MBSTATE_T_DEFINED_
  75. #define _MBSTATE_T_DEFINED_
  76. typedef __mbstate_t mbstate_t;
  77. #endif
  78. #ifndef _WINT_T_DEFINED_
  79. #define _WINT_T_DEFINED_
  80. typedef __wint_t wint_t;
  81. #endif
  82. #ifndef _SIZE_T_DEFINED_
  83. #define _SIZE_T_DEFINED_
  84. typedef __size_t size_t;
  85. #endif
  86. #ifndef WEOF
  87. #define WEOF ((wint_t)-1)
  88. #endif
  89. #ifndef WCHAR_MIN
  90. #define WCHAR_MIN (-0x7fffffff - 1)
  91. #endif
  92. #ifndef WCHAR_MAX
  93. #define WCHAR_MAX 0x7fffffff
  94. #endif
  95. __BEGIN_DECLS
  96. wint_t btowc(int);
  97. size_t mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
  98. size_t mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
  99. mbstate_t * __restrict);
  100. int mbsinit(const mbstate_t *);
  101. size_t mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
  102. mbstate_t * __restrict)
  103. __attribute__ ((__bounded__(__wcstring__,1,3)));
  104. size_t wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
  105. wchar_t *wcscat(wchar_t * __restrict, const wchar_t * __restrict);
  106. wchar_t *wcschr(const wchar_t *, wchar_t);
  107. int wcscmp(const wchar_t *, const wchar_t *);
  108. int wcscoll(const wchar_t *, const wchar_t *);
  109. wchar_t *wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
  110. size_t wcscspn(const wchar_t *, const wchar_t *);
  111. size_t wcslen(const wchar_t *);
  112. wchar_t *wcsncat(wchar_t * __restrict, const wchar_t * __restrict,
  113. size_t)
  114. __attribute__ ((__bounded__(__wcstring__,1,3)));
  115. int wcsncmp(const wchar_t *, const wchar_t *, size_t);
  116. wchar_t *wcsncpy(wchar_t * __restrict , const wchar_t * __restrict,
  117. size_t)
  118. __attribute__ ((__bounded__(__wcstring__,1,3)));
  119. wchar_t *wcspbrk(const wchar_t *, const wchar_t *);
  120. wchar_t *wcsrchr(const wchar_t *, wchar_t);
  121. size_t wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
  122. mbstate_t * __restrict)
  123. __attribute__ ((__bounded__(__wcstring__,1,3)));
  124. size_t wcsspn(const wchar_t *, const wchar_t *);
  125. wchar_t *wcsstr(const wchar_t *, const wchar_t *);
  126. wchar_t *wcstok(wchar_t * __restrict, const wchar_t * __restrict,
  127. wchar_t ** __restrict);
  128. size_t wcsxfrm(wchar_t *, const wchar_t *, size_t);
  129. wchar_t *wcswcs(const wchar_t *, const wchar_t *);
  130. wchar_t *wmemchr(const wchar_t *, wchar_t, size_t);
  131. int wmemcmp(const wchar_t *, const wchar_t *, size_t);
  132. wchar_t *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict,
  133. size_t)
  134. __attribute__ ((__bounded__(__wcstring__,1,3)))
  135. __attribute__ ((__bounded__(__wcstring__,2,3)));
  136. wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t)
  137. __attribute__ ((__bounded__(__wcstring__,1,3)))
  138. __attribute__ ((__bounded__(__wcstring__,2,3)));
  139. wchar_t *wmemset(wchar_t *, wchar_t, size_t)
  140. __attribute__ ((__bounded__(__wcstring__,1,3)));
  141. int wcswidth(const wchar_t *, size_t);
  142. int wctob(wint_t);
  143. int wcwidth(wchar_t);
  144. double wcstod(const wchar_t * __restrict, wchar_t ** __restrict);
  145. long int wcstol(const wchar_t * __restrict, wchar_t ** __restrict, int base);
  146. unsigned long int wcstoul(const wchar_t * __restrict, wchar_t ** __restrict,
  147. int base);
  148. #if __POSIX_VISIBLE >= 200809
  149. FILE *open_wmemstream(wchar_t **, size_t *);
  150. wchar_t *wcsdup(const wchar_t *);
  151. int wcscasecmp(const wchar_t *, const wchar_t *);
  152. int wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
  153. size_t mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
  154. size_t, mbstate_t * __restrict)
  155. __attribute__ ((__bounded__(__wcstring__,1,4)));
  156. size_t wcsnrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
  157. size_t, mbstate_t * __restrict)
  158. __attribute__ ((__bounded__(__wcstring__,1,4)));
  159. #endif
  160. #if __ISO_C_VISIBLE >= 1999
  161. float wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
  162. long double wcstold(const wchar_t * __restrict, wchar_t ** __restrict);
  163. struct tm;
  164. size_t wcsftime(wchar_t * __restrict, size_t, const wchar_t *__restrict,
  165. const struct tm *__restrict);
  166. #endif
  167. #if !defined(__STRICT_ANSI__) || __ISO_C_VISIBLE >= 1999
  168. long long int wcstoll(const wchar_t * __restrict,
  169. wchar_t ** __restrict, int base);
  170. unsigned long long int wcstoull(const wchar_t * __restrict,
  171. wchar_t ** __restrict, int base);
  172. #endif
  173. wint_t ungetwc(wint_t, FILE *);
  174. wint_t fgetwc(FILE *);
  175. wchar_t *fgetws(wchar_t * __restrict, int, FILE * __restrict)
  176. __attribute__ ((__bounded__(__wcstring__,1,2)));
  177. wint_t getwc(FILE *);
  178. wint_t getwchar(void);
  179. wint_t fputwc(wchar_t, FILE *);
  180. int fputws(const wchar_t * __restrict, FILE * __restrict);
  181. wint_t putwc(wchar_t, FILE *);
  182. wint_t putwchar(wchar_t);
  183. int fwide(FILE *, int);
  184. int fwprintf(FILE * __restrict, const wchar_t * __restrict, ...);
  185. int swprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict, ...);
  186. int vfwprintf(FILE * __restrict, const wchar_t * __restrict, __va_list);
  187. int vswprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
  188. __va_list);
  189. int vwprintf(const wchar_t * __restrict, __va_list);
  190. int wprintf(const wchar_t * __restrict, ...);
  191. int fwscanf(FILE * __restrict, const wchar_t * __restrict, ...);
  192. int swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...);
  193. int vfwscanf(FILE * __restrict, const wchar_t * __restrict, __va_list);
  194. int vswscanf(const wchar_t * __restrict, const wchar_t * __restrict, __va_list);
  195. int vwscanf(const wchar_t * __restrict, __va_list);
  196. int wscanf(const wchar_t * __restrict, ...);
  197. #if __BSD_VISIBLE
  198. wchar_t *fgetwln(FILE * __restrict, size_t * __restrict);
  199. size_t wcslcat(wchar_t *, const wchar_t *, size_t)
  200. __attribute__ ((__bounded__(__wcstring__,1,3)));
  201. size_t wcslcpy(wchar_t *, const wchar_t *, size_t)
  202. __attribute__ ((__bounded__(__wcstring__,1,3)));
  203. #endif
  204. #define getwc(f) fgetwc(f)
  205. #define getwchar() getwc(stdin)
  206. #define putwc(wc, f) fputwc((wc), (f))
  207. #define putwchar(wc) putwc((wc), stdout)
  208. __END_DECLS
  209. #endif /* !_WCHAR_H_ */