1da2e3ebdSchinset	prototyped
2da2e3ebdSchinhdr	iconv
33e14f97fSRoger A. Faulknerlib	iconv_open,iconv_close,iconv iconv.h -liconv
4da2e3ebdSchinnxt	iconv
5da2e3ebdSchin
6da2e3ebdSchintst	output{
7da2e3ebdSchin	#if !_lib_iconv_open
8da2e3ebdSchin	#define _undef_hdr_iconv	1
9da2e3ebdSchin	#undef	_hdr_iconv
10da2e3ebdSchin	#endif
11da2e3ebdSchin	#if !_hdr_iconv
12da2e3ebdSchin	#define _undef_lib_iconv_open	1
13da2e3ebdSchin	#undef	_lib_iconv_open
14da2e3ebdSchin	#endif
15da2e3ebdSchin	#if _hdr_iconv
16da2e3ebdSchin	#include <sys/types.h>
17da2e3ebdSchin	#include <iconv.h>
18da2e3ebdSchin	#endif
19da2e3ebdSchin
20da2e3ebdSchin	int
21da2e3ebdSchin	main()
22da2e3ebdSchin	{
23da2e3ebdSchin		char*	lib;
24da2e3ebdSchin
25da2e3ebdSchin		printf("#include <ast_common.h>\n");
26da2e3ebdSchin		printf("#include <ccode.h>\n");
27da2e3ebdSchin	#if _undef_hdr_iconv
28da2e3ebdSchin		printf("#undef	_hdr_iconv\n");
29da2e3ebdSchin	#endif
30da2e3ebdSchin	#if _undef_lib_iconv_open
31da2e3ebdSchin		printf("#undef	_lib_iconv_open\n");
32da2e3ebdSchin	#endif
33da2e3ebdSchin	#if _hdr_iconv && defined(_nxt_iconv_str)
34da2e3ebdSchin		printf("#include <%s>	/* the native iconv.h */\n", _nxt_iconv_str);
35da2e3ebdSchin	#endif
36da2e3ebdSchin		printf("\n");
37*b30d1939SAndy Fiddaman		printf("#define ICONV_VERSION		20110111L\n");
38*b30d1939SAndy Fiddaman		printf("\n");
39*b30d1939SAndy Fiddaman		printf("#define ICONV_FATAL		0x02\n");
40*b30d1939SAndy Fiddaman		printf("#define ICONV_OMIT		0x04\n");
41*b30d1939SAndy Fiddaman		printf("\n");
42*b30d1939SAndy Fiddaman		printf("#define CC_ICONV		(-1)\n");
43*b30d1939SAndy Fiddaman		printf("#define CC_UCS			(-2)\n");
44*b30d1939SAndy Fiddaman		printf("#define CC_SCU			(-3)\n");
45*b30d1939SAndy Fiddaman		printf("#define CC_UTF			(-4)\n");
46*b30d1939SAndy Fiddaman		printf("#define CC_UME			(-5)\n");
47da2e3ebdSchin		printf("\n");
48da2e3ebdSchin	#if _lib_iconv_open
49da2e3ebdSchin		lib = "_ast_";
50da2e3ebdSchin		printf("#ifndef _ICONV_LIST_PRIVATE_\n");
51da2e3ebdSchin		printf("#undef	iconv_t\n");
52da2e3ebdSchin		printf("#define	iconv_t		%siconv_t\n", lib);
53da2e3ebdSchin		printf("#undef	iconv_f\n");
54da2e3ebdSchin		printf("#define	iconv_f		%siconv_f\n", lib);
55da2e3ebdSchin		printf("#undef	iconv_list_t\n");
56da2e3ebdSchin		printf("#define	iconv_list_t	%siconv_list_t\n", lib);
57da2e3ebdSchin		printf("#undef	iconv_open\n");
58da2e3ebdSchin		printf("#define iconv_open	%siconv_open\n", lib);
59da2e3ebdSchin		printf("#undef	iconv\n");
60da2e3ebdSchin		printf("#define	iconv		%siconv\n", lib);
61da2e3ebdSchin		printf("#undef	iconv_close\n");
62da2e3ebdSchin		printf("#define iconv_close	%siconv_close\n", lib);
63da2e3ebdSchin		printf("#undef	iconv_list\n");
64da2e3ebdSchin		printf("#define iconv_list	%siconv_list\n", lib);
65da2e3ebdSchin		printf("#undef	iconv_move\n");
66da2e3ebdSchin		printf("#define iconv_move	%siconv_move\n", lib);
67da2e3ebdSchin		printf("#undef	iconv_name\n");
68da2e3ebdSchin		printf("#define iconv_name	%siconv_name\n", lib);
69da2e3ebdSchin		printf("#undef	iconv_write\n");
70da2e3ebdSchin		printf("#define iconv_write	%siconv_write\n", lib);
71da2e3ebdSchin		printf("#endif\n");
72da2e3ebdSchin	#else
73da2e3ebdSchin		lib = "";
74da2e3ebdSchin	#endif
75*b30d1939SAndy Fiddaman		printf("\n");
76*b30d1939SAndy Fiddaman		printf("typedef int (*Iconv_error_f)(void*, void*, int, ...);\n");
77*b30d1939SAndy Fiddaman		printf("\n");
78*b30d1939SAndy Fiddaman		printf("typedef struct Iconv_disc_s\n");
79*b30d1939SAndy Fiddaman		printf("{\n");
80*b30d1939SAndy Fiddaman		printf("	uint32_t		version;\n");
81*b30d1939SAndy Fiddaman		printf("	Iconv_error_f		errorf;\n");
82*b30d1939SAndy Fiddaman		printf("	size_t			errors;\n");
83*b30d1939SAndy Fiddaman		printf("	uint32_t		flags;\n");
84*b30d1939SAndy Fiddaman		printf("	int			fill;\n");
85*b30d1939SAndy Fiddaman		printf("} Iconv_disc_t;\n");
86da2e3ebdSchin		printf("\n");
87da2e3ebdSchin		printf("typedef Ccmap_t %siconv_list_t;\n", lib);
88da2e3ebdSchin		printf("typedef void* %siconv_t;\n", lib);
89da2e3ebdSchin		printf("typedef size_t (*%siconv_f)(%siconv_t, char**, size_t*, char**, size_t*);\n", lib, lib);
90da2e3ebdSchin		printf("\n");
91*b30d1939SAndy Fiddaman		printf("#define iconv_init(d,e)		(memset(d,0,sizeof(*(d))),(d)->version=ICONV_VERSION,(d)->errorf=(Iconv_error_f)(e),(d)->fill=(-1))\n");
92*b30d1939SAndy Fiddaman		printf("\n");
93da2e3ebdSchin		printf("#if _BLD_ast && defined(__EXPORT__)\n");
94da2e3ebdSchin		printf("#define extern		__EXPORT__\n");
95da2e3ebdSchin		printf("#endif\n");
96da2e3ebdSchin		printf("\n");
97da2e3ebdSchin		printf("extern %siconv_t	%siconv_open(const char*, const char*);\n", lib, lib);
98da2e3ebdSchin		printf("extern size_t		%siconv(%siconv_t, char**, size_t*, char**, size_t*);\n", lib, lib);
99da2e3ebdSchin		printf("extern int		%siconv_close(%siconv_t);\n", lib, lib);
100da2e3ebdSchin		printf("extern %siconv_list_t*	%siconv_list(%siconv_list_t*);\n", lib, lib, lib);
101da2e3ebdSchin		printf("extern int		%siconv_name(const char*, char*, size_t);\n", lib);
102da2e3ebdSchin		printf("#if _SFIO_H\n");
103*b30d1939SAndy Fiddaman		printf("extern ssize_t		%siconv_move(%siconv_t, Sfio_t*, Sfio_t*, size_t, Iconv_disc_t*);\n", lib, lib);
104*b30d1939SAndy Fiddaman		printf("extern ssize_t		%siconv_write(%siconv_t, Sfio_t*, char**, size_t*, Iconv_disc_t*);\n", lib, lib);
105da2e3ebdSchin		printf("#else\n");
106da2e3ebdSchin		printf("#if _SFSTDIO_H\n");
107*b30d1939SAndy Fiddaman		printf("extern ssize_t		%siconv_move(%siconv_t, FILE*, FILE*, size_t, Iconv_disc_t*);\n", lib, lib);
108*b30d1939SAndy Fiddaman		printf("extern ssize_t		%siconv_write(%siconv_t, FILE*, char**, size_t*, Iconv_disc_t*);\n", lib, lib);
109da2e3ebdSchin		printf("#endif\n");
110da2e3ebdSchin		printf("#endif\n");
111da2e3ebdSchin		printf("\n");
112da2e3ebdSchin		printf("#undef	extern\n");
113da2e3ebdSchin		printf("\n");
114da2e3ebdSchin		return 0;
115da2e3ebdSchin	}
116da2e3ebdSchin}end
117