1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22/*
23 *  nl_types.h
24 *
25 * Copyright (c) 1991,1997,2000 by Sun Microsystems, Inc.
26 * All rights reserved.
27 */
28
29/*	Copyright (c) 1988 AT&T	*/
30/*	All Rights Reserved	*/
31
32#ifndef	_NL_TYPES_H
33#define	_NL_TYPES_H
34
35#pragma ident	"%Z%%M%	%I%	%E% SMI"
36
37#include <sys/isa_defs.h>
38
39#ifdef	__cplusplus
40extern "C" {
41#endif
42
43#define	NL_SETD 		1    /* XPG3 Conformant Default set number. */
44#define	NL_CAT_LOCALE 		(-1) /* XPG4 requirement */
45
46#define	_CAT_MAGIC 		0xFF88FF89
47#define	_CAT_HDR_SIZE 		sizeof (struct _cat_hdr)
48#define	_CAT_SET_HDR_SIZE 	sizeof (struct _cat_set_hdr)
49#define	_CAT_MSG_HDR_SIZE 	sizeof (struct _cat_msg_hdr)
50
51struct _cat_hdr
52{
53#if	!defined(_LP64)
54	long __hdr_magic;		/* must contain CAT_MAGIC */
55#else
56	int	__hdr_magic;		/* must contain CAT_MAGIC */
57#endif
58	int __nsets;		/* the number of sets in the catalogue */
59	int __mem;		/* the size of the catalogue; the size	   */
60				/* does not include the size of the header */
61#if	!defined(_LP64)
62	long __msg_hdr_offset;	/* the byte offset of the first message */
63				/* header */
64	long __msg_text_offset;	/* the byte offset of the message text area */
65#else
66	int __msg_hdr_offset;	/* the byte offset of the first message */
67				/* header */
68	int __msg_text_offset;	/* the byte offset of the message text area */
69#endif
70};
71
72struct _cat_set_hdr
73{
74	int __set_no;	/* the set number; must be greater than 0;   */
75			/* should be less than or equal to NL_SETMAX */
76	int __nmsgs;	/* the number of msgs in the set */
77	int __first_msg_hdr;	/* the index of the first message header in */
78				/* the set; the value is not a byte offset, */
79				/* it is a 0-based index		    */
80};
81
82struct _cat_msg_hdr
83{
84	int __msg_no;	/* the message number; must be greater than 0; */
85			/* should be less than or equal to NL_MSGMAX   */
86	int __msg_len;	/* the length of the message; must be greater */
87			/* than or equal to zero; should be less than */
88			/* or equal to NL_TEXTMAX */
89	int __msg_offset; /* the byte offset of the message in the message */
90			/* area; the offset is relative to the start of  */
91			/* the message area, not to the start of the	 */
92			/* catalogue.					 */
93};
94
95struct _nl_catd_struct {
96	void	*__content;	/* mmaped catalogue contents */
97	int	__size;		/* Size of catalogue file */
98	int	__trust;	/* File is from a trusted location */
99};
100
101typedef struct _nl_catd_struct *nl_catd;
102typedef int nl_item;	/* XPG3 Conformant for nl_langinfo(). */
103
104/* The following is just for the compatibility between OSF and Solaris */
105/* Need to be removed later */
106typedef	nl_item	__nl_item;
107
108#ifdef	__STDC__
109int	catclose(nl_catd);
110char	*catgets(nl_catd, int, int, const char *);
111nl_catd catopen(const char *, int);
112#else
113int	catclose();
114char	*catgets();
115nl_catd catopen();
116#endif	/* __STDC__ */
117
118#ifdef	__cplusplus
119}
120#endif
121
122#endif	/* _NL_TYPES_H */
123