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