192ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard/*************************************************************************
292ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard *
392ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard * $Id$
492ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard *
592ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard * Copyright (C) 1998 Bjorn Reese and Daniel Stenberg.
692ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard *
792ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard * Permission to use, copy, modify, and distribute this software for any
892ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard * purpose with or without fee is hereby granted, provided that the above
992ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard * copyright notice and this permission notice appear in all copies.
1092ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard *
1192ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
1292ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
1392ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
1492ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
1592ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard *
16026d29f41e252619bcc5655865c9548642cd93f7Bjorn Reese *************************************************************************
17026d29f41e252619bcc5655865c9548642cd93f7Bjorn Reese *
18026d29f41e252619bcc5655865c9548642cd93f7Bjorn Reese * http://ctrio.sourceforge.net/
19026d29f41e252619bcc5655865c9548642cd93f7Bjorn Reese *
2092ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard ************************************************************************/
2192ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard
2270a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef TRIO_TRIO_H
2370a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#define TRIO_TRIO_H
2492ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard
25b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard#if !defined(WITHOUT_TRIO)
2692ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard
2792ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard/*
2870a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese * Use autoconf defines if present. Packages using trio must define
2970a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese * HAVE_CONFIG_H as a compiler option themselves.
3070a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese */
315706b6d8767e3c3f2e5b277b54e1af68035bc111Daniel Richard G#if defined(TRIO_HAVE_CONFIG_H)
32ec5b1fd1f492f8f68d19cf7601ac84778bd7331eWilliam M. Brack# include "config.h"
3370a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
3470a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
35b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard#include "triodef.h"
3670a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
37a48ed3d6de02b6a78e08ff1321eed720dea117e7Daniel Veillard#include <stdio.h>
38a48ed3d6de02b6a78e08ff1321eed720dea117e7Daniel Veillard#include <stdlib.h>
39a48ed3d6de02b6a78e08ff1321eed720dea117e7Daniel Veillard#if defined(TRIO_COMPILER_ANCIENT)
40a48ed3d6de02b6a78e08ff1321eed720dea117e7Daniel Veillard# include <varargs.h>
41a48ed3d6de02b6a78e08ff1321eed720dea117e7Daniel Veillard#else
42a48ed3d6de02b6a78e08ff1321eed720dea117e7Daniel Veillard# include <stdarg.h>
43a48ed3d6de02b6a78e08ff1321eed720dea117e7Daniel Veillard#endif
44a48ed3d6de02b6a78e08ff1321eed720dea117e7Daniel Veillard
45906ec8a0cadacfc0711b9ebeba0025f1848cea55Bjorn Reese#ifdef __cplusplus
46906ec8a0cadacfc0711b9ebeba0025f1848cea55Bjorn Reeseextern "C" {
47906ec8a0cadacfc0711b9ebeba0025f1848cea55Bjorn Reese#endif
48906ec8a0cadacfc0711b9ebeba0025f1848cea55Bjorn Reese
4970a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese/*
5092ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard * Error codes.
5192ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard *
5292ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard * Remember to add a textual description to trio_strerror.
5392ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard */
5492ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillardenum {
5592ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard  TRIO_EOF      = 1,
5692ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard  TRIO_EINVAL   = 2,
5792ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard  TRIO_ETOOMANY = 3,
5892ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard  TRIO_EDBLREF  = 4,
5992ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard  TRIO_EGAP     = 5,
6092ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard  TRIO_ENOMEM   = 6,
61026d29f41e252619bcc5655865c9548642cd93f7Bjorn Reese  TRIO_ERANGE   = 7,
62b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard  TRIO_ERRNO    = 8,
63b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard  TRIO_ECUSTOM  = 9
6492ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard};
6592ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard
66b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard/* Error macros */
67b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard#define TRIO_ERROR_CODE(x) ((-(x)) & 0x00FF)
68b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard#define TRIO_ERROR_POSITION(x) ((-(x)) >> 8)
69b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard#define TRIO_ERROR_NAME(x) trio_strerror(x)
70b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard
71b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardtypedef int (*trio_outstream_t) TRIO_PROTO((trio_pointer_t, int));
72b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardtypedef int (*trio_instream_t) TRIO_PROTO((trio_pointer_t));
73b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard
74b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel VeillardTRIO_CONST char *trio_strerror TRIO_PROTO((int));
7570a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
7670a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese/*************************************************************************
7770a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese * Print Functions
7892ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard */
7992ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard
80b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_printf TRIO_PROTO((TRIO_CONST char *format, ...));
81b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vprintf TRIO_PROTO((TRIO_CONST char *format, va_list args));
82b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_printfv TRIO_PROTO((TRIO_CONST char *format, void **args));
8370a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
84b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_fprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...));
85b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vfprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args));
86b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_fprintfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args));
8770a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
88b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_dprintf TRIO_PROTO((int fd, TRIO_CONST char *format, ...));
89b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vdprintf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args));
90b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_dprintfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args));
9170a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
92b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_cprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
93b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard			     TRIO_CONST char *format, ...));
94b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vcprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
95b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard			      TRIO_CONST char *format, va_list args));
96b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_cprintfv TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
97b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard			      TRIO_CONST char *format, void **args));
98b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard
99b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_sprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, ...));
100b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vsprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, va_list args));
101b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_sprintfv TRIO_PROTO((char *buffer, TRIO_CONST char *format, void **args));
10270a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
103b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_snprintf TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...));
104b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vsnprintf TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
105b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard		   va_list args));
106b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_snprintfv TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
107b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard		   void **args));
10870a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
109b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_snprintfcat TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...));
110b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vsnprintfcat TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
111b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard                      va_list args));
11270a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
113b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardchar *trio_aprintf TRIO_PROTO((TRIO_CONST char *format, ...));
114b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardchar *trio_vaprintf TRIO_PROTO((TRIO_CONST char *format, va_list args));
11570a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
116b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_asprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, ...));
117b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vasprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, va_list args));
11892ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard
11970a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese/*************************************************************************
12070a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese * Scan Functions
12170a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese */
122b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_scanf TRIO_PROTO((TRIO_CONST char *format, ...));
123b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vscanf TRIO_PROTO((TRIO_CONST char *format, va_list args));
124b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_scanfv TRIO_PROTO((TRIO_CONST char *format, void **args));
125b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard
126b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_fscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...));
127b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vfscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args));
128b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_fscanfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args));
12970a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
130b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_dscanf TRIO_PROTO((int fd, TRIO_CONST char *format, ...));
131b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vdscanf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args));
132b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_dscanfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args));
13370a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
134b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_cscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
135b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard			    TRIO_CONST char *format, ...));
136b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vcscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
137b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard			     TRIO_CONST char *format, va_list args));
138b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_cscanfv TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
139b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard			     TRIO_CONST char *format, void **args));
14070a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
141b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_sscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, ...));
142b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_vsscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, va_list args));
143b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardint trio_sscanfv TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, void **args));
144b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard
145b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard/*************************************************************************
146b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard * Locale Functions
147b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillard */
148b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardvoid trio_locale_set_decimal_point TRIO_PROTO((char *decimalPoint));
149b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardvoid trio_locale_set_thousand_separator TRIO_PROTO((char *thousandSeparator));
150b7c29c38f507ac62cc85df9b897762fc84f05a68Daniel Veillardvoid trio_locale_set_grouping TRIO_PROTO((char *grouping));
15192ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard
15270a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese/*************************************************************************
15370a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese * Renaming
15470a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese */
15592ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard#ifdef TRIO_REPLACE_STDIO
15692ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard/* Replace the <stdio.h> functions */
15770a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_PRINTF
15866693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef printf
15970a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define printf trio_printf
16070a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
16170a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_VPRINTF
16266693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef vprintf
16370a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define vprintf trio_vprintf
16470a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
16570a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_FPRINTF
16666693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef fprintf
16770a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define fprintf trio_fprintf
16870a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
16970a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_VFPRINTF
17066693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef vfprintf
17170a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define vfprintf trio_vfprintf
17270a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
17370a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_SPRINTF
17466693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef sprintf
17570a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define sprintf trio_sprintf
17670a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
17770a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_VSPRINTF
17866693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef vsprintf
17970a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define vsprintf trio_vsprintf
18070a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
18170a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_SNPRINTF
18266693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef snprintf
18370a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define snprintf trio_snprintf
18470a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
18570a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_VSNPRINTF
18666693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef vsnprintf
18770a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define vsnprintf trio_vsnprintf
18870a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
18970a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_SCANF
19066693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef scanf
19170a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define scanf trio_scanf
19270a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
19370a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_VSCANF
19466693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef vscanf
19570a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define vscanf trio_vscanf
19670a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
19770a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_FSCANF
19866693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef fscanf
19970a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define fscanf trio_fscanf
20070a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
20170a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_VFSCANF
20266693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef vfscanf
20370a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define vfscanf trio_vfscanf
20470a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
20570a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_SSCANF
20666693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef sscanf
20770a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define sscanf trio_sscanf
20870a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
20970a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#ifndef HAVE_VSSCANF
21066693cef33687e9d2b9f6c83c14687803b618a5fPatrick Monnerat# undef vsscanf
21170a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese# define vsscanf trio_vsscanf
21270a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif
21392ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard/* These aren't stdio functions, but we make them look similar */
21492ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard#define dprintf trio_dprintf
21592ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard#define vdprintf trio_vdprintf
21692ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard#define aprintf trio_aprintf
21792ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard#define vaprintf trio_vaprintf
21892ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard#define asprintf trio_asprintf
21992ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard#define vasprintf trio_vasprintf
22092ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard#define dscanf trio_dscanf
22192ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard#define vdscanf trio_vdscanf
22292ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard#endif
22392ad210417f318c8f0142fd0aee8d2893d83b8e8Daniel Veillard
224906ec8a0cadacfc0711b9ebeba0025f1848cea55Bjorn Reese#ifdef __cplusplus
225906ec8a0cadacfc0711b9ebeba0025f1848cea55Bjorn Reese} /* extern "C" */
226906ec8a0cadacfc0711b9ebeba0025f1848cea55Bjorn Reese#endif
227906ec8a0cadacfc0711b9ebeba0025f1848cea55Bjorn Reese
228906ec8a0cadacfc0711b9ebeba0025f1848cea55Bjorn Reese#endif /* WITHOUT_TRIO */
22970a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese
23070a9da54eb200cd5c5ceafb72aff72c39021c94cBjorn Reese#endif /* TRIO_TRIO_H */
231