1a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang/*************************************************************************
2a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang *
3df143a5041f03a22808b59c76698770b74692815Selim Gurun * $Id$
4a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang *
5a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * Copyright (C) 1998 Bjorn Reese and Daniel Stenberg.
6a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang *
7a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * Permission to use, copy, modify, and distribute this software for any
8a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * purpose with or without fee is hereby granted, provided that the above
9a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * copyright notice and this permission notice appear in all copies.
10a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang *
11a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
12a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
13a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
14a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
15a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang *
16a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang *************************************************************************
17a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang *
18a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * http://ctrio.sourceforge.net/
19a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang *
20a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang ************************************************************************/
21a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
22a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef TRIO_TRIO_H
23a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define TRIO_TRIO_H
24a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
25a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#if !defined(WITHOUT_TRIO)
26a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
27a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang/*
28a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * Use autoconf defines if present. Packages using trio must define
29a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * HAVE_CONFIG_H as a compiler option themselves.
30a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang */
3194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#if defined(TRIO_HAVE_CONFIG_H)
32df143a5041f03a22808b59c76698770b74692815Selim Gurun# include "config.h"
33a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
34a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
35a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#include "triodef.h"
36a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
37a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#include <stdio.h>
38a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#include <stdlib.h>
39a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#if defined(TRIO_COMPILER_ANCIENT)
40a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# include <varargs.h>
41a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#else
42a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# include <stdarg.h>
43a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
44a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
45a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifdef __cplusplus
46a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangextern "C" {
47a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
48a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
49a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang/*
50a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * Error codes.
51a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang *
52a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * Remember to add a textual description to trio_strerror.
53a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang */
54a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangenum {
55a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang  TRIO_EOF      = 1,
56a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang  TRIO_EINVAL   = 2,
57a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang  TRIO_ETOOMANY = 3,
58a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang  TRIO_EDBLREF  = 4,
59a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang  TRIO_EGAP     = 5,
60a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang  TRIO_ENOMEM   = 6,
61a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang  TRIO_ERANGE   = 7,
62a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang  TRIO_ERRNO    = 8,
63a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang  TRIO_ECUSTOM  = 9
64a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang};
65a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
66a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang/* Error macros */
67a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define TRIO_ERROR_CODE(x) ((-(x)) & 0x00FF)
68a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define TRIO_ERROR_POSITION(x) ((-(x)) >> 8)
69a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define TRIO_ERROR_NAME(x) trio_strerror(x)
70a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
71a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangtypedef int (*trio_outstream_t) TRIO_PROTO((trio_pointer_t, int));
72a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangtypedef int (*trio_instream_t) TRIO_PROTO((trio_pointer_t));
73a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
74a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) WangTRIO_CONST char *trio_strerror TRIO_PROTO((int));
75a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
76a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang/*************************************************************************
77a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * Print Functions
78a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang */
79a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
80a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_printf TRIO_PROTO((TRIO_CONST char *format, ...));
81a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vprintf TRIO_PROTO((TRIO_CONST char *format, va_list args));
82a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_printfv TRIO_PROTO((TRIO_CONST char *format, void **args));
83a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
84a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_fprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...));
85a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vfprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args));
86a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_fprintfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args));
87a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
88a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_dprintf TRIO_PROTO((int fd, TRIO_CONST char *format, ...));
89a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vdprintf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args));
90a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_dprintfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args));
91a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
92a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_cprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
93a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang			     TRIO_CONST char *format, ...));
94a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vcprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
95a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang			      TRIO_CONST char *format, va_list args));
96a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_cprintfv TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
97a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang			      TRIO_CONST char *format, void **args));
98a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
99a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_sprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, ...));
100a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vsprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, va_list args));
101a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_sprintfv TRIO_PROTO((char *buffer, TRIO_CONST char *format, void **args));
102a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
103a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_snprintf TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...));
104a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vsnprintf TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
105a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang		   va_list args));
106a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_snprintfv TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
107a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang		   void **args));
108a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
109a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_snprintfcat TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...));
110a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vsnprintfcat TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
111a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang                      va_list args));
112a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
113a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangchar *trio_aprintf TRIO_PROTO((TRIO_CONST char *format, ...));
114a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangchar *trio_vaprintf TRIO_PROTO((TRIO_CONST char *format, va_list args));
115a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
116a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_asprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, ...));
117a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vasprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, va_list args));
118a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
119a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang/*************************************************************************
120a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * Scan Functions
121a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang */
122a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_scanf TRIO_PROTO((TRIO_CONST char *format, ...));
123a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vscanf TRIO_PROTO((TRIO_CONST char *format, va_list args));
124a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_scanfv TRIO_PROTO((TRIO_CONST char *format, void **args));
125a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
126a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_fscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...));
127a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vfscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args));
128a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_fscanfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args));
129a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
130a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_dscanf TRIO_PROTO((int fd, TRIO_CONST char *format, ...));
131a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vdscanf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args));
132a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_dscanfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args));
133a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
134a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_cscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
135a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang			    TRIO_CONST char *format, ...));
136a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vcscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
137a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang			     TRIO_CONST char *format, va_list args));
138a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_cscanfv TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
139a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang			     TRIO_CONST char *format, void **args));
140a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
141a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_sscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, ...));
142a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_vsscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, va_list args));
143a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangint trio_sscanfv TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, void **args));
144a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
145a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang/*************************************************************************
146a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * Locale Functions
147a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang */
148a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangvoid trio_locale_set_decimal_point TRIO_PROTO((char *decimalPoint));
149a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangvoid trio_locale_set_thousand_separator TRIO_PROTO((char *thousandSeparator));
150a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wangvoid trio_locale_set_grouping TRIO_PROTO((char *grouping));
151a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
152a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang/*************************************************************************
153a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang * Renaming
154a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang */
155a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifdef TRIO_REPLACE_STDIO
156a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang/* Replace the <stdio.h> functions */
157a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_PRINTF
158a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define printf trio_printf
159a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
160a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_VPRINTF
161a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define vprintf trio_vprintf
162a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
163a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_FPRINTF
164a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define fprintf trio_fprintf
165a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
166a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_VFPRINTF
167a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define vfprintf trio_vfprintf
168a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
169a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_SPRINTF
170a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define sprintf trio_sprintf
171a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
172a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_VSPRINTF
173a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define vsprintf trio_vsprintf
174a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
175a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_SNPRINTF
176a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define snprintf trio_snprintf
177a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
178a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_VSNPRINTF
179a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define vsnprintf trio_vsnprintf
180a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
181a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_SCANF
182a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define scanf trio_scanf
183a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
184a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_VSCANF
185a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define vscanf trio_vscanf
186a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
187a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_FSCANF
188a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define fscanf trio_fscanf
189a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
190a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_VFSCANF
191a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define vfscanf trio_vfscanf
192a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
193a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_SSCANF
194a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define sscanf trio_sscanf
195a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
196a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifndef HAVE_VSSCANF
197a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang# define vsscanf trio_vsscanf
198a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
199a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang/* These aren't stdio functions, but we make them look similar */
200a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define dprintf trio_dprintf
201a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define vdprintf trio_vdprintf
202a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define aprintf trio_aprintf
203a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define vaprintf trio_vaprintf
204a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define asprintf trio_asprintf
205a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define vasprintf trio_vasprintf
206a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define dscanf trio_dscanf
207a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#define vdscanf trio_vdscanf
208a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
209a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
210a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#ifdef __cplusplus
211a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang} /* extern "C" */
212a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif
213a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
214a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif /* WITHOUT_TRIO */
215a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang
216a66dd5f0b030e773d3af602682150eebdc9f2bddShimeng (Simon) Wang#endif /* TRIO_TRIO_H */
217