xref: /onnv-gate/usr/src/lib/libast/common/features/iconv (revision 12068:08a39a083754)
14887Schinset	prototyped
24887Schinhdr	iconv
3*12068SRoger.Faulkner@Oracle.COMlib	iconv_open,iconv_close,iconv iconv.h -liconv
44887Schinnxt	iconv
54887Schin
64887Schintst	output{
74887Schin	#if !_lib_iconv_open
84887Schin	#define _undef_hdr_iconv	1
94887Schin	#undef	_hdr_iconv
104887Schin	#endif
114887Schin	#if !_hdr_iconv
124887Schin	#define _undef_lib_iconv_open	1
134887Schin	#undef	_lib_iconv_open
144887Schin	#endif
154887Schin	#if _hdr_iconv
164887Schin	#include <sys/types.h>
174887Schin	#include <iconv.h>
184887Schin	#endif
194887Schin
204887Schin	int
214887Schin	main()
224887Schin	{
234887Schin		char*	lib;
244887Schin
254887Schin		printf("#include <ast_common.h>\n");
264887Schin		printf("#include <ccode.h>\n");
274887Schin	#if _undef_hdr_iconv
284887Schin		printf("#undef	_hdr_iconv\n");
294887Schin	#endif
304887Schin	#if _undef_lib_iconv_open
314887Schin		printf("#undef	_lib_iconv_open\n");
324887Schin	#endif
334887Schin	#if _hdr_iconv && defined(_nxt_iconv_str)
344887Schin		printf("#include <%s>	/* the native iconv.h */\n", _nxt_iconv_str);
354887Schin	#endif
364887Schin		printf("\n");
374887Schin		printf("#define CC_ICONV	(-1)\n");
384887Schin		printf("#define CC_UCS		(-2)\n");
394887Schin		printf("#define CC_SCU		(-3)\n");
404887Schin		printf("#define CC_UTF		(-4)\n");
414887Schin		printf("#define CC_UME		(-5)\n");
424887Schin		printf("\n");
434887Schin	#if _lib_iconv_open
444887Schin		lib = "_ast_";
454887Schin		printf("#ifndef _ICONV_LIST_PRIVATE_\n");
464887Schin		printf("#undef	iconv_t\n");
474887Schin		printf("#define	iconv_t		%siconv_t\n", lib);
484887Schin		printf("#undef	iconv_f\n");
494887Schin		printf("#define	iconv_f		%siconv_f\n", lib);
504887Schin		printf("#undef	iconv_list_t\n");
514887Schin		printf("#define	iconv_list_t	%siconv_list_t\n", lib);
524887Schin		printf("#undef	iconv_open\n");
534887Schin		printf("#define iconv_open	%siconv_open\n", lib);
544887Schin		printf("#undef	iconv\n");
554887Schin		printf("#define	iconv		%siconv\n", lib);
564887Schin		printf("#undef	iconv_close\n");
574887Schin		printf("#define iconv_close	%siconv_close\n", lib);
584887Schin		printf("#undef	iconv_list\n");
594887Schin		printf("#define iconv_list	%siconv_list\n", lib);
604887Schin		printf("#undef	iconv_move\n");
614887Schin		printf("#define iconv_move	%siconv_move\n", lib);
624887Schin		printf("#undef	iconv_name\n");
634887Schin		printf("#define iconv_name	%siconv_name\n", lib);
644887Schin		printf("#undef	iconv_write\n");
654887Schin		printf("#define iconv_write	%siconv_write\n", lib);
664887Schin		printf("#endif\n");
674887Schin	#else
684887Schin		lib = "";
694887Schin	#endif
704887Schin		printf("\n");
714887Schin		printf("typedef Ccmap_t %siconv_list_t;\n", lib);
724887Schin		printf("typedef void* %siconv_t;\n", lib);
734887Schin		printf("typedef size_t (*%siconv_f)(%siconv_t, char**, size_t*, char**, size_t*);\n", lib, lib);
744887Schin		printf("\n");
754887Schin		printf("#if _BLD_ast && defined(__EXPORT__)\n");
764887Schin		printf("#define extern		__EXPORT__\n");
774887Schin		printf("#endif\n");
784887Schin		printf("\n");
794887Schin		printf("extern %siconv_t	%siconv_open(const char*, const char*);\n", lib, lib);
804887Schin		printf("extern size_t		%siconv(%siconv_t, char**, size_t*, char**, size_t*);\n", lib, lib);
814887Schin		printf("extern int		%siconv_close(%siconv_t);\n", lib, lib);
824887Schin		printf("extern %siconv_list_t*	%siconv_list(%siconv_list_t*);\n", lib, lib, lib);
834887Schin		printf("extern int		%siconv_name(const char*, char*, size_t);\n", lib);
844887Schin		printf("#if _SFIO_H\n");
854887Schin		printf("extern ssize_t		%siconv_move(%siconv_t, Sfio_t*, Sfio_t*, size_t, size_t*);\n", lib, lib);
864887Schin		printf("extern ssize_t		%siconv_write(%siconv_t, Sfio_t*, char**, size_t*, size_t*);\n", lib, lib);
874887Schin		printf("#else\n");
884887Schin		printf("#if _SFSTDIO_H\n");
894887Schin		printf("extern ssize_t		%siconv_move(%siconv_t, FILE*, FILE*, size_t, size_t*);\n", lib, lib);
904887Schin		printf("extern ssize_t		%siconv_write(%siconv_t, FILE*, char**, size_t*, size_t*);\n", lib, lib);
914887Schin		printf("#endif\n");
924887Schin		printf("#endif\n");
934887Schin		printf("\n");
944887Schin		printf("#undef	extern\n");
954887Schin		printf("\n");
964887Schin		return 0;
974887Schin	}
984887Schin}end
99