Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/lib/libc/locale fix cross build breakage mklocale(1).
details: https://anonhg.NetBSD.org/src/rev/b09dbaa7b17d
branches: trunk
changeset: 755783:b09dbaa7b17d
user: tnozaki <tnozaki%NetBSD.org@localhost>
date: Sun Jun 20 02:23:15 2010 +0000
description:
fix cross build breakage mklocale(1).
move inline finction that uses sys/ctype_bits.h to runetype_misc.h.
diffstat:
lib/libc/locale/bsdctype.c | 6 +-
lib/libc/locale/runetype_file.h | 90 +--------------------------
lib/libc/locale/runetype_local.h | 4 +-
lib/libc/locale/runetype_misc.h | 129 +++++++++++++++++++++++++++++++++++++++
4 files changed, 135 insertions(+), 94 deletions(-)
diffs (289 lines):
diff -r ecd7d13f3a70 -r b09dbaa7b17d lib/libc/locale/bsdctype.c
--- a/lib/libc/locale/bsdctype.c Sun Jun 20 00:25:41 2010 +0000
+++ b/lib/libc/locale/bsdctype.c Sun Jun 20 02:23:15 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: bsdctype.c,v 1.8 2010/06/19 13:26:52 tnozaki Exp $ */
+/* $NetBSD: bsdctype.c,v 1.9 2010/06/20 02:23:15 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.8 2010/06/19 13:26:52 tnozaki Exp $");
+__RCSID("$NetBSD: bsdctype.c,v 1.9 2010/06/20 02:23:15 tnozaki Exp $");
#endif /* LIBC_SCCS and not lint */
#include <sys/endian.h>
@@ -41,7 +41,7 @@
#include <unistd.h>
#include "bsdctype_local.h"
-#include "runetype_file.h"
+#include "runetype_misc.h"
const _BSDCTypeLocale _DefaultBSDCTypeLocale = {
_C_ctype_,
diff -r ecd7d13f3a70 -r b09dbaa7b17d lib/libc/locale/runetype_file.h
--- a/lib/libc/locale/runetype_file.h Sun Jun 20 00:25:41 2010 +0000
+++ b/lib/libc/locale/runetype_file.h Sun Jun 20 02:23:15 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: runetype_file.h,v 1.2 2010/06/19 13:26:52 tnozaki Exp $ */
+/* $NetBSD: runetype_file.h,v 1.3 2010/06/20 02:23:15 tnozaki Exp $ */
/*-
* Copyright (c) 1993
@@ -39,7 +39,6 @@
#include <sys/cdefs.h>
#include <sys/types.h>
-#include <sys/ctype_bits.h>
#include "ctype_local.h"
@@ -79,93 +78,6 @@
#define _RUNETYPE_SW2 UINT32_C(0x80000000) /* 2 width character */
#define _RUNETYPE_SW3 UINT32_C(0xc0000000) /* 3 width character */
-static __inline int
-_runetype_to_ctype(_RuneType bits)
-{
- int ret;
-
- if (bits == (_RuneType)0)
- return 0;
- ret = 0;
- if (bits & _RUNETYPE_U)
- ret |= _U;
- if (bits & _RUNETYPE_L)
- ret |= _L;
- if (bits & _RUNETYPE_D)
- ret |= _N;
- if (bits & _RUNETYPE_S)
- ret |= _S;
- if (bits & _RUNETYPE_P)
- ret |= _P;
- if (bits & _RUNETYPE_C)
- ret |= _C;
- if (bits & _RUNETYPE_X)
- ret |= _X;
- /*
- * TWEAK! _B has been used incorrectly (or with older
- * declaration) in ctype.h isprint() macro.
- * _B does not mean isblank, it means "isprint && !isgraph".
- * the following is okay since isblank() was hardcoded in
- * function (i.e. isblank() is inherently locale unfriendly).
- */
-#if 1
- if ((bits & (_RUNETYPE_R | _RUNETYPE_G)) == _RUNETYPE_R)
- ret |= _B;
-#else
- if (bits & _RUNETYPE_B)
- ret |= _B;
-#endif
- return ret;
-}
-
-static __inline _RuneType
-_runetype_from_ctype(int bits, int ch)
-{
- _RuneType ret;
-
- /*
- * TWEAKS!
- * - old locale file declarations do not have proper _B
- * in many cases.
- * - isprint() declaration in ctype.h incorrectly uses _B.
- * _B means "isprint but !isgraph", not "isblank" with the
- * declaration.
- * - _X and _RUNETYPE_X have negligible difference in meaning.
- * - we don't set digit value, fearing that it would be
- * too much of hardcoding. we may need to revisit it.
- */
-
- ret = (_RuneType)0;
- if (bits & _U)
- ret |= _RUNETYPE_U;
- if (bits & _L)
- ret |= _RUNETYPE_L;
- if (bits & _N)
- ret |= _RUNETYPE_D;
- if (bits & _S)
- ret |= _RUNETYPE_S;
- if (bits & _P)
- ret |= _RUNETYPE_P;
- if (bits & _C)
- ret |= _RUNETYPE_C;
- /* derived flag bits, duplicate of ctype.h */
- if (bits & (_U|_L))
- ret |= _RUNETYPE_A;
- if (bits & (_N|_X))
- ret |= _RUNETYPE_X;
- if (bits & (_P|_U|_L|_N))
- ret |= _RUNETYPE_G;
- /* we don't really trust _B in the file. see above. */
- if (bits & _B)
- ret |= _RUNETYPE_B;
- if ((bits & (_P|_U|_L|_N|_B)) || ch == ' ')
- ret |= (_RUNETYPE_R | _RUNETYPE_SW1);
- if (ch == ' ' || ch == '\t')
- ret |= _RUNETYPE_B;
- return ret;
-}
-
-
/*
* rune file format. network endian.
*/
diff -r ecd7d13f3a70 -r b09dbaa7b17d lib/libc/locale/runetype_local.h
--- a/lib/libc/locale/runetype_local.h Sun Jun 20 00:25:41 2010 +0000
+++ b/lib/libc/locale/runetype_local.h Sun Jun 20 02:23:15 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: runetype_local.h,v 1.11 2010/06/19 13:26:52 tnozaki Exp $ */
+/* $NetBSD: runetype_local.h,v 1.12 2010/06/20 02:23:15 tnozaki Exp $ */
/*-
* Copyright (c) 1993
@@ -42,7 +42,7 @@
#include <sys/types.h>
#include <stdio.h>
-#include "runetype_file.h"
+#include "runetype_misc.h"
#define _RUNE_ISCACHED(c) ((c)>=0 && (c)<_CTYPE_CACHE_SIZE)
diff -r ecd7d13f3a70 -r b09dbaa7b17d lib/libc/locale/runetype_misc.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/libc/locale/runetype_misc.h Sun Jun 20 02:23:15 2010 +0000
@@ -0,0 +1,129 @@
+/* $NetBSD: runetype_misc.h,v 1.1 2010/06/20 02:23:15 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_MISC_H_
+#define _RUNETYPE_MISC_H_
+
+#include <sys/ctype_bits.h>
+#include "runetype_file.h"
+
+static __inline int
+_runetype_to_ctype(_RuneType bits)
+{
+ int ret;
+
+ if (bits == (_RuneType)0)
+ return 0;
+ ret = 0;
+ if (bits & _RUNETYPE_U)
+ ret |= _U;
+ if (bits & _RUNETYPE_L)
+ ret |= _L;
+ if (bits & _RUNETYPE_D)
+ ret |= _N;
+ if (bits & _RUNETYPE_S)
+ ret |= _S;
+ if (bits & _RUNETYPE_P)
+ ret |= _P;
+ if (bits & _RUNETYPE_C)
+ ret |= _C;
+ if (bits & _RUNETYPE_X)
+ ret |= _X;
+ /*
+ * TWEAK! _B has been used incorrectly (or with older
+ * declaration) in ctype.h isprint() macro.
+ * _B does not mean isblank, it means "isprint && !isgraph".
+ * the following is okay since isblank() was hardcoded in
+ * function (i.e. isblank() is inherently locale unfriendly).
+ */
+#if 1
+ if ((bits & (_RUNETYPE_R | _RUNETYPE_G)) == _RUNETYPE_R)
+ ret |= _B;
+#else
+ if (bits & _RUNETYPE_B)
+ ret |= _B;
+#endif
+ return ret;
+}
+
+static __inline _RuneType
+_runetype_from_ctype(int bits, int ch)
+{
+ _RuneType ret;
+
+ /*
+ * TWEAKS!
+ * - old locale file declarations do not have proper _B
+ * in many cases.
+ * - isprint() declaration in ctype.h incorrectly uses _B.
+ * _B means "isprint but !isgraph", not "isblank" with the
+ * declaration.
+ * - _X and _RUNETYPE_X have negligible difference in meaning.
+ * - we don't set digit value, fearing that it would be
+ * too much of hardcoding. we may need to revisit it.
+ */
+
+ ret = (_RuneType)0;
+ if (bits & _U)
+ ret |= _RUNETYPE_U;
+ if (bits & _L)
+ ret |= _RUNETYPE_L;
+ if (bits & _N)
+ ret |= _RUNETYPE_D;
+ if (bits & _S)
+ ret |= _RUNETYPE_S;
+ if (bits & _P)
+ ret |= _RUNETYPE_P;
+ if (bits & _C)
+ ret |= _RUNETYPE_C;
+ /* derived flag bits, duplicate of ctype.h */
+ if (bits & (_U|_L))
+ ret |= _RUNETYPE_A;
+ if (bits & (_N|_X))
+ ret |= _RUNETYPE_X;
+ if (bits & (_P|_U|_L|_N))
+ ret |= _RUNETYPE_G;
+ /* we don't really trust _B in the file. see above. */
+ if (bits & _B)
+ ret |= _RUNETYPE_B;
+ if ((bits & (_P|_U|_L|_N|_B)) || ch == ' ')
+ ret |= (_RUNETYPE_R | _RUNETYPE_SW1);
+ if (ch == ' ' || ch == '\t')
+ ret |= _RUNETYPE_B;
+ return ret;
+}
+
+#endif /* !_RUNETYPE_MISC_H_ */
Home |
Main Index |
Thread Index |
Old Index