Module Name: src
Committed By: tnozaki
Date: Sun Jun 13 04:14:57 UTC 2010
Modified Files:
src/lib/libc/citrus: citrus_lc_ctype.c citrus_lc_messages.c
citrus_lc_monetary.c citrus_lc_numeric.c citrus_lc_time.c
src/lib/libc/locale: _wctrans.c _wctype.c bsdctype.c ctype_local.h
global_locale.c iswctype_mb.c localeio_lc_ctype.c multibyte_amd1.c
multibyte_c90.c rune.c runeglue.c runetable.c runetype_local.h
src/usr.bin/mklocale: lex.l yacc.y
src/usr.sbin/chrtbl: ctypeio.c
Added Files:
src/lib/libc/locale: bsdctype_file.h bsdctype_local.h runetype_file.h
Removed Files:
src/lib/libc/locale: bsdctype.h rune_local.h
Log Message:
1. split runetype_local.h -> runetype_file.h
and remove renameing _Rune* -> _NBRune* namespace protection.
FreeBSD traditionaly exposes struct _Rune* in runetype.h
which included by ctype.h. it may cause conflicting type error
in our cross build process, former we use renaming namespace
to avoid this problem, now i reworked more resonable way.
2. merge rune_local.h to runetype_local.h, and remove it.
3. split bsdctype.h -> bsdctype_{file,local}.h
To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/lib/libc/citrus/citrus_lc_ctype.c
cvs rdiff -u -r1.3 -r1.4 src/lib/libc/citrus/citrus_lc_messages.c \
src/lib/libc/citrus/citrus_lc_monetary.c \
src/lib/libc/citrus/citrus_lc_numeric.c
cvs rdiff -u -r1.4 -r1.5 src/lib/libc/citrus/citrus_lc_time.c
cvs rdiff -u -r1.16 -r1.17 src/lib/libc/locale/_wctrans.c
cvs rdiff -u -r1.8 -r1.9 src/lib/libc/locale/_wctype.c \
src/lib/libc/locale/multibyte_amd1.c
cvs rdiff -u -r1.6 -r1.7 src/lib/libc/locale/bsdctype.c
cvs rdiff -u -r1.5 -r0 src/lib/libc/locale/bsdctype.h
cvs rdiff -u -r0 -r1.1 src/lib/libc/locale/bsdctype_file.h \
src/lib/libc/locale/bsdctype_local.h src/lib/libc/locale/runetype_file.h
cvs rdiff -u -r1.3 -r1.4 src/lib/libc/locale/ctype_local.h
cvs rdiff -u -r1.9 -r1.10 src/lib/libc/locale/global_locale.c \
src/lib/libc/locale/runetype_local.h
cvs rdiff -u -r1.10 -r1.11 src/lib/libc/locale/iswctype_mb.c
cvs rdiff -u -r1.4 -r1.5 src/lib/libc/locale/localeio_lc_ctype.c
cvs rdiff -u -r1.7 -r1.8 src/lib/libc/locale/multibyte_c90.c
cvs rdiff -u -r1.37 -r1.38 src/lib/libc/locale/rune.c
cvs rdiff -u -r1.16 -r0 src/lib/libc/locale/rune_local.h
cvs rdiff -u -r1.19 -r1.20 src/lib/libc/locale/runeglue.c
cvs rdiff -u -r1.25 -r1.26 src/lib/libc/locale/runetable.c
cvs rdiff -u -r1.17 -r1.18 src/usr.bin/mklocale/lex.l
cvs rdiff -u -r1.30 -r1.31 src/usr.bin/mklocale/yacc.y
cvs rdiff -u -r1.4 -r1.5 src/usr.sbin/chrtbl/ctypeio.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/citrus/citrus_lc_ctype.c
diff -u src/lib/libc/citrus/citrus_lc_ctype.c:1.7 src/lib/libc/citrus/citrus_lc_ctype.c:1.8
--- src/lib/libc/citrus/citrus_lc_ctype.c:1.7 Mon Jun 7 13:52:29 2010
+++ src/lib/libc/citrus/citrus_lc_ctype.c Sun Jun 13 04:14:56 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: citrus_lc_ctype.c,v 1.7 2010/06/07 13:52:29 tnozaki Exp $ */
+/* $NetBSD: citrus_lc_ctype.c,v 1.8 2010/06/13 04:14:56 tnozaki Exp $ */
/*-
* Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: citrus_lc_ctype.c,v 1.7 2010/06/07 13:52:29 tnozaki Exp $");
+__RCSID("$NetBSD: citrus_lc_ctype.c,v 1.8 2010/06/13 04:14:56 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include "reentrant.h"
@@ -57,7 +57,7 @@
#include "citrus_module.h"
#include "citrus_ctype.h"
-#include "rune_local.h"
+#include "runetype_local.h"
#include "multibyte.h"
/*
Index: src/lib/libc/citrus/citrus_lc_messages.c
diff -u src/lib/libc/citrus/citrus_lc_messages.c:1.3 src/lib/libc/citrus/citrus_lc_messages.c:1.4
--- src/lib/libc/citrus/citrus_lc_messages.c:1.3 Sat May 22 08:13:18 2010
+++ src/lib/libc/citrus/citrus_lc_messages.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: citrus_lc_messages.c,v 1.3 2010/05/22 08:13:18 tnozaki Exp $ */
+/* $NetBSD: citrus_lc_messages.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: citrus_lc_messages.c,v 1.3 2010/05/22 08:13:18 tnozaki Exp $");
+__RCSID("$NetBSD: citrus_lc_messages.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include "namespace.h"
@@ -61,7 +61,7 @@
#include "citrus_db.h"
#include "citrus_db_hash.h"
#include "citrus_memstream.h"
-#include "rune_local.h"
+#include "runetype_local.h"
/*
* macro required by all template headers
Index: src/lib/libc/citrus/citrus_lc_monetary.c
diff -u src/lib/libc/citrus/citrus_lc_monetary.c:1.3 src/lib/libc/citrus/citrus_lc_monetary.c:1.4
--- src/lib/libc/citrus/citrus_lc_monetary.c:1.3 Sat May 22 08:13:18 2010
+++ src/lib/libc/citrus/citrus_lc_monetary.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: citrus_lc_monetary.c,v 1.3 2010/05/22 08:13:18 tnozaki Exp $ */
+/* $NetBSD: citrus_lc_monetary.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: citrus_lc_monetary.c,v 1.3 2010/05/22 08:13:18 tnozaki Exp $");
+__RCSID("$NetBSD: citrus_lc_monetary.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include "namespace.h"
@@ -61,7 +61,7 @@
#include "citrus_db.h"
#include "citrus_db_hash.h"
#include "citrus_memstream.h"
-#include "rune_local.h"
+#include "runetype_local.h"
#include "fix_grouping.h"
#include "citrus_fix_grouping.h"
Index: src/lib/libc/citrus/citrus_lc_numeric.c
diff -u src/lib/libc/citrus/citrus_lc_numeric.c:1.3 src/lib/libc/citrus/citrus_lc_numeric.c:1.4
--- src/lib/libc/citrus/citrus_lc_numeric.c:1.3 Sat May 22 08:13:18 2010
+++ src/lib/libc/citrus/citrus_lc_numeric.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: citrus_lc_numeric.c,v 1.3 2010/05/22 08:13:18 tnozaki Exp $ */
+/* $NetBSD: citrus_lc_numeric.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: citrus_lc_numeric.c,v 1.3 2010/05/22 08:13:18 tnozaki Exp $");
+__RCSID("$NetBSD: citrus_lc_numeric.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include "namespace.h"
@@ -61,7 +61,7 @@
#include "citrus_db.h"
#include "citrus_db_hash.h"
#include "citrus_memstream.h"
-#include "rune_local.h"
+#include "runetype_local.h"
#include "fix_grouping.h"
#include "citrus_fix_grouping.h"
Index: src/lib/libc/citrus/citrus_lc_time.c
diff -u src/lib/libc/citrus/citrus_lc_time.c:1.4 src/lib/libc/citrus/citrus_lc_time.c:1.5
--- src/lib/libc/citrus/citrus_lc_time.c:1.4 Sat May 22 08:13:18 2010
+++ src/lib/libc/citrus/citrus_lc_time.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: citrus_lc_time.c,v 1.4 2010/05/22 08:13:18 tnozaki Exp $ */
+/* $NetBSD: citrus_lc_time.c,v 1.5 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: citrus_lc_time.c,v 1.4 2010/05/22 08:13:18 tnozaki Exp $");
+__RCSID("$NetBSD: citrus_lc_time.c,v 1.5 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include "namespace.h"
@@ -61,7 +61,7 @@
#include "citrus_db.h"
#include "citrus_db_hash.h"
#include "citrus_memstream.h"
-#include "rune_local.h"
+#include "runetype_local.h"
/*
* macro required by all template headers
Index: src/lib/libc/locale/_wctrans.c
diff -u src/lib/libc/locale/_wctrans.c:1.16 src/lib/libc/locale/_wctrans.c:1.17
--- src/lib/libc/locale/_wctrans.c:1.16 Wed Jun 2 15:47:25 2010
+++ src/lib/libc/locale/_wctrans.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: _wctrans.c,v 1.16 2010/06/02 15:47:25 tnozaki Exp $ */
+/* $NetBSD: _wctrans.c,v 1.17 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2003 Citrus Project,
@@ -60,7 +60,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _wctrans.c,v 1.16 2010/06/02 15:47:25 tnozaki Exp $");
+__RCSID("$NetBSD: _wctrans.c,v 1.17 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include "namespace.h"
@@ -69,7 +69,7 @@
#include <assert.h>
#include <wctype.h>
-#include "rune_local.h"
+#include "runetype_local.h"
#include "_wctrans_local.h"
/*
Index: src/lib/libc/locale/_wctype.c
diff -u src/lib/libc/locale/_wctype.c:1.8 src/lib/libc/locale/_wctype.c:1.9
--- src/lib/libc/locale/_wctype.c:1.8 Wed Jun 2 15:47:25 2010
+++ src/lib/libc/locale/_wctype.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: _wctype.c,v 1.8 2010/06/02 15:47:25 tnozaki Exp $ */
+/* $NetBSD: _wctype.c,v 1.9 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2008 Citrus Project,
@@ -60,14 +60,14 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _wctype.c,v 1.8 2010/06/02 15:47:25 tnozaki Exp $");
+__RCSID("$NetBSD: _wctype.c,v 1.9 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
#include <assert.h>
#include <wctype.h>
-#include "rune_local.h"
+#include "runetype_local.h"
#include "_wctrans_local.h"
#include "_wctype_local.h"
Index: src/lib/libc/locale/multibyte_amd1.c
diff -u src/lib/libc/locale/multibyte_amd1.c:1.8 src/lib/libc/locale/multibyte_amd1.c:1.9
--- src/lib/libc/locale/multibyte_amd1.c:1.8 Sat May 22 07:18:43 2010
+++ src/lib/libc/locale/multibyte_amd1.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: multibyte_amd1.c,v 1.8 2010/05/22 07:18:43 tnozaki Exp $ */
+/* $NetBSD: multibyte_amd1.c,v 1.9 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2002, 2008 Citrus Project,
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: multibyte_amd1.c,v 1.8 2010/05/22 07:18:43 tnozaki Exp $");
+__RCSID("$NetBSD: multibyte_amd1.c,v 1.9 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
@@ -43,7 +43,7 @@
#include "citrus_module.h"
#include "citrus_ctype.h"
-#include "rune_local.h"
+#include "runetype_local.h"
#include "multibyte.h"
#define _RUNE_LOCALE() \
Index: src/lib/libc/locale/bsdctype.c
diff -u src/lib/libc/locale/bsdctype.c:1.6 src/lib/libc/locale/bsdctype.c:1.7
--- src/lib/libc/locale/bsdctype.c:1.6 Wed Jun 2 16:04:52 2010
+++ src/lib/libc/locale/bsdctype.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: bsdctype.c,v 1.6 2010/06/02 16:04:52 tnozaki Exp $ */
+/* $NetBSD: bsdctype.c,v 1.7 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: bsdctype.c,v 1.6 2010/06/02 16:04:52 tnozaki Exp $");
+__RCSID("$NetBSD: bsdctype.c,v 1.7 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include <sys/stat.h>
@@ -41,7 +41,7 @@
#include <string.h>
#include <unistd.h>
-#include "bsdctype.h"
+#include "bsdctype_local.h"
const _BSDCTypeLocale _DefaultBSDCTypeLocale = {
_C_ctype_,
Index: src/lib/libc/locale/ctype_local.h
diff -u src/lib/libc/locale/ctype_local.h:1.3 src/lib/libc/locale/ctype_local.h:1.4
--- src/lib/libc/locale/ctype_local.h:1.3 Sun May 30 11:36:12 2010
+++ src/lib/libc/locale/ctype_local.h Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: ctype_local.h,v 1.3 2010/05/30 11:36:12 tnozaki Exp $ */
+/* $NetBSD: ctype_local.h,v 1.4 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c) 2010 Citrus Project,
@@ -33,9 +33,6 @@
#define _CTYPE_NUM_CHARS (1 << CHAR_BIT)
#define _CTYPE_CACHE_SIZE (1 << 8)
-#define _CTYPE_ID "BSDCTYPE"
-#define _CTYPE_REV 2
-
extern const unsigned char _C_ctype_[];
extern const short _C_toupper_[];
extern const short _C_tolower_[];
Index: src/lib/libc/locale/global_locale.c
diff -u src/lib/libc/locale/global_locale.c:1.9 src/lib/libc/locale/global_locale.c:1.10
--- src/lib/libc/locale/global_locale.c:1.9 Tue Jun 1 13:52:08 2010
+++ src/lib/libc/locale/global_locale.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: global_locale.c,v 1.9 2010/06/01 13:52:08 tnozaki Exp $ */
+/* $NetBSD: global_locale.c,v 1.10 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: global_locale.c,v 1.9 2010/06/01 13:52:08 tnozaki Exp $");
+__RCSID("$NetBSD: global_locale.c,v 1.10 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
@@ -40,9 +40,9 @@
#include <locale.h>
#include <stdlib.h>
#ifdef WITH_RUNE
-#include "rune_local.h"
+#include "runetype_local.h"
#else
-#include "bsdctype.h"
+#include "bsdctype_locale.h"
#endif
#include "setlocale_local.h"
Index: src/lib/libc/locale/runetype_local.h
diff -u src/lib/libc/locale/runetype_local.h:1.9 src/lib/libc/locale/runetype_local.h:1.10
--- src/lib/libc/locale/runetype_local.h:1.9 Sat Jun 5 16:37:13 2010
+++ src/lib/libc/locale/runetype_local.h Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: runetype_local.h,v 1.9 2010/06/05 16:37:13 tnozaki Exp $ */
+/* $NetBSD: runetype_local.h,v 1.10 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c) 1993
@@ -31,6 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
+ * @(#)rune.h 8.1 (Berkeley) 6/27/93
* @(#)runetype.h 8.1 (Berkeley) 6/2/93
*/
@@ -39,95 +40,11 @@
#include <sys/cdefs.h>
#include <sys/types.h>
+#include <stdio.h>
-#include "ctype_local.h"
+#include "runetype_file.h"
-/* for cross host tools on older systems */
-#ifndef UINT32_C
-/* assumes sizeof(unsigned int)>=4 */
-#define UINT32_C(c) ((uint32_t)(c##U))
-#endif
-
-typedef uint32_t __nbrune_t;
-typedef uint64_t __runepad_t;
-
-#define _NB_RUNE_ISCACHED(c) ((c)>=0 && (c)<_CTYPE_CACHE_SIZE)
-
-#define _NB_DEFAULT_INVALID_RUNE ((__nbrune_t)-3)
-
-/*
- * The lower 8 bits of runetype[] contain the digit value of the rune.
- */
-typedef uint32_t _RuneType;
-#define _RUNETYPE_A UINT32_C(0x00000100) /* Alpha */
-#define _RUNETYPE_C UINT32_C(0x00000200) /* Control */
-#define _RUNETYPE_D UINT32_C(0x00000400) /* Digit */
-#define _RUNETYPE_G UINT32_C(0x00000800) /* Graph */
-#define _RUNETYPE_L UINT32_C(0x00001000) /* Lower */
-#define _RUNETYPE_P UINT32_C(0x00002000) /* Punct */
-#define _RUNETYPE_S UINT32_C(0x00004000) /* Space */
-#define _RUNETYPE_U UINT32_C(0x00008000) /* Upper */
-#define _RUNETYPE_X UINT32_C(0x00010000) /* X digit */
-#define _RUNETYPE_B UINT32_C(0x00020000) /* Blank */
-#define _RUNETYPE_R UINT32_C(0x00040000) /* Print */
-#define _RUNETYPE_I UINT32_C(0x00080000) /* Ideogram */
-#define _RUNETYPE_T UINT32_C(0x00100000) /* Special */
-#define _RUNETYPE_Q UINT32_C(0x00200000) /* Phonogram */
-#define _RUNETYPE_SWM UINT32_C(0xc0000000)/* Mask to get screen width data */
-#define _RUNETYPE_SWS 30 /* Bits to shift to get width */
-#define _RUNETYPE_SW0 UINT32_C(0x20000000) /* 0 width character */
-#define _RUNETYPE_SW1 UINT32_C(0x40000000) /* 1 width character */
-#define _RUNETYPE_SW2 UINT32_C(0x80000000) /* 2 width character */
-#define _RUNETYPE_SW3 UINT32_C(0xc0000000) /* 3 width character */
-
-
-/*
- * rune file format. network endian.
- */
-typedef struct {
- int32_t fre_min; /* First rune of the range */
- int32_t fre_max; /* Last rune (inclusive) of the range */
- int32_t fre_map; /* What first maps to in maps */
- uint32_t fre_pad1; /* backward compatibility */
- __runepad_t fre_pad2; /* backward compatibility */
-} __packed _FileRuneEntry;
-
-
-typedef struct {
- uint32_t frr_nranges; /* Number of ranges stored */
- uint32_t frr_pad1; /* backward compatibility */
- __runepad_t frr_pad2; /* backward compatibility */
-} __packed _FileRuneRange;
-
-
-typedef struct {
- char frl_magic[8]; /* Magic saying what version we are */
- char frl_encoding[32];/* ASCII name of this encoding */
-
- __runepad_t frl_pad1; /* backward compatibility */
- __runepad_t frl_pad2; /* backward compatibility */
- int32_t frl_invalid_rune;
- uint32_t frl_pad3; /* backward compatibility */
-
- _RuneType frl_runetype[_CTYPE_CACHE_SIZE];
- int32_t frl_maplower[_CTYPE_CACHE_SIZE];
- int32_t frl_mapupper[_CTYPE_CACHE_SIZE];
-
- /*
- * The following are to deal with Runes larger than _CTYPE_CACHE_SIZE - 1.
- * Their data is actually contiguous with this structure so as to make
- * it easier to read/write from/to disk.
- */
- _FileRuneRange frl_runetype_ext;
- _FileRuneRange frl_maplower_ext;
- _FileRuneRange frl_mapupper_ext;
-
- __runepad_t frl_pad4; /* backward compatibility */
- int32_t frl_variable_len;/* how long that data is */
- uint32_t frl_pad5; /* backward compatibility */
-
- /* variable size data follows */
-} __packed _FileRuneLocale;
+#define _RUNE_ISCACHED(c) ((c)>=0 && (c)<_CTYPE_CACHE_SIZE)
/*
@@ -138,13 +55,13 @@
__nbrune_t re_max; /* Last rune (inclusive) of the range */
__nbrune_t re_map; /* What first maps to in maps */
_RuneType *re_rune_types; /* Array of types in range */
-} _NBRuneEntry;
+} _RuneEntry;
typedef struct {
uint32_t rr_nranges; /* Number of ranges stored */
- _NBRuneEntry *rr_rune_ranges;
-} _NBRuneRange;
+ _RuneEntry *rr_rune_ranges;
+} _RuneRange;
/*
@@ -153,7 +70,7 @@
typedef struct _WCTransEntry {
const char *te_name;
__nbrune_t *te_cached;
- _NBRuneRange *te_extmap;
+ _RuneRange *te_extmap;
} _WCTransEntry;
#define _WCTRANS_INDEX_LOWER 0
#define _WCTRANS_INDEX_UPPER 1
@@ -184,7 +101,7 @@
* ctype stuffs
*/
-typedef struct _NBRuneLocale {
+typedef struct _RuneLocale {
/*
* copied from _FileRuneLocale
*/
@@ -194,9 +111,9 @@
_RuneType rl_runetype[_CTYPE_CACHE_SIZE];
__nbrune_t rl_maplower[_CTYPE_CACHE_SIZE];
__nbrune_t rl_mapupper[_CTYPE_CACHE_SIZE];
- _NBRuneRange rl_runetype_ext;
- _NBRuneRange rl_maplower_ext;
- _NBRuneRange rl_mapupper_ext;
+ _RuneRange rl_runetype_ext;
+ _RuneRange rl_maplower_ext;
+ _RuneRange rl_mapupper_ext;
void *rl_variable;
size_t rl_variable_len;
@@ -212,13 +129,22 @@
const unsigned char *rl_ctype_tab;
const short *rl_tolower_tab;
const short *rl_toupper_tab;
-} _NBRuneLocale;
+} _RuneLocale;
+/*
+ * global variables
+ */
+extern const _RuneLocale _DefaultRuneLocale;
+extern const _RuneLocale *_CurrentRuneLocale;
-/* magic number for LC_CTYPE (rune)locale declaration */
-#define _NB_RUNE_MAGIC_1 "RuneCT10" /* Indicates version 0 of RuneLocale */
+__BEGIN_DECLS
+/* rune.c */
+extern _RuneLocale *_Read_RuneMagi(FILE *fp);
+extern _RuneLocale *_Read_CTypeAsRune(FILE *fp);
+extern void _NukeRune(_RuneLocale *);
-/* codeset tag */
-#define _NB_RUNE_CODESET "CODESET="
+/* runeglue.c */
+extern int __runetable_to_netbsd_ctype(_RuneLocale *);
+__END_DECLS
#endif /* !_RUNETYPE_LOCAL_H_ */
Index: src/lib/libc/locale/iswctype_mb.c
diff -u src/lib/libc/locale/iswctype_mb.c:1.10 src/lib/libc/locale/iswctype_mb.c:1.11
--- src/lib/libc/locale/iswctype_mb.c:1.10 Sat Jun 12 05:54:05 2010
+++ src/lib/libc/locale/iswctype_mb.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: iswctype_mb.c,v 1.10 2010/06/12 05:54:05 tnozaki Exp $ */
+/* $NetBSD: iswctype_mb.c,v 1.11 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: iswctype_mb.c,v 1.10 2010/06/12 05:54:05 tnozaki Exp $");
+__RCSID("$NetBSD: iswctype_mb.c,v 1.11 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include "namespace.h"
@@ -38,11 +38,12 @@
#define __SETLOCALE_SOURCE__
#include <locale.h>
#include <string.h>
+#include <wchar.h>
#include <wctype.h>
#include "setlocale_local.h"
-#include "rune_local.h"
+#include "runetype_local.h"
#include "_wctype_local.h"
#include "_wctrans_local.h"
Index: src/lib/libc/locale/localeio_lc_ctype.c
diff -u src/lib/libc/locale/localeio_lc_ctype.c:1.4 src/lib/libc/locale/localeio_lc_ctype.c:1.5
--- src/lib/libc/locale/localeio_lc_ctype.c:1.4 Tue Jun 1 18:00:28 2010
+++ src/lib/libc/locale/localeio_lc_ctype.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: localeio_lc_ctype.c,v 1.4 2010/06/01 18:00:28 tnozaki Exp $ */
+/* $NetBSD: localeio_lc_ctype.c,v 1.5 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: localeio_lc_ctype.c,v 1.4 2010/06/01 18:00:28 tnozaki Exp $");
+__RCSID("$NetBSD: localeio_lc_ctype.c,v 1.5 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include "reentrant.h"
@@ -45,10 +45,10 @@
#include <stdio.h>
#include <string.h>
-#include "setlocale_local.h"
-
+#include "bsdctype_local.h"
#include "aliasname_local.h"
-#include "bsdctype.h"
+
+#include "setlocale_local.h"
/*
* macro required by all template headers
Index: src/lib/libc/locale/multibyte_c90.c
diff -u src/lib/libc/locale/multibyte_c90.c:1.7 src/lib/libc/locale/multibyte_c90.c:1.8
--- src/lib/libc/locale/multibyte_c90.c:1.7 Sat May 22 07:18:43 2010
+++ src/lib/libc/locale/multibyte_c90.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: multibyte_c90.c,v 1.7 2010/05/22 07:18:43 tnozaki Exp $ */
+/* $NetBSD: multibyte_c90.c,v 1.8 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)2002, 2008 Citrus Project,
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: multibyte_c90.c,v 1.7 2010/05/22 07:18:43 tnozaki Exp $");
+__RCSID("$NetBSD: multibyte_c90.c,v 1.8 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
@@ -44,7 +44,7 @@
#include "citrus_module.h"
#include "citrus_ctype.h"
-#include "rune_local.h"
+#include "runetype_local.h"
#define _RUNE_LOCALE() \
((_RuneLocale *)(*_current_locale())->part_impl[(size_t)LC_CTYPE])
Index: src/lib/libc/locale/rune.c
diff -u src/lib/libc/locale/rune.c:1.37 src/lib/libc/locale/rune.c:1.38
--- src/lib/libc/locale/rune.c:1.37 Sat Jun 12 05:54:05 2010
+++ src/lib/libc/locale/rune.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: rune.c,v 1.37 2010/06/12 05:54:05 tnozaki Exp $ */
+/* $NetBSD: rune.c,v 1.38 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
@@ -63,7 +63,7 @@
#if 0
static char sccsid[] = "@(#)rune.c 8.1 (Berkeley) 6/4/93";
#else
-__RCSID("$NetBSD: rune.c,v 1.37 2010/06/12 05:54:05 tnozaki Exp $");
+__RCSID("$NetBSD: rune.c,v 1.38 2010/06/13 04:14:57 tnozaki Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -81,8 +81,8 @@
#include "citrus_module.h"
#include "citrus_ctype.h"
-#include "bsdctype.h"
-#include "rune_local.h"
+#include "bsdctype_local.h"
+#include "runetype_local.h"
static int readrange __P((_RuneLocale *, _RuneRange *, _FileRuneRange *, void *, FILE *));
static void _freeentry __P((_RuneRange *));
@@ -251,7 +251,7 @@
if (fread(&frl, sizeof(frl), 1, fp) != 1)
return NULL;
- if (memcmp(frl.frl_magic, _RUNE_MAGIC_1, sizeof(frl.frl_magic)))
+ if (memcmp(frl.frl_magic, _RUNECT10_MAGIC, sizeof(frl.frl_magic)))
return NULL;
hostdatalen = sizeof(*rl) + ntohl((u_int32_t)frl.frl_variable_len) +
@@ -416,7 +416,7 @@
rl = (_RuneLocale *)(void *)hostdata;
rl->rl_variable = NULL;
- memcpy(rl->rl_magic, _RUNE_MAGIC_1, sizeof(rl->rl_magic));
+ memcpy(rl->rl_magic, _RUNECT10_MAGIC, sizeof(rl->rl_magic));
memcpy(rl->rl_encoding, "NONE", 4);
rl->rl_invalid_rune = _DefaultRuneLocale.rl_invalid_rune; /*XXX*/
Index: src/lib/libc/locale/runeglue.c
diff -u src/lib/libc/locale/runeglue.c:1.19 src/lib/libc/locale/runeglue.c:1.20
--- src/lib/libc/locale/runeglue.c:1.19 Sat Jun 12 05:54:05 2010
+++ src/lib/libc/locale/runeglue.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: runeglue.c,v 1.19 2010/06/12 05:54:05 tnozaki Exp $ */
+/* $NetBSD: runeglue.c,v 1.20 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
@@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: runeglue.c,v 1.19 2010/06/12 05:54:05 tnozaki Exp $");
+__RCSID("$NetBSD: runeglue.c,v 1.20 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
@@ -49,7 +49,7 @@
#include "citrus_module.h"
#include "citrus_ctype.h"
-#include "rune_local.h"
+#include "runetype_local.h"
#if EOF != -1
#error "EOF != -1"
Index: src/lib/libc/locale/runetable.c
diff -u src/lib/libc/locale/runetable.c:1.25 src/lib/libc/locale/runetable.c:1.26
--- src/lib/libc/locale/runetable.c:1.25 Sat Jun 12 05:54:05 2010
+++ src/lib/libc/locale/runetable.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: runetable.c,v 1.25 2010/06/12 05:54:05 tnozaki Exp $ */
+/* $NetBSD: runetable.c,v 1.26 2010/06/13 04:14:57 tnozaki Exp $ */
/*-
* Copyright (c) 1993
@@ -39,7 +39,7 @@
#if 0
static char sccsid[] = "@(#)table.c 8.1 (Berkeley) 6/27/93";
#else
-__RCSID("$NetBSD: runetable.c,v 1.25 2010/06/12 05:54:05 tnozaki Exp $");
+__RCSID("$NetBSD: runetable.c,v 1.26 2010/06/13 04:14:57 tnozaki Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -49,11 +49,10 @@
#include "citrus_module.h"
#include "citrus_ctype.h"
-
-#include "rune_local.h"
+#include "runetype_local.h"
const _RuneLocale _DefaultRuneLocale = {
- _RUNE_MAGIC_1,
+ _RUNECT10_MAGIC,
"NONE",
_DEFAULT_INVALID_RUNE,
Index: src/usr.bin/mklocale/lex.l
diff -u src/usr.bin/mklocale/lex.l:1.17 src/usr.bin/mklocale/lex.l:1.18
--- src/usr.bin/mklocale/lex.l:1.17 Sat Jun 12 02:51:34 2010
+++ src/usr.bin/mklocale/lex.l Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: lex.l,v 1.17 2010/06/12 02:51:34 tnozaki Exp $ */
+/* $NetBSD: lex.l,v 1.18 2010/06/13 04:14:57 tnozaki Exp $ */
%{
/*-
@@ -42,7 +42,7 @@
#if 0
static char sccsid[] = "@(#)lex.l 8.1 (Berkeley) 6/6/93";
#else
-__RCSID("$NetBSD: lex.l,v 1.17 2010/06/12 02:51:34 tnozaki Exp $");
+__RCSID("$NetBSD: lex.l,v 1.18 2010/06/13 04:14:57 tnozaki Exp $");
#endif
#endif /* not lint */
@@ -52,7 +52,7 @@
#include "citrus_namespace.h"
#include "citrus_bcs.h"
-#include "runetype_local.h"
+#include "runetype_file.h"
#include "ldef.h"
#include "yacc.h"
Index: src/usr.bin/mklocale/yacc.y
diff -u src/usr.bin/mklocale/yacc.y:1.30 src/usr.bin/mklocale/yacc.y:1.31
--- src/usr.bin/mklocale/yacc.y:1.30 Sat Jun 12 02:51:34 2010
+++ src/usr.bin/mklocale/yacc.y Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: yacc.y,v 1.30 2010/06/12 02:51:34 tnozaki Exp $ */
+/* $NetBSD: yacc.y,v 1.31 2010/06/13 04:14:57 tnozaki Exp $ */
%{
/*-
@@ -43,7 +43,7 @@
static char sccsid[] = "@(#)yacc.y 8.1 (Berkeley) 6/6/93";
static char rcsid[] = "$FreeBSD$";
#else
-__RCSID("$NetBSD: yacc.y,v 1.30 2010/06/12 02:51:34 tnozaki Exp $");
+__RCSID("$NetBSD: yacc.y,v 1.31 2010/06/13 04:14:57 tnozaki Exp $");
#endif
#endif /* not lint */
@@ -60,7 +60,7 @@
#include <unistd.h>
#include <ctype.h>
-#include "runetype_local.h"
+#include "runetype_file.h"
#include "ldef.h"
@@ -313,8 +313,8 @@
maplower.map[x] = x;
}
- new_locale.frl_invalid_rune = htonl((u_int32_t)_NB_DEFAULT_INVALID_RUNE);
- memcpy(new_locale.frl_magic, _NB_RUNE_MAGIC_1, sizeof(new_locale.frl_magic));
+ new_locale.frl_invalid_rune = htonl((u_int32_t)_DEFAULT_INVALID_RUNE);
+ memcpy(new_locale.frl_magic, _RUNECT10_MAGIC, sizeof(new_locale.frl_magic));
yyparse();
Index: src/usr.sbin/chrtbl/ctypeio.c
diff -u src/usr.sbin/chrtbl/ctypeio.c:1.4 src/usr.sbin/chrtbl/ctypeio.c:1.5
--- src/usr.sbin/chrtbl/ctypeio.c:1.4 Sat Jun 12 18:02:31 2010
+++ src/usr.sbin/chrtbl/ctypeio.c Sun Jun 13 04:14:57 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: ctypeio.c,v 1.4 2010/06/12 18:02:31 tnozaki Exp $ */
+/* $NetBSD: ctypeio.c,v 1.5 2010/06/13 04:14:57 tnozaki Exp $ */
/*
* Copyright (c) 1997 Christos Zoulas. All rights reserved.
@@ -26,7 +26,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: ctypeio.c,v 1.4 2010/06/12 18:02:31 tnozaki Exp $");
+__RCSID("$NetBSD: ctypeio.c,v 1.5 2010/06/13 04:14:57 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
@@ -38,7 +38,7 @@
#include <string.h>
#include <unistd.h>
-#include "ctype_local.h"
+#include "bsdctype_local.h"
#include "ctypeio.h"
int
Added files:
Index: src/lib/libc/locale/bsdctype_file.h
diff -u /dev/null src/lib/libc/locale/bsdctype_file.h:1.1
--- /dev/null Sun Jun 13 04:14:58 2010
+++ src/lib/libc/locale/bsdctype_file.h Sun Jun 13 04:14:57 2010
@@ -0,0 +1,46 @@
+/* $NetBSD: bsdctype_file.h,v 1.1 2010/06/13 04:14:57 tnozaki Exp $ */
+
+/*-
+ * Copyright (c)2008 Citrus Project,
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _BSDCTYPE_FILE_H_
+#define _BSDCTYPE_FILE_H_
+
+#include "ctype_local.h"
+
+typedef struct {
+ char fbl_id[8];
+ uint32_t fbl_rev;
+ uint32_t fbl_num_chars;
+ uint8_t fbl_ctype_tab [_CTYPE_CACHE_SIZE];
+ int16_t fbl_tolower_tab[_CTYPE_CACHE_SIZE];
+ int16_t fbl_toupper_tab[_CTYPE_CACHE_SIZE];
+} __packed _FileBSDCTypeLocale;
+
+#define _CTYPE_ID "BSDCTYPE"
+#define _CTYPE_REV 2
+
+#endif /*_BSDCTYPE_FILE_H_*/
Index: src/lib/libc/locale/bsdctype_local.h
diff -u /dev/null src/lib/libc/locale/bsdctype_local.h:1.1
--- /dev/null Sun Jun 13 04:14:58 2010
+++ src/lib/libc/locale/bsdctype_local.h Sun Jun 13 04:14:57 2010
@@ -0,0 +1,47 @@
+/* $NetBSD: bsdctype_local.h,v 1.1 2010/06/13 04:14:57 tnozaki Exp $ */
+
+/*-
+ * Copyright (c)2008 Citrus Project,
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _BSDCTYPE_LOCAL_H_
+#define _BSDCTYPE_LOCAL_H_
+
+#include "bsdctype_file.h"
+
+typedef struct {
+ const unsigned char *bl_ctype_tab;
+ const short *bl_tolower_tab;
+ const short *bl_toupper_tab;
+} _BSDCTypeLocale;
+
+extern const _BSDCTypeLocale _DefaultBSDCTypeLocale;
+extern const _BSDCTypeLocale *_CurrentBSDCTypeLocale;
+
+__BEGIN_DECLS
+int _bsdctype_load(const char * __restrict, _BSDCTypeLocale ** __restrict);
+__END_DECLS
+
+#endif /*_BSDCTYPE_LOCAL_H_*/
Index: src/lib/libc/locale/runetype_file.h
diff -u /dev/null src/lib/libc/locale/runetype_file.h:1.1
--- /dev/null Sun Jun 13 04:14:58 2010
+++ src/lib/libc/locale/runetype_file.h Sun Jun 13 04:14:57 2010
@@ -0,0 +1,137 @@
+/* $NetBSD: runetype_file.h,v 1.1 2010/06/13 04:14:57 tnozaki Exp $ */
+
+/*-
+ * Copyright (c) 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Paul Borman at Krystal Technologies.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)runetype.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _RUNETYPE_FILE_H_
+#define _RUNETYPE_FILE_H_
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+#include "ctype_local.h"
+
+/* for cross host tools on older systems */
+#ifndef UINT32_C
+/* assumes sizeof(unsigned int)>=4 */
+#define UINT32_C(c) ((uint32_t)(c##U))
+#endif
+
+typedef uint32_t __nbrune_t;
+typedef uint64_t __runepad_t;
+
+#define _DEFAULT_INVALID_RUNE ((__nbrune_t)-3)
+
+/*
+ * The lower 8 bits of runetype[] contain the digit value of the rune.
+ */
+typedef uint32_t _RuneType;
+#define _RUNETYPE_A UINT32_C(0x00000100) /* Alpha */
+#define _RUNETYPE_C UINT32_C(0x00000200) /* Control */
+#define _RUNETYPE_D UINT32_C(0x00000400) /* Digit */
+#define _RUNETYPE_G UINT32_C(0x00000800) /* Graph */
+#define _RUNETYPE_L UINT32_C(0x00001000) /* Lower */
+#define _RUNETYPE_P UINT32_C(0x00002000) /* Punct */
+#define _RUNETYPE_S UINT32_C(0x00004000) /* Space */
+#define _RUNETYPE_U UINT32_C(0x00008000) /* Upper */
+#define _RUNETYPE_X UINT32_C(0x00010000) /* X digit */
+#define _RUNETYPE_B UINT32_C(0x00020000) /* Blank */
+#define _RUNETYPE_R UINT32_C(0x00040000) /* Print */
+#define _RUNETYPE_I UINT32_C(0x00080000) /* Ideogram */
+#define _RUNETYPE_T UINT32_C(0x00100000) /* Special */
+#define _RUNETYPE_Q UINT32_C(0x00200000) /* Phonogram */
+#define _RUNETYPE_SWM UINT32_C(0xc0000000)/* Mask to get screen width data */
+#define _RUNETYPE_SWS 30 /* Bits to shift to get width */
+#define _RUNETYPE_SW0 UINT32_C(0x20000000) /* 0 width character */
+#define _RUNETYPE_SW1 UINT32_C(0x40000000) /* 1 width character */
+#define _RUNETYPE_SW2 UINT32_C(0x80000000) /* 2 width character */
+#define _RUNETYPE_SW3 UINT32_C(0xc0000000) /* 3 width character */
+
+
+/*
+ * rune file format. network endian.
+ */
+typedef struct {
+ int32_t fre_min; /* First rune of the range */
+ int32_t fre_max; /* Last rune (inclusive) of the range */
+ int32_t fre_map; /* What first maps to in maps */
+ uint32_t fre_pad1; /* backward compatibility */
+ __runepad_t fre_pad2; /* backward compatibility */
+} __packed _FileRuneEntry;
+
+
+typedef struct {
+ uint32_t frr_nranges; /* Number of ranges stored */
+ uint32_t frr_pad1; /* backward compatibility */
+ __runepad_t frr_pad2; /* backward compatibility */
+} __packed _FileRuneRange;
+
+
+typedef struct {
+ char frl_magic[8]; /* Magic saying what version we are */
+ char frl_encoding[32];/* ASCII name of this encoding */
+
+ __runepad_t frl_pad1; /* backward compatibility */
+ __runepad_t frl_pad2; /* backward compatibility */
+ int32_t frl_invalid_rune;
+ uint32_t frl_pad3; /* backward compatibility */
+
+ _RuneType frl_runetype[_CTYPE_CACHE_SIZE];
+ int32_t frl_maplower[_CTYPE_CACHE_SIZE];
+ int32_t frl_mapupper[_CTYPE_CACHE_SIZE];
+
+ /*
+ * The following are to deal with Runes larger than _CTYPE_CACHE_SIZE - 1.
+ * Their data is actually contiguous with this structure so as to make
+ * it easier to read/write from/to disk.
+ */
+ _FileRuneRange frl_runetype_ext;
+ _FileRuneRange frl_maplower_ext;
+ _FileRuneRange frl_mapupper_ext;
+
+ __runepad_t frl_pad4; /* backward compatibility */
+ int32_t frl_variable_len;/* how long that data is */
+ uint32_t frl_pad5; /* backward compatibility */
+
+ /* variable size data follows */
+} __packed _FileRuneLocale;
+
+
+/* magic number for LC_CTYPE (rune)locale declaration */
+#define _RUNECT10_MAGIC "RuneCT10" /* Indicates version 0 of RuneLocale */
+
+/* codeset tag */
+#define _RUNE_CODESET "CODESET="
+
+#endif /* !_RUNETYPE_FILE_H_ */