-/* $OpenBSD: rune.c,v 1.9 2022/07/25 21:38:24 guenther Exp $ */
+/* $OpenBSD: rune.c,v 1.10 2022/07/27 20:00:11 guenther Exp $ */
/* $NetBSD: rune.c,v 1.26 2004/05/09 11:26:33 kleink Exp $ */
/*-
rl = (_RuneLocale *)hostdata;
rl->rl_variable = rl + 1;
- memcpy(rl->rl_magic, frl.frl_magic, sizeof(rl->rl_magic));
- memcpy(rl->rl_encoding, frl.frl_encoding, sizeof(rl->rl_encoding));
-
- /* XXX assumes rune_t = uint32_t */
- rl->rl_invalid_rune = ntohl((uint32_t)frl.frl_invalid_rune);
rl->rl_variable_len = ntohl((uint32_t)frl.frl_variable_len);
for (x = 0; x < _CACHED_RUNES; ++x) {
goto rune_err;
/*
- * error if we have junk at the tail,
- * or if we can't allocate memory.
+ * error if we have junk at the tail
*/
- if (ftello(fp) != sb.st_size || __make_ctype_tabs(rl) == -1)
+ if (ftello(fp) != sb.st_size)
goto rune_err;
return(rl);
+++ /dev/null
-/* $OpenBSD: runeglue.c,v 1.5 2017/08/05 15:16:32 schwarze Exp $ */
-/* $NetBSD: runeglue.c,v 1.10 2003/03/10 21:18:49 tshiozak Exp $ */
-
-/*-
- * Copyright (c)1999 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.
- *
- * Id: runeglue.c,v 1.7 2000/12/22 22:52:29 itojun Exp
- */
-
-/*
- * Glue code to hide "rune" facility from user programs.
- * This is important to keep backward/future compatibility.
- */
-
-#include <assert.h>
-#include <limits.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <wchar.h>
-#include "rune.h"
-#include "rune_local.h"
-#include "ctype_private.h"
-
-#if EOF != -1
-#error "EOF != -1"
-#endif
-#if _CACHED_RUNES != 256
-#error "_CACHED_RUNES != 256"
-#endif
-
-int
-__make_ctype_tabs(_RuneLocale *rl)
-{
- int i, limit;
- struct old_tabs *p;
-
- p = malloc(sizeof *p);
- if (!p)
- return -1;
-
- /* By default, fill the ctype tab completely. */
- limit = CTYPE_NUM_CHARS;
-
- /* In UTF-8-encoded locales, the single-byte ctype functions
- * must only return non-zero values for ASCII characters.
- * Any non-ASCII single-byte character is not a valid UTF-8 sequence.
- */
- if (strcmp(rl->rl_encoding, "UTF8") == 0)
- limit = 128;
-
- rl->rl_tabs = p;
- p->ctype_tab[0] = 0;
- p->toupper_tab[0] = EOF;
- p->tolower_tab[0] = EOF;
- for (i = 0; i < limit; i++) {
- p->ctype_tab[i + 1] = 0;
- if (rl->rl_runetype[i] & _CTYPE_U)
- p->ctype_tab[i + 1] |= _U;
- if (rl->rl_runetype[i] & _CTYPE_L)
- p->ctype_tab[i + 1] |= _L;
- if (rl->rl_runetype[i] & _CTYPE_D)
- p->ctype_tab[i + 1] |= _N;
- if (rl->rl_runetype[i] & _CTYPE_S)
- p->ctype_tab[i + 1] |= _S;
- if (rl->rl_runetype[i] & _CTYPE_P)
- p->ctype_tab[i + 1] |= _P;
- if (rl->rl_runetype[i] & _CTYPE_C)
- p->ctype_tab[i + 1] |= _C;
- if (rl->rl_runetype[i] & _CTYPE_X)
- p->ctype_tab[i + 1] |= _X;
- /*
- * _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 ((rl->rl_runetype[i] & (_CTYPE_R | _CTYPE_G))
- == _CTYPE_R)
- p->ctype_tab[i + 1] |= _B;
-
- p->toupper_tab[i + 1] = (short)rl->rl_mapupper[i];
- p->tolower_tab[i + 1] = (short)rl->rl_maplower[i];
- }
- for (i = limit; i < CTYPE_NUM_CHARS; i++)
- p->ctype_tab[i + 1] = 0;
-
- return 0;
-}
#ifndef _NB_RUNETYPE_H_
#define _NB_RUNETYPE_H_
-/* $OpenBSD: runetype.h,v 1.9 2022/07/25 21:38:24 guenther Exp $ */
+/* $OpenBSD: runetype.h,v 1.10 2022/07/27 20:00:11 guenther Exp $ */
/* $NetBSD: runetype.h,v 1.18 2003/08/07 16:43:04 agc Exp $ */
/*-
* Copyright (c) 1993
#define _WCTYPE_NINDEXES 12
/*
- * ctype stuffs
+ * The parts of _FileRuneLocale needed at runtime
*/
-struct old_tabs {
- /* compatibility with `old' ctype */
- char ctype_tab[CTYPE_NUM_CHARS + 1];
- short tolower_tab[256 + 1];
- short toupper_tab[256 + 1];
-};
-
typedef struct {
- /*
- * copied from _FileRuneLocale
- */
- char rl_magic[8]; /* Magic saying what version we are */
- char rl_encoding[32];/* ASCII name of this encoding */
- rune_t rl_invalid_rune;
_RuneType rl_runetype[_CACHED_RUNES];
rune_t rl_maplower[_CACHED_RUNES];
rune_t rl_mapupper[_CACHED_RUNES];
*/
char *rl_codeset;
_WCTransEntry rl_wctrans[_WCTRANS_NINDEXES];
-
- struct old_tabs * rl_tabs;
-
} _RuneLocale;
/* magic number for LC_CTYPE (rune)locale declaration */