xref: /onnv-gate/usr/src/lib/libast/common/stdio/stdhdr.h (revision 12068:08a39a083754)
14887Schin /***********************************************************************
24887Schin *                                                                      *
34887Schin *               This software is part of the ast package               *
4*12068SRoger.Faulkner@Oracle.COM *          Copyright (c) 1985-2010 AT&T Intellectual Property          *
54887Schin *                      and is licensed under the                       *
64887Schin *                  Common Public License, Version 1.0                  *
78462SApril.Chin@Sun.COM *                    by AT&T Intellectual Property                     *
84887Schin *                                                                      *
94887Schin *                A copy of the License is available at                 *
104887Schin *            http://www.opensource.org/licenses/cpl1.0.txt             *
114887Schin *         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
124887Schin *                                                                      *
134887Schin *              Information and Software Systems Research               *
144887Schin *                            AT&T Research                             *
154887Schin *                           Florham Park NJ                            *
164887Schin *                                                                      *
174887Schin *                 Glenn Fowler <gsf@research.att.com>                  *
184887Schin *                  David Korn <dgk@research.att.com>                   *
194887Schin *                   Phong Vo <kpv@research.att.com>                    *
204887Schin *                                                                      *
214887Schin ***********************************************************************/
224887Schin #pragma prototyped
234887Schin 
244887Schin #ifndef _STDHDR_H
254887Schin #define _STDHDR_H	1
264887Schin 
274887Schin #ifndef _NO_LARGEFILE64_SOURCE
284887Schin #define _NO_LARGEFILE64_SOURCE	1
294887Schin #endif
304887Schin #undef	_LARGEFILE64_SOURCE
314887Schin 
324887Schin #define _ast_fseeko	______fseeko
334887Schin #define _ast_ftello	______ftello
344887Schin #include "sfhdr.h"
354887Schin #undef	_ast_fseeko
364887Schin #undef	_ast_ftello
374887Schin 
384887Schin #include "stdio.h"
394887Schin 
404887Schin #define SF_MB		010000
414887Schin #define SF_WC		020000
424887Schin 
434887Schin #if _UWIN
444887Schin 
454887Schin #define STDIO_TRANSFER	1
464887Schin 
474887Schin typedef int (*Fun_f)();
484887Schin 
494887Schin typedef struct Funvec_s
504887Schin {
514887Schin 	const char*	name;
524887Schin 	Fun_f		vec[2];
534887Schin } Funvec_t;
544887Schin 
554887Schin extern int	_stdfun(Sfio_t*, Funvec_t*);
564887Schin 
574887Schin #define STDIO_INT(p,n,t,f,a) \
584887Schin 	{ \
594887Schin 		typedef t (*_s_f)f; \
604887Schin 		int		_i; \
614887Schin 		static Funvec_t	_v = { n }; \
624887Schin 		if ((_i = _stdfun(p, &_v)) < 0) \
634887Schin 			return -1; \
644887Schin 		else if (_i > 0) \
654887Schin 			return ((_s_f)_v.vec[_i])a; \
664887Schin 	}
674887Schin 
684887Schin #define STDIO_PTR(p,n,t,f,a) \
694887Schin 	{ \
704887Schin 		typedef t (*_s_f)f; \
714887Schin 		int		_i; \
724887Schin 		static Funvec_t	_v = { n }; \
734887Schin 		if ((_i = _stdfun(p, &_v)) < 0) \
744887Schin 			return 0; \
754887Schin 		else if (_i > 0) \
764887Schin 			return ((_s_f)_v.vec[_i])a; \
774887Schin 	}
784887Schin 
794887Schin #define STDIO_VOID(p,n,t,f,a) \
804887Schin 	{ \
814887Schin 		typedef t (*_s_f)f; \
824887Schin 		int		_i; \
834887Schin 		static Funvec_t	_v = { n }; \
844887Schin 		if ((_i = _stdfun(p, &_v)) < 0) \
854887Schin 			return; \
864887Schin 		else if (_i > 0) \
874887Schin 		{ \
884887Schin 			((_s_f)_v.vec[_i])a; \
894887Schin 			return; \
904887Schin 		} \
914887Schin 	}
924887Schin 
934887Schin #else
944887Schin 
954887Schin #define STDIO_INT(p,n,t,f,a)
964887Schin #define STDIO_PTR(p,n,t,f,a)
974887Schin #define STDIO_VOID(p,n,t,f,a)
984887Schin 
994887Schin #endif
1004887Schin 
1014887Schin #define FWIDE(f,r) \
1024887Schin 	do \
1034887Schin 	{ \
1044887Schin 		if (fwide(f, 0) < 0) \
1054887Schin 			return r; \
1064887Schin 		f->bits |= SF_WC; \
1074887Schin 	} while (0)
1084887Schin 
1094887Schin #ifdef __EXPORT__
1104887Schin #define extern	__EXPORT__
1114887Schin #endif
1124887Schin 
1134887Schin extern int		sfdcwide(Sfio_t*);
1144887Schin 
1154887Schin #endif
116