1*d874cce4Sray /* $OpenBSD: nl_types.h,v 1.8 2008/06/26 05:42:04 ray Exp $ */ 2deeceb4fSderaadt /* $NetBSD: nl_types.h,v 1.6 1996/05/13 23:11:15 jtc Exp $ */ 3df930be7Sderaadt 4deeceb4fSderaadt /*- 5deeceb4fSderaadt * Copyright (c) 1996 The NetBSD Foundation, Inc. 6deeceb4fSderaadt * All rights reserved. 7deeceb4fSderaadt * 8deeceb4fSderaadt * This code is derived from software contributed to The NetBSD Foundation 9deeceb4fSderaadt * by J.T. Conklin. 10deeceb4fSderaadt * 11deeceb4fSderaadt * Redistribution and use in source and binary forms, with or without 12deeceb4fSderaadt * modification, are permitted provided that the following conditions 13deeceb4fSderaadt * are met: 14deeceb4fSderaadt * 1. Redistributions of source code must retain the above copyright 15deeceb4fSderaadt * notice, this list of conditions and the following disclaimer. 16deeceb4fSderaadt * 2. Redistributions in binary form must reproduce the above copyright 17deeceb4fSderaadt * notice, this list of conditions and the following disclaimer in the 18deeceb4fSderaadt * documentation and/or other materials provided with the distribution. 19deeceb4fSderaadt * 20deeceb4fSderaadt * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 21deeceb4fSderaadt * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22deeceb4fSderaadt * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23deeceb4fSderaadt * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE 24deeceb4fSderaadt * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25deeceb4fSderaadt * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26deeceb4fSderaadt * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27deeceb4fSderaadt * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28deeceb4fSderaadt * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29deeceb4fSderaadt * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30deeceb4fSderaadt * POSSIBILITY OF SUCH DAMAGE. 31deeceb4fSderaadt */ 32df930be7Sderaadt 33df930be7Sderaadt #ifndef _NL_TYPES_H_ 34df930be7Sderaadt #define _NL_TYPES_H_ 35df930be7Sderaadt #include <sys/cdefs.h> 36df930be7Sderaadt 37deeceb4fSderaadt #ifdef _NLS_PRIVATE 38deeceb4fSderaadt /* 39deeceb4fSderaadt * MESSAGE CATALOG FILE FORMAT. 40deeceb4fSderaadt * 41deeceb4fSderaadt * The NetBSD message catalog format is similar to the format used by 42deeceb4fSderaadt * Svr4 systems. The differences are: 43deeceb4fSderaadt * * fixed byte order (big endian) 44deeceb4fSderaadt * * fixed data field sizes 45deeceb4fSderaadt * 46deeceb4fSderaadt * A message catalog contains four data types: a catalog header, one 47deeceb4fSderaadt * or more set headers, one or more message headers, and one or more 48deeceb4fSderaadt * text strings. 49deeceb4fSderaadt */ 50df930be7Sderaadt 51deeceb4fSderaadt #define _NLS_MAGIC 0xff88ff89 52deeceb4fSderaadt 53deeceb4fSderaadt struct _nls_cat_hdr { 54deeceb4fSderaadt int32_t __magic; 55deeceb4fSderaadt int32_t __nsets; 56deeceb4fSderaadt int32_t __mem; 57deeceb4fSderaadt int32_t __msg_hdr_offset; 58deeceb4fSderaadt int32_t __msg_txt_offset; 59deeceb4fSderaadt } ; 60deeceb4fSderaadt 61deeceb4fSderaadt struct _nls_set_hdr { 62deeceb4fSderaadt int32_t __setno; /* set number: 0 < x <= NL_SETMAX */ 63deeceb4fSderaadt int32_t __nmsgs; /* number of messages in the set */ 64deeceb4fSderaadt int32_t __index; /* index of first msg_hdr in msg_hdr table */ 65deeceb4fSderaadt } ; 66deeceb4fSderaadt 67deeceb4fSderaadt struct _nls_msg_hdr { 68deeceb4fSderaadt int32_t __msgno; /* msg number: 0 < x <= NL_MSGMAX */ 69deeceb4fSderaadt int32_t __msglen; 70deeceb4fSderaadt int32_t __offset; 71deeceb4fSderaadt } ; 72deeceb4fSderaadt 73deeceb4fSderaadt #endif 74deeceb4fSderaadt 75deeceb4fSderaadt #define NL_SETD 1 76deeceb4fSderaadt #define NL_CAT_LOCALE 1 77deeceb4fSderaadt 780dee31f7Stholo typedef struct _nl_catd { 79deeceb4fSderaadt void *__data; 80deeceb4fSderaadt int __size; 81deeceb4fSderaadt } *nl_catd; 82deeceb4fSderaadt 83df930be7Sderaadt typedef long nl_item; 84df930be7Sderaadt 8591bce978Sderaadt __BEGIN_DECLS 86c72b5b24Smillert extern nl_catd catopen(const char *, int); 87c72b5b24Smillert extern char *catgets(nl_catd, int, int, const char *); 88c72b5b24Smillert extern int catclose(nl_catd); 8991bce978Sderaadt __END_DECLS 90df930be7Sderaadt 91df930be7Sderaadt #endif /* _NL_TYPES_H_ */ 92