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
  40 extern "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 
  51 struct _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 
  72 struct _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 
  82 struct _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 
  95 struct _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 
 101 typedef struct _nl_catd_struct *nl_catd;
 102 typedef 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 */
 106 typedef nl_item __nl_item;
 107 
 108 #ifdef  __STDC__
 109 int     catclose(nl_catd);
 110 char    *catgets(nl_catd, int, int, const char *);
 111 nl_catd catopen(const char *, int);
 112 #else
 113 int     catclose();
 114 char    *catgets();
 115 nl_catd catopen();
 116 #endif  /* __STDC__ */
 117 
 118 #ifdef  __cplusplus
 119 }
 120 #endif
 121 
 122 #endif  /* _NL_TYPES_H */