xref: /onnv-gate/usr/src/lib/libast/common/include/mc.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 /*
254887Schin  * machine independent binary message catalog interface
264887Schin  *
274887Schin  * file layout
284887Schin  * all numbers are sfputu() format
294887Schin  *
304887Schin  *	4 char magic (^M^S^G0)
314887Schin  *	<method locale YYYY-MM-DD>\0
324887Schin  *	(<optional strings>\0)*
334887Schin  *	\0
344887Schin  *	string table size
354887Schin  *	#msgs total
364887Schin  *	#max set number
374887Schin  *	#set-id 1
384887Schin  *	#msgs in set 1
394887Schin  *	 ...
404887Schin  *	#set-id #sets
414887Schin  *	#msgs in set #sets
424887Schin  *	end of sets (0)
434887Schin  *	msg(1,1) size
444887Schin  *	 ...
454887Schin  *	msg(#sets,#msgs) size
464887Schin  *	string table
474887Schin  */
484887Schin 
494887Schin #ifndef _MC_H
504887Schin #define _MC_H
514887Schin 
524887Schin #include <ast.h>
534887Schin 
544887Schin #define MC_MAGIC	"\015\023\007\000"
554887Schin #define MC_MAGIC_SIZE	4
564887Schin 
574887Schin #define MC_SET_MAX	1023
584887Schin #define MC_NUM_MAX	32767
594887Schin 
604887Schin #define MC_NLS		(1<<10)
614887Schin 
624887Schin #define MC_MESSAGE_SET(s)	mcindex(s,NiL,NiL,NiL)
634887Schin 
644887Schin typedef struct
654887Schin {
664887Schin 	char**		msg;
674887Schin 	int		num;
684887Schin 	int		gen;
694887Schin } Mcset_t;
704887Schin 
714887Schin typedef struct
724887Schin {
734887Schin 	Mcset_t*	set;
744887Schin 	int		num;
754887Schin 	int		gen;
764887Schin 	char*		translation;
774887Schin #ifdef _MC_PRIVATE_
784887Schin 	_MC_PRIVATE_
794887Schin #endif
804887Schin } Mc_t;
814887Schin 
824887Schin #if _BLD_ast && defined(__EXPORT__)
834887Schin #define extern		__EXPORT__
844887Schin #endif
854887Schin 
864887Schin extern char*		mcfind(char*, const char*, const char*, int, int);
874887Schin extern Mc_t*		mcopen(Sfio_t*);
884887Schin extern char*		mcget(Mc_t*, int, int, const char*);
894887Schin extern int		mcput(Mc_t*, int, int, const char*);
904887Schin extern int		mcdump(Mc_t*, Sfio_t*);
914887Schin extern int		mcindex(const char*, char**, int*, int*);
924887Schin extern int		mcclose(Mc_t*);
934887Schin 
944887Schin #undef	extern
954887Schin 
964887Schin #endif
97