xref: /onnv-gate/usr/src/lib/libast/common/features/iconv (revision 4887:feebf9260c2e)
1*4887Schinset	prototyped
2*4887Schinhdr	iconv
3*4887Schinlib	iconv_open,iconv_close,iconv -liconv
4*4887Schinnxt	iconv
5*4887Schin
6*4887Schintst	output{
7*4887Schin	#if !_lib_iconv_open
8*4887Schin	#define _undef_hdr_iconv	1
9*4887Schin	#undef	_hdr_iconv
10*4887Schin	#endif
11*4887Schin	#if !_hdr_iconv
12*4887Schin	#define _undef_lib_iconv_open	1
13*4887Schin	#undef	_lib_iconv_open
14*4887Schin	#endif
15*4887Schin	#if _hdr_iconv
16*4887Schin	#include <sys/types.h>
17*4887Schin	#include <iconv.h>
18*4887Schin	#endif
19*4887Schin
20*4887Schin	int
21*4887Schin	main()
22*4887Schin	{
23*4887Schin		char*	lib;
24*4887Schin
25*4887Schin		printf("#include <ast_common.h>\n");
26*4887Schin		printf("#include <ccode.h>\n");
27*4887Schin	#if _undef_hdr_iconv
28*4887Schin		printf("#undef	_hdr_iconv\n");
29*4887Schin	#endif
30*4887Schin	#if _undef_lib_iconv_open
31*4887Schin		printf("#undef	_lib_iconv_open\n");
32*4887Schin	#endif
33*4887Schin	#if _hdr_iconv && defined(_nxt_iconv_str)
34*4887Schin		printf("#include <%s>	/* the native iconv.h */\n", _nxt_iconv_str);
35*4887Schin	#endif
36*4887Schin		printf("\n");
37*4887Schin		printf("#define CC_ICONV	(-1)\n");
38*4887Schin		printf("#define CC_UCS		(-2)\n");
39*4887Schin		printf("#define CC_SCU		(-3)\n");
40*4887Schin		printf("#define CC_UTF		(-4)\n");
41*4887Schin		printf("#define CC_UME		(-5)\n");
42*4887Schin		printf("\n");
43*4887Schin	#if _lib_iconv_open
44*4887Schin		lib = "_ast_";
45*4887Schin		printf("#ifndef _ICONV_LIST_PRIVATE_\n");
46*4887Schin		printf("#undef	iconv_t\n");
47*4887Schin		printf("#define	iconv_t		%siconv_t\n", lib);
48*4887Schin		printf("#undef	iconv_f\n");
49*4887Schin		printf("#define	iconv_f		%siconv_f\n", lib);
50*4887Schin		printf("#undef	iconv_list_t\n");
51*4887Schin		printf("#define	iconv_list_t	%siconv_list_t\n", lib);
52*4887Schin		printf("#undef	iconv_open\n");
53*4887Schin		printf("#define iconv_open	%siconv_open\n", lib);
54*4887Schin		printf("#undef	iconv\n");
55*4887Schin		printf("#define	iconv		%siconv\n", lib);
56*4887Schin		printf("#undef	iconv_close\n");
57*4887Schin		printf("#define iconv_close	%siconv_close\n", lib);
58*4887Schin		printf("#undef	iconv_list\n");
59*4887Schin		printf("#define iconv_list	%siconv_list\n", lib);
60*4887Schin		printf("#undef	iconv_move\n");
61*4887Schin		printf("#define iconv_move	%siconv_move\n", lib);
62*4887Schin		printf("#undef	iconv_name\n");
63*4887Schin		printf("#define iconv_name	%siconv_name\n", lib);
64*4887Schin		printf("#undef	iconv_write\n");
65*4887Schin		printf("#define iconv_write	%siconv_write\n", lib);
66*4887Schin		printf("#endif\n");
67*4887Schin	#else
68*4887Schin		lib = "";
69*4887Schin	#endif
70*4887Schin		printf("\n");
71*4887Schin		printf("typedef Ccmap_t %siconv_list_t;\n", lib);
72*4887Schin		printf("typedef void* %siconv_t;\n", lib);
73*4887Schin		printf("typedef size_t (*%siconv_f)(%siconv_t, char**, size_t*, char**, size_t*);\n", lib, lib);
74*4887Schin		printf("\n");
75*4887Schin		printf("#if _BLD_ast && defined(__EXPORT__)\n");
76*4887Schin		printf("#define extern		__EXPORT__\n");
77*4887Schin		printf("#endif\n");
78*4887Schin		printf("\n");
79*4887Schin		printf("extern %siconv_t	%siconv_open(const char*, const char*);\n", lib, lib);
80*4887Schin		printf("extern size_t		%siconv(%siconv_t, char**, size_t*, char**, size_t*);\n", lib, lib);
81*4887Schin		printf("extern int		%siconv_close(%siconv_t);\n", lib, lib);
82*4887Schin		printf("extern %siconv_list_t*	%siconv_list(%siconv_list_t*);\n", lib, lib, lib);
83*4887Schin		printf("extern int		%siconv_name(const char*, char*, size_t);\n", lib);
84*4887Schin		printf("#if _SFIO_H\n");
85*4887Schin		printf("extern ssize_t		%siconv_move(%siconv_t, Sfio_t*, Sfio_t*, size_t, size_t*);\n", lib, lib);
86*4887Schin		printf("extern ssize_t		%siconv_write(%siconv_t, Sfio_t*, char**, size_t*, size_t*);\n", lib, lib);
87*4887Schin		printf("#else\n");
88*4887Schin		printf("#if _SFSTDIO_H\n");
89*4887Schin		printf("extern ssize_t		%siconv_move(%siconv_t, FILE*, FILE*, size_t, size_t*);\n", lib, lib);
90*4887Schin		printf("extern ssize_t		%siconv_write(%siconv_t, FILE*, char**, size_t*, size_t*);\n", lib, lib);
91*4887Schin		printf("#endif\n");
92*4887Schin		printf("#endif\n");
93*4887Schin		printf("\n");
94*4887Schin		printf("#undef	extern\n");
95*4887Schin		printf("\n");
96*4887Schin		return 0;
97*4887Schin	}
98*4887Schin}end
99