mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 14:00:30 +00:00
Update.
1998-04-30 16:45 Ulrich Drepper <drepper@cygnus.com> * inet/ether_aton.c: Including netinet/if_ether.h is not necessary. * locale/Makefile (distribute): Add programs/repertoire.h. (localedef-modules): Add repertoire. (CPPFLAGS): Define REPERTOIREMAP_PATH. * locale/programs/repertoire.c: New file. * locale/programs/repertoire.h: New file. * locale/programs/charmap.c: Starting fixing character set handling to handle multi-byte encodings. * locale/programs/charset.c: Likewise. * locale/programs/charset.h: Likewise. * locale/programs/ld-collate.c: Likewise. * locale/programs/ld-ctype.c: Likewise. * locale/programs/linereader.c: Likewise. * locale/programs/localedef.c: Likewise. * locale/programs/locfile-kw.gperf: Likewise. * locale/programs/locfile-kw.h: Likewise. * locale/programs/locfile-token.h: Likewise. * locale/programs/locfile.h: Likewise. * locale/programs/stringtrans.c: Likewise. 1998-04-18 Philip Blundell <Philip.Blundell@pobox.com> * sysdeps/arm/memset.S: Fix off by one error. * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO): On error, call __syscall_error rather than syscall_error directly. 1998-04-17 Philip Blundell <Philip.Blundell@pobox.com> * sysdeps/unix/sysv/linux/arm/mmap.S: New file; implementation of mmap() syscall for ARM. * sysdeps/unix/arm/start.c: New file; startup code for ARM a.out binaries.
This commit is contained in:
parent
3dd2c3e247
commit
69f155d4fc
38
ChangeLog
38
ChangeLog
@ -1,3 +1,41 @@
|
||||
1998-04-30 16:45 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* inet/ether_aton.c: Including netinet/if_ether.h is not necessary.
|
||||
|
||||
* locale/Makefile (distribute): Add programs/repertoire.h.
|
||||
(localedef-modules): Add repertoire.
|
||||
(CPPFLAGS): Define REPERTOIREMAP_PATH.
|
||||
* locale/programs/repertoire.c: New file.
|
||||
* locale/programs/repertoire.h: New file.
|
||||
* locale/programs/charmap.c: Starting fixing character set handling
|
||||
to handle multi-byte encodings.
|
||||
* locale/programs/charset.c: Likewise.
|
||||
* locale/programs/charset.h: Likewise.
|
||||
* locale/programs/ld-collate.c: Likewise.
|
||||
* locale/programs/ld-ctype.c: Likewise.
|
||||
* locale/programs/linereader.c: Likewise.
|
||||
* locale/programs/localedef.c: Likewise.
|
||||
* locale/programs/locfile-kw.gperf: Likewise.
|
||||
* locale/programs/locfile-kw.h: Likewise.
|
||||
* locale/programs/locfile-token.h: Likewise.
|
||||
* locale/programs/locfile.h: Likewise.
|
||||
* locale/programs/stringtrans.c: Likewise.
|
||||
|
||||
1998-04-18 Philip Blundell <Philip.Blundell@pobox.com>
|
||||
|
||||
* sysdeps/arm/memset.S: Fix off by one error.
|
||||
|
||||
* sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO): On error, call
|
||||
__syscall_error rather than syscall_error directly.
|
||||
|
||||
1998-04-17 Philip Blundell <Philip.Blundell@pobox.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/arm/mmap.S: New file; implementation of
|
||||
mmap() syscall for ARM.
|
||||
|
||||
* sysdeps/unix/arm/start.c: New file; startup code for ARM a.out
|
||||
binaries.
|
||||
|
||||
1998-04-30 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* locale/programs/localedef.c: Recognize repertoire-map option.
|
||||
|
@ -18,7 +18,6 @@
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <netinet/ether.h>
|
||||
#include <netinet/if_ether.h>
|
||||
|
||||
|
||||
struct ether_addr *
|
||||
|
@ -313,6 +313,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
|
||||
|
||||
static void pthread_free(pthread_descr th)
|
||||
{
|
||||
pthread_handle handle;
|
||||
pthread_descr t;
|
||||
|
||||
/* Check that the thread th is still there -- pthread_reap_children
|
||||
@ -324,7 +325,6 @@ static void pthread_free(pthread_descr th)
|
||||
} while (t != __pthread_main_thread);
|
||||
if (t != th) return;
|
||||
|
||||
pthread_handle handle;
|
||||
ASSERT(th->p_exited);
|
||||
/* Make the handle invalid */
|
||||
handle = thread_handle(th->p_tid);
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1991, 92, 95, 96, 97, 98 Free Software Foundation, Inc.
|
||||
# This file is part of the GNU C Library.
|
||||
|
||||
# The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -30,7 +30,8 @@ distribute = localeinfo.h categories.def iso-4217.def weight.h \
|
||||
$(lib-modules:=.c) config.h simple-hash.h \
|
||||
charmap-kw.gperf charmap-kw.h locfile-token.h \
|
||||
locfile-kw.gperf locfile-kw.h linereader.h \
|
||||
locales.h locfile.h stringtrans.h charset.h)
|
||||
locales.h locfile.h stringtrans.h charset.h \
|
||||
repertoire.h)
|
||||
routines = setlocale findlocale loadlocale localeconv nl_langinfo \
|
||||
mb_cur_max codeset_name \
|
||||
newlocale duplocale freelocale
|
||||
@ -53,7 +54,7 @@ vpath %.h programs
|
||||
vpath %.gperf programs
|
||||
|
||||
localedef-modules := $(categories:%=ld-%) charmap charset linereader \
|
||||
locfile stringtrans
|
||||
locfile stringtrans repertoire
|
||||
locale-modules := locale-spec
|
||||
lib-modules := simple-hash xmalloc xstrdup
|
||||
|
||||
@ -77,6 +78,7 @@ CPPFLAGS := -DLOCALE_PATH='$(localepath)' \
|
||||
-DLOCALEDIR='"$(localedir)"' \
|
||||
-DLOCALE_ALIAS_PATH='"$(localedir):$(i18ndir)"' \
|
||||
-DCHARMAP_PATH='"$(i18ndir)/charmaps"' \
|
||||
-DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \
|
||||
-DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \
|
||||
-Iprograms $(CPPFLAGS)
|
||||
|
||||
|
@ -33,6 +33,8 @@
|
||||
#include "error.h"
|
||||
#include "linereader.h"
|
||||
#include "charset.h"
|
||||
#include "locfile.h"
|
||||
#include "repertoire.h"
|
||||
|
||||
|
||||
/* Uncomment following line for production version. */
|
||||
@ -209,6 +211,8 @@ parse_charmap (const char *filename)
|
||||
memset (result, '\0', sizeof (struct charset_t));
|
||||
/* The default DEFAULT_WIDTH is 1. */
|
||||
result->width_default = 1;
|
||||
/* Let the user overwrite the repertoire map we use. */
|
||||
result->repertoiremap = repertoiremap;
|
||||
|
||||
#define obstack_chunk_alloc malloc
|
||||
#define obstack_chunk_free free
|
||||
@ -265,6 +269,17 @@ parse_charmap (const char *filename)
|
||||
|
||||
lr_ignore_rest (cmfile, 1);
|
||||
|
||||
/* Read the repertoire map now. */
|
||||
if (result->repertoiremap == NULL)
|
||||
/* This is fatal. */
|
||||
error (4, 0, _("no repertoire map specified: cannot proceed"));
|
||||
|
||||
result->repertoire = repertoire_read (result->repertoiremap);
|
||||
if (result->repertoire == NULL)
|
||||
/* This is also fatal. */
|
||||
error (4, errno, _("cannot read repertoire map `%s'"),
|
||||
result->repertoiremap);
|
||||
|
||||
state = 2;
|
||||
continue;
|
||||
}
|
||||
@ -273,7 +288,7 @@ parse_charmap (const char *filename)
|
||||
&& nowtok != tok_mb_cur_min && nowtok != tok_escape_char
|
||||
&& nowtok != tok_comment_char && nowtok != tok_g0esc
|
||||
&& nowtok != tok_g1esc && nowtok != tok_g2esc
|
||||
&& nowtok != tok_g3esc)
|
||||
&& nowtok != tok_g3esc && nowtok != tok_repertoiremap)
|
||||
{
|
||||
lr_error (cmfile, _("syntax error in prolog: %s"),
|
||||
_("illegal definition"));
|
||||
@ -305,6 +320,18 @@ parse_charmap (const char *filename)
|
||||
lr_ignore_rest (cmfile, 1);
|
||||
continue;
|
||||
|
||||
case tok_repertoiremap:
|
||||
if (arg->tok != tok_ident)
|
||||
goto badarg;
|
||||
|
||||
if (result->repertoiremap == NULL)
|
||||
result->repertoiremap = obstack_copy0 (&result->mem_pool,
|
||||
arg->val.str.start,
|
||||
arg->val.str.len);
|
||||
|
||||
lr_ignore_rest (cmfile, 1);
|
||||
continue;
|
||||
|
||||
case tok_mb_cur_max:
|
||||
case tok_mb_cur_min:
|
||||
if (arg->tok != tok_number)
|
||||
@ -437,14 +464,14 @@ argument to <%s> must be a single character"),
|
||||
continue;
|
||||
}
|
||||
|
||||
if (nowtok == tok_charcode)
|
||||
/* Write char value in table. */
|
||||
charset_new_char (cmfile, result, now->val.charcode.nbytes,
|
||||
now->val.charcode.val, from_name, to_name);
|
||||
if (now->val.charcode.nbytes < result->mb_cur_min)
|
||||
lr_error (cmfile, _("too few bytes in character encoding"));
|
||||
else if (now->val.charcode.nbytes > result->mb_cur_max)
|
||||
lr_error (cmfile, _("too many bytes in character encoding"));
|
||||
else
|
||||
/* Determine ISO 10646 value and write into table. */
|
||||
charset_new_unicode (cmfile, result, now->val.charcode.nbytes,
|
||||
now->val.charcode.val, from_name, to_name);
|
||||
charset_new_char (cmfile, &result->char_table,
|
||||
now->val.charcode.nbytes,
|
||||
now->val.charcode.val, from_name, to_name);
|
||||
|
||||
/* Ignore trailing comment silently. */
|
||||
lr_ignore_rest (cmfile, 0);
|
||||
@ -466,8 +493,7 @@ argument to <%s> must be a single character"),
|
||||
continue;
|
||||
}
|
||||
|
||||
/* If the previous line was not completely correct free the
|
||||
used memory. */
|
||||
/* Copy the to-name in a safe place. */
|
||||
to_name = (char *) obstack_copy0 (&result->mem_pool,
|
||||
cmfile->token.val.str.start,
|
||||
cmfile->token.val.str.len);
|
||||
@ -694,7 +720,7 @@ new_width (struct linereader *cmfile, struct charset_t *result,
|
||||
{
|
||||
unsigned int from_val, to_val;
|
||||
|
||||
from_val = charset_find_value (result, from, strlen (from));
|
||||
from_val = charset_find_value (&result->char_table, from, strlen (from));
|
||||
if ((wchar_t) from_val == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
lr_error (cmfile, _("unknown character `%s'"), from);
|
||||
@ -705,7 +731,7 @@ new_width (struct linereader *cmfile, struct charset_t *result,
|
||||
to_val = from_val;
|
||||
else
|
||||
{
|
||||
to_val = charset_find_value (result, to, strlen (to));
|
||||
to_val = charset_find_value (&result->char_table, to, strlen (to));
|
||||
if ((wchar_t) to_val == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
lr_error (cmfile, _("unknown character `%s'"), to);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
|
||||
|
||||
@ -23,6 +23,8 @@
|
||||
|
||||
#include <alloca.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -31,49 +33,24 @@
|
||||
#include "charset.h"
|
||||
|
||||
|
||||
static void
|
||||
insert_char (struct linereader *lr, struct charset_t *cs, int bytes,
|
||||
unsigned int value, const char *from, const char *to);
|
||||
|
||||
|
||||
void
|
||||
charset_new_char (struct linereader *lr, struct charset_t *cs, int bytes,
|
||||
unsigned int value, const char *from, const char *to)
|
||||
{
|
||||
if (bytes < cs->mb_cur_min)
|
||||
lr_error (lr, _("too few bytes in character encoding"));
|
||||
else if (bytes > cs->mb_cur_max)
|
||||
lr_error (lr, _("too many bytes in character encoding"));
|
||||
else
|
||||
insert_char (lr, cs, bytes, value, from, to);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
charset_new_unicode (struct linereader *lr, struct charset_t *cs, int bytes,
|
||||
unsigned int value, const char *from, const char *to)
|
||||
{
|
||||
/* For now: perhaps <Uxxxx> support will be removed again... */
|
||||
insert_char (lr, cs, bytes, value, from, to);
|
||||
}
|
||||
|
||||
|
||||
unsigned int
|
||||
charset_find_value (const struct charset_t *cs, const char *name, size_t len)
|
||||
charset_find_value (const hash_table *ht, const char *name, size_t len)
|
||||
{
|
||||
void *result;
|
||||
|
||||
if (find_entry ((hash_table *) &cs->char_table, name, len, &result) < 0)
|
||||
if (find_entry ((hash_table *) ht, name, len, &result) < 0)
|
||||
return ILLEGAL_CHAR_VALUE;
|
||||
|
||||
return (unsigned int) ((unsigned long int) result);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
insert_char (struct linereader *lr, struct charset_t *cs, int bytes,
|
||||
unsigned int value, const char *from, const char *to)
|
||||
void
|
||||
charset_new_char (struct linereader *lr, hash_table *ht, int bytes,
|
||||
unsigned int value, const char *from, const char *to)
|
||||
{
|
||||
char *from_end;
|
||||
char *to_end;
|
||||
const char *cp;
|
||||
char *buf;
|
||||
int prefix_len, len1, len2;
|
||||
@ -81,7 +58,7 @@ insert_char (struct linereader *lr, struct charset_t *cs, int bytes,
|
||||
|
||||
if (to == NULL)
|
||||
{
|
||||
if (insert_entry (&cs->char_table, from, strlen (from),
|
||||
if (insert_entry (ht, from, strlen (from),
|
||||
(void *) (unsigned long int) value)
|
||||
< 0)
|
||||
lr_error (lr, _("duplicate character name `%s'"), from);
|
||||
@ -111,8 +88,16 @@ insert_char (struct linereader *lr, struct charset_t *cs, int bytes,
|
||||
if (cp == &from[len1 - 1] || strncmp (from, to, prefix_len) != 0)
|
||||
goto illegal_range;
|
||||
|
||||
from_nr = strtoul (&from[prefix_len], NULL, 10);
|
||||
to_nr = strtoul (&to[prefix_len], NULL, 10);
|
||||
errno = 0;
|
||||
from_nr = strtoul (&from[prefix_len], &from_end, 10);
|
||||
if (*from_end != '\0' || (from_nr == ULONG_MAX && errno == ERANGE)
|
||||
|| ((to_nr = strtoul (&to[prefix_len], &to_end, 10)) == ULONG_MAX
|
||||
&& errno == ERANGE)
|
||||
|| *to_end != '\0')
|
||||
{
|
||||
lr_error (lr, _("<%s> and <%s> are illegal names for range"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (from_nr > to_nr)
|
||||
{
|
||||
@ -127,7 +112,7 @@ insert_char (struct linereader *lr, struct charset_t *cs, int bytes,
|
||||
{
|
||||
sprintf (&buf[prefix_len], "%0*d", len1 - prefix_len, cnt);
|
||||
|
||||
if (insert_entry (&cs->char_table, buf, len1,
|
||||
if (insert_entry (ht, buf, len1,
|
||||
(void *) (unsigned long int) (value + (cnt - from_nr)))
|
||||
< 0)
|
||||
lr_error (lr, _("duplicate character name `%s'"), buf);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
|
||||
|
||||
@ -22,6 +22,7 @@
|
||||
|
||||
#include <obstack.h>
|
||||
|
||||
#include "repertoire.h"
|
||||
#include "simple-hash.h"
|
||||
#include "linereader.h"
|
||||
|
||||
@ -36,6 +37,9 @@ struct width_rule
|
||||
|
||||
struct charset_t
|
||||
{
|
||||
const char *repertoiremap;
|
||||
struct repertoire_t *repertoire;
|
||||
|
||||
const char *code_set_name;
|
||||
int mb_cur_min;
|
||||
int mb_cur_max;
|
||||
@ -63,14 +67,11 @@ extern int be_quiet;
|
||||
struct charset_t *charmap_read (const char *filename);
|
||||
|
||||
/* Prototypes for function to insert new character. */
|
||||
void charset_new_char (struct linereader *lr, struct charset_t *cs, int bytes,
|
||||
void charset_new_char (struct linereader *lr, hash_table *ht, int bytes,
|
||||
unsigned int value, const char *from, const char *to);
|
||||
|
||||
void charset_new_unicode (struct linereader *lr, struct charset_t *cs,
|
||||
int bytes, unsigned int value, const char *from,
|
||||
const char *to);
|
||||
|
||||
unsigned int charset_find_value (const struct charset_t *__cs,
|
||||
const char *__name, size_t __len);
|
||||
/* Return the value stored under the given key in the hashing table. */
|
||||
unsigned int charset_find_value (const hash_table *ht,
|
||||
const char *name, size_t len);
|
||||
|
||||
#endif /* charset.h */
|
||||
|
@ -212,7 +212,7 @@ collate_finish (struct localedef_t *locale, struct charset_t *charset)
|
||||
void *ptmp;
|
||||
unsigned int value = 0;
|
||||
|
||||
wch = charset_find_value (charset, patch->token, toklen);
|
||||
wch = charset_find_value (&charset->char_table, patch->token, toklen);
|
||||
if (wch != ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
element_t *runp;
|
||||
@ -1054,7 +1054,8 @@ collate_element_to (struct linereader *lr, struct localedef_t *locale,
|
||||
collate->combine_token = NULL;
|
||||
}
|
||||
|
||||
value = charset_find_value (charset, code->val.str.start, code->val.str.len);
|
||||
value = charset_find_value (&charset->char_table, code->val.str.start,
|
||||
code->val.str.len);
|
||||
if ((wchar_t) value != ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
lr_error (lr, _("symbol for multicharacter collating element "
|
||||
@ -1181,7 +1182,8 @@ collate_symbol (struct linereader *lr, struct localedef_t *locale,
|
||||
wchar_t value;
|
||||
void *not_used;
|
||||
|
||||
value = charset_find_value (charset, code->val.str.start, code->val.str.len);
|
||||
value = charset_find_value (&charset->char_table, code->val.str.start,
|
||||
code->val.str.len);
|
||||
if (value != ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
lr_error (lr, _("symbol for multicharacter collating element "
|
||||
@ -1268,7 +1270,7 @@ collate_order_elem (struct linereader *lr, struct localedef_t *locale,
|
||||
{
|
||||
case tok_bsymbol:
|
||||
/* We have a string to find in one of the three hashing tables. */
|
||||
value = charset_find_value (charset, code->val.str.start,
|
||||
value = charset_find_value (&charset->char_table, code->val.str.start,
|
||||
code->val.str.len);
|
||||
if (value != ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
@ -1533,7 +1535,8 @@ collate_weight_bsymbol (struct linereader *lr, struct localedef_t *locale,
|
||||
|
||||
assert (code->tok == tok_bsymbol);
|
||||
|
||||
value = charset_find_value (charset, code->val.str.start, code->val.str.len);
|
||||
value = charset_find_value (&charset->char_table, code->val.str.start,
|
||||
code->val.str.len);
|
||||
if (value != ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
element_t *runp;
|
||||
@ -1706,7 +1709,8 @@ collate_simple_weight (struct linereader *lr, struct localedef_t *locale,
|
||||
return -1;
|
||||
}
|
||||
|
||||
wch = charset_find_value (charset, startp, putp - startp);
|
||||
wch = charset_find_value (&charset->char_table, startp,
|
||||
putp - startp);
|
||||
if (wch != ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
element_t *pelem;
|
||||
|
@ -308,7 +308,7 @@ character %s'%s' in class `%s' must not be in class `%s'"),
|
||||
}
|
||||
|
||||
/* ... and now test <SP> as a special case. */
|
||||
space_value = charset_find_value (charset, "SP", 2);
|
||||
space_value = charset_find_value (&charset->char_table, "SP", 2);
|
||||
if ((wchar_t) space_value == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -634,7 +634,8 @@ ctype_class_from (struct linereader *lr, struct localedef_t *locale,
|
||||
struct locale_ctype_t *ctype = locale->categories[LC_CTYPE].ctype;
|
||||
unsigned int value;
|
||||
|
||||
value = charset_find_value (charset, code->val.str.start, code->val.str.len);
|
||||
value = charset_find_value (&charset->char_table, code->val.str.start,
|
||||
code->val.str.len);
|
||||
|
||||
ctype->last_class_char = value;
|
||||
|
||||
@ -656,7 +657,8 @@ ctype_class_to (struct linereader *lr, struct localedef_t *locale,
|
||||
struct locale_ctype_t *ctype = locale->categories[LC_CTYPE].ctype;
|
||||
unsigned int value, cnt;
|
||||
|
||||
value = charset_find_value (charset, code->val.str.start, code->val.str.len);
|
||||
value = charset_find_value (&charset->char_table, code->val.str.start,
|
||||
code->val.str.len);
|
||||
|
||||
/* In the LC_CTYPE category it is no error when a character is
|
||||
not found. This has to be ignored silently. */
|
||||
@ -750,7 +752,8 @@ ctype_map_from (struct linereader *lr, struct localedef_t *locale,
|
||||
struct locale_ctype_t *ctype = locale->categories[LC_CTYPE].ctype;
|
||||
unsigned int value;
|
||||
|
||||
value = charset_find_value (charset, code->val.str.start, code->val.str.len);
|
||||
value = charset_find_value (&charset->char_table, code->val.str.start,
|
||||
code->val.str.len);
|
||||
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
/* In the LC_CTYPE category it is no error when a character is
|
||||
@ -770,7 +773,8 @@ ctype_map_to (struct linereader *lr, struct localedef_t *locale,
|
||||
struct locale_ctype_t *ctype = locale->categories[LC_CTYPE].ctype;
|
||||
unsigned int value;
|
||||
|
||||
value = charset_find_value (charset, code->val.str.start, code->val.str.len);
|
||||
value = charset_find_value (&charset->char_table, code->val.str.start,
|
||||
code->val.str.len);
|
||||
|
||||
if ((wchar_t) ctype->from_map_char == ILLEGAL_CHAR_VALUE
|
||||
|| (wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
@ -948,7 +952,7 @@ set_class_defaults (struct locale_ctype_t *ctype, struct charset_t *charset)
|
||||
unsigned int value;
|
||||
tmp[0] = ch;
|
||||
|
||||
value = charset_find_value (charset, tmp, 1);
|
||||
value = charset_find_value (&charset->char_table, tmp, 1);
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -1013,7 +1017,7 @@ character `%s' not defined while needed as default value"),
|
||||
{
|
||||
unsigned int value;
|
||||
|
||||
value = charset_find_value (charset, "space", 5);
|
||||
value = charset_find_value (&charset->char_table, "space", 5);
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -1024,7 +1028,7 @@ character `%s' not defined while needed as default value"),
|
||||
else
|
||||
ELEM (ctype, class_collection, , value) |= BIT (tok_space);
|
||||
|
||||
value = charset_find_value (charset, "form-feed", 9);
|
||||
value = charset_find_value (&charset->char_table, "form-feed", 9);
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -1035,7 +1039,7 @@ character `%s' not defined while needed as default value"),
|
||||
else
|
||||
ELEM (ctype, class_collection, , value) |= BIT (tok_space);
|
||||
|
||||
value = charset_find_value (charset, "newline", 7);
|
||||
value = charset_find_value (&charset->char_table, "newline", 7);
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -1046,7 +1050,7 @@ character `%s' not defined while needed as default value"),
|
||||
else
|
||||
ELEM (ctype, class_collection, , value) |= BIT (tok_space);
|
||||
|
||||
value = charset_find_value (charset, "carriage-return", 15);
|
||||
value = charset_find_value (&charset->char_table, "carriage-return", 15);
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -1057,7 +1061,7 @@ character `%s' not defined while needed as default value"),
|
||||
else
|
||||
ELEM (ctype, class_collection, , value) |= BIT (tok_space);
|
||||
|
||||
value = charset_find_value (charset, "tab", 3);
|
||||
value = charset_find_value (&charset->char_table, "tab", 3);
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -1068,7 +1072,7 @@ character `%s' not defined while needed as default value"),
|
||||
else
|
||||
ELEM (ctype, class_collection, , value) |= BIT (tok_space);
|
||||
|
||||
value = charset_find_value (charset, "vertical-tab", 12);
|
||||
value = charset_find_value (&charset->char_table, "vertical-tab", 12);
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -1097,7 +1101,7 @@ character `%s' not defined while needed as default value"),
|
||||
{
|
||||
unsigned int value;
|
||||
|
||||
value = charset_find_value (charset, "space", 5);
|
||||
value = charset_find_value (&charset->char_table, "space", 5);
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -1108,7 +1112,7 @@ character `%s' not defined while needed as default value"),
|
||||
else
|
||||
ELEM (ctype, class_collection, , value) |= BIT (tok_blank);
|
||||
|
||||
value = charset_find_value (charset, "tab", 3);
|
||||
value = charset_find_value (&charset->char_table, "tab", 3);
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -1149,7 +1153,7 @@ character `%s' not defined while needed as default value"),
|
||||
if ((ctype->class_collection[cnt] & mask) != 0)
|
||||
ctype->class_collection[cnt] |= BIT (tok_print);
|
||||
|
||||
space = charset_find_value (charset, "space", 5);
|
||||
space = charset_find_value (&charset->char_table, "space", 5);
|
||||
if (space == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -1178,7 +1182,7 @@ character `%s' not defined while needed as default value"),
|
||||
|
||||
tmp[1] = (char) ch;
|
||||
|
||||
value_from = charset_find_value (charset, &tmp[1], 1);
|
||||
value_from = charset_find_value (&charset->char_table, &tmp[1], 1);
|
||||
if ((wchar_t) value_from == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
@ -1190,7 +1194,7 @@ character `%s' not defined while needed as default value"),
|
||||
|
||||
/* This conversion is implementation defined. */
|
||||
tmp[1] = (char) (ch + ('A' - 'a'));
|
||||
value_to = charset_find_value (charset, &tmp[1], 1);
|
||||
value_to = charset_find_value (&charset->char_table, &tmp[1], 1);
|
||||
if ((wchar_t) value_to == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
if (!be_quiet)
|
||||
|
@ -524,7 +524,7 @@ get_string (struct linereader *lr, const struct charset_t *charset)
|
||||
|
||||
if (lr->translate_strings)
|
||||
{
|
||||
value = charset_find_value (charset, &buf[startidx],
|
||||
value = charset_find_value (&charset->char_table, &buf[startidx],
|
||||
bufact - startidx);
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
illegal_string = 1;
|
||||
|
@ -81,8 +81,8 @@ static const char *charmap_file;
|
||||
/* Name of the locale definition file. */
|
||||
static const char *input_file;
|
||||
|
||||
/* Name of the UCS file. */
|
||||
static const char *ucs_csn;
|
||||
/* Name of the repertoire map file. */
|
||||
const char *repertoiremap;
|
||||
|
||||
|
||||
/* Name and version of program. */
|
||||
@ -99,9 +99,7 @@ static const struct argp_option options[] =
|
||||
{ "charmap", 'f', "FILE", 0,
|
||||
N_("Symbolic character names defined in FILE") },
|
||||
{ "inputfile", 'i', "FILE", 0, N_("Source definitions are found in FILE") },
|
||||
{ "code-set-name", 'u', "NAME", OPTION_HIDDEN,
|
||||
N_("Specify code set for mapping ISO 10646 elements") },
|
||||
{ "repertoire-map", 'u', NAME, 0,
|
||||
{ "repertoire-map", 'u', "FILE", 0,
|
||||
N_("file containing mapping from symbolic names to UCS4 values") },
|
||||
|
||||
{ NULL, 0, NULL, 0, N_("Output control:") },
|
||||
@ -355,7 +353,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
|
||||
input_file = arg;
|
||||
break;
|
||||
case 'u':
|
||||
ucs_csn = arg;
|
||||
repertoiremap = arg;
|
||||
break;
|
||||
case 'v':
|
||||
verbose = 1;
|
||||
@ -377,10 +375,11 @@ more_help (int key, const char *text, void *input)
|
||||
case ARGP_KEY_HELP_EXTRA:
|
||||
/* We print some extra information. */
|
||||
asprintf (&cp, gettext ("\
|
||||
System's directory for character maps: %s\n\
|
||||
locale files : %s\n\
|
||||
System's directory for character maps : %s\n\
|
||||
repertoire maps: %s\n\
|
||||
locale path : %s\n\
|
||||
%s"),
|
||||
CHARMAP_PATH, LOCALE_PATH, gettext ("\
|
||||
CHARMAP_PATH, REPERTOIREMAP_PATH, LOCALE_PATH, gettext ("\
|
||||
Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
|
||||
return cp;
|
||||
default:
|
||||
|
@ -1,5 +1,5 @@
|
||||
%{
|
||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
|
||||
|
||||
@ -26,6 +26,7 @@ struct keyword_t ;
|
||||
%%
|
||||
escape_char, tok_escape_char, 0
|
||||
comment_char, tok_comment_char, 0
|
||||
repertoiremap, tok_repertoiremap, 0
|
||||
LC_CTYPE, tok_lc_ctype, 0
|
||||
END, tok_end, 0
|
||||
copy, tok_copy, 0
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* C code produced by gperf version 2.5 (GNU C++ version) */
|
||||
/* Command-line: gperf -acCgopt -k1,2,5,$ -N locfile_hash programs/locfile-kw.gperf */
|
||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
|
||||
|
||||
@ -24,12 +24,12 @@
|
||||
#include "locfile-token.h"
|
||||
struct keyword_t ;
|
||||
|
||||
#define TOTAL_KEYWORDS 73
|
||||
#define TOTAL_KEYWORDS 74
|
||||
#define MIN_WORD_LENGTH 3
|
||||
#define MAX_WORD_LENGTH 17
|
||||
#define MIN_HASH_VALUE 3
|
||||
#define MAX_HASH_VALUE 132
|
||||
/* maximum key range = 130, duplicates = 0 */
|
||||
#define MAX_HASH_VALUE 178
|
||||
/* maximum key range = 176, duplicates = 0 */
|
||||
|
||||
#ifdef __GNUC__
|
||||
inline
|
||||
@ -39,19 +39,19 @@ hash (register const char *str, register int len)
|
||||
{
|
||||
static const unsigned char asso_values[] =
|
||||
{
|
||||
133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
|
||||
133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
|
||||
133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
|
||||
133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
|
||||
133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
|
||||
133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
|
||||
133, 133, 133, 133, 133, 133, 133, 0, 0, 0,
|
||||
0, 0, 133, 0, 133, 133, 0, 133, 0, 20,
|
||||
133, 133, 0, 0, 0, 5, 133, 133, 133, 5,
|
||||
133, 133, 133, 133, 133, 5, 133, 0, 60, 0,
|
||||
15, 10, 20, 40, 5, 20, 133, 0, 45, 40,
|
||||
10, 0, 0, 133, 15, 50, 0, 30, 0, 10,
|
||||
15, 15, 133, 133, 133, 133, 133, 133,
|
||||
179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179, 179, 179, 0, 0, 0,
|
||||
0, 0, 179, 0, 179, 179, 0, 179, 0, 45,
|
||||
179, 179, 0, 0, 0, 5, 179, 179, 179, 10,
|
||||
179, 179, 179, 179, 179, 5, 179, 0, 5, 0,
|
||||
15, 20, 5, 20, 40, 20, 179, 25, 15, 50,
|
||||
10, 0, 0, 179, 45, 50, 0, 30, 0, 5,
|
||||
10, 60, 179, 179, 179, 179, 179, 179,
|
||||
};
|
||||
register int hval = len;
|
||||
|
||||
@ -88,102 +88,110 @@ locfile_hash (register const char *str, register int len)
|
||||
{"",},
|
||||
{"t_fmt", tok_t_fmt, 0},
|
||||
{"LC_MESSAGES", tok_lc_messages, 0},
|
||||
{"",},
|
||||
{"charconv", tok_charconv, 0},
|
||||
{"",}, {"",},
|
||||
{"UNDEFINED", tok_undefined, 0},
|
||||
{"LC_NUMERIC", tok_lc_numeric, 0},
|
||||
{"",},
|
||||
{"collating-element", tok_collating_element, 0},
|
||||
{"position", tok_position, 0},
|
||||
{"copy", tok_copy, 0},
|
||||
{"print", tok_print, 0},
|
||||
{"",},
|
||||
{"toupper", tok_toupper, 0},
|
||||
{"alpha", tok_alpha, 0},
|
||||
{"",}, {"",},
|
||||
{"positive_sign", tok_positive_sign, 0},
|
||||
{"",},
|
||||
{"d_fmt", tok_d_fmt, 0},
|
||||
{"",}, {"",},
|
||||
{"era", tok_era, 0},
|
||||
{"p_sep_by_space", tok_p_sep_by_space, 0},
|
||||
{"LC_COLLATE", tok_lc_collate, 0},
|
||||
{"noexpr", tok_noexpr, 0},
|
||||
{"tolower", tok_tolower, 0},
|
||||
{"day", tok_day, 0},
|
||||
{"era_t_fmt", tok_era_t_fmt, 0},
|
||||
{"punct", tok_punct, 0},
|
||||
{"LC_MONETARY", tok_lc_monetary, 0},
|
||||
{"comment_char", tok_comment_char, 0},
|
||||
{"",},
|
||||
{"n_sep_by_space", tok_n_sep_by_space, 0},
|
||||
{"digit", tok_digit, 0},
|
||||
{"order_start", tok_order_start, 0},
|
||||
{"forward", tok_forward, 0},
|
||||
{"negative_sign", tok_negative_sign, 0},
|
||||
{"",},
|
||||
{"nostr", tok_nostr, 0},
|
||||
{"yesstr", tok_yesstr, 0},
|
||||
{"d_t_fmt", tok_d_t_fmt, 0},
|
||||
{"",},
|
||||
{"era_d_fmt", tok_era_d_fmt, 0},
|
||||
{"alpha", tok_alpha, 0},
|
||||
{"era_d_t_fmt", tok_era_d_t_fmt, 0},
|
||||
{"",},
|
||||
{"mon", tok_mon, 0},
|
||||
{"order_end", tok_order_end, 0},
|
||||
{"t_fmt_ampm", tok_t_fmt_ampm, 0},
|
||||
{"xdigit", tok_xdigit, 0},
|
||||
{"mon_thousands_sep", tok_mon_thousands_sep, 0},
|
||||
{"",}, {"",}, {"",},
|
||||
{"collating-symbol", tok_collating_symbol, 0},
|
||||
{"yesexpr", tok_yesexpr, 0},
|
||||
{"era_year", tok_era_year, 0},
|
||||
{"charclass", tok_charclass, 0},
|
||||
{"upper", tok_upper, 0},
|
||||
{"p_sign_posn", tok_p_sign_posn, 0},
|
||||
{"",},
|
||||
{"thousands_sep", tok_thousands_sep, 0},
|
||||
{"",},
|
||||
{"graph", tok_graph, 0},
|
||||
{"",},
|
||||
{"mon_decimal_point", tok_mon_decimal_point, 0},
|
||||
{"p_cs_precedes", tok_p_cs_precedes, 0},
|
||||
{"",},
|
||||
{"space", tok_space, 0},
|
||||
{"n_sign_posn", tok_n_sign_posn, 0},
|
||||
{"",},
|
||||
{"decimal_point", tok_decimal_point, 0},
|
||||
{"from", tok_from, 0},
|
||||
{"lower", tok_lower, 0},
|
||||
{"",}, {"",},
|
||||
{"n_cs_precedes", tok_n_cs_precedes, 0},
|
||||
{"",},
|
||||
{"abmon", tok_abmon, 0},
|
||||
{"escape_char", tok_escape_char, 0},
|
||||
{"",}, {"",}, {"",},
|
||||
{"int_curr_symbol", tok_int_curr_symbol, 0},
|
||||
{"",}, {"",},
|
||||
{"collating-symbol", tok_collating_symbol, 0},
|
||||
{"d_t_fmt", tok_d_t_fmt, 0},
|
||||
{"backward", tok_backward, 0},
|
||||
{"",},
|
||||
{"abday", tok_abday, 0},
|
||||
{"punct", tok_punct, 0},
|
||||
{"",}, {"",}, {"",},
|
||||
{"p_sep_by_space", tok_p_sep_by_space, 0},
|
||||
{"digit", tok_digit, 0},
|
||||
{"",}, {"",}, {"",}, {"",},
|
||||
{"cntrl", tok_cntrl, 0},
|
||||
{"p_sign_posn", tok_p_sign_posn, 0},
|
||||
{"",},
|
||||
{"charconv", tok_charconv, 0},
|
||||
{"n_sep_by_space", tok_n_sep_by_space, 0},
|
||||
{"print", tok_print, 0},
|
||||
{"xdigit", tok_xdigit, 0},
|
||||
{"toupper", tok_toupper, 0},
|
||||
{"negative_sign", tok_negative_sign, 0},
|
||||
{"",},
|
||||
{"LC_COLLATE", tok_lc_collate, 0},
|
||||
{"n_sign_posn", tok_n_sign_posn, 0},
|
||||
{"tolower", tok_tolower, 0},
|
||||
{"",}, {"",},
|
||||
{"int_curr_symbol", tok_int_curr_symbol, 0},
|
||||
{"noexpr", tok_noexpr, 0},
|
||||
{"",},
|
||||
{"mon", tok_mon, 0},
|
||||
{"copy", tok_copy, 0},
|
||||
{"t_fmt_ampm", tok_t_fmt_ampm, 0},
|
||||
{"LC_MONETARY", tok_lc_monetary, 0},
|
||||
{"mon_thousands_sep", tok_mon_thousands_sep, 0},
|
||||
{"era", tok_era, 0},
|
||||
{"",}, {"",}, {"",}, {"",},
|
||||
{"p_cs_precedes", tok_p_cs_precedes, 0},
|
||||
{"era_t_fmt", tok_era_t_fmt, 0},
|
||||
{"blank", tok_blank, 0},
|
||||
{"",},
|
||||
{"comment_char", tok_comment_char, 0},
|
||||
{"day", tok_day, 0},
|
||||
{"",},
|
||||
{"currency_symbol", tok_currency_symbol, 0},
|
||||
{"frac_digits", tok_frac_digits, 0},
|
||||
{"",},
|
||||
{"mon_decimal_point", tok_mon_decimal_point, 0},
|
||||
{"n_cs_precedes", tok_n_cs_precedes, 0},
|
||||
{"",}, {"",}, {"",}, {"",}, {"",},
|
||||
{"era_d_fmt", tok_era_d_fmt, 0},
|
||||
{"alt_digits", tok_alt_digits, 0},
|
||||
{"era_d_t_fmt", tok_era_d_t_fmt, 0},
|
||||
{"",},
|
||||
{"grouping", tok_grouping, 0},
|
||||
{"",},
|
||||
{"cntrl", tok_cntrl, 0},
|
||||
{"",}, {"",}, {"",}, {"",},
|
||||
{"blank", tok_blank, 0},
|
||||
{"",}, {"",}, {"",}, {"",},
|
||||
{"space", tok_space, 0},
|
||||
{"",}, {"",},
|
||||
{"decimal_point", tok_decimal_point, 0},
|
||||
{"charclass", tok_charclass, 0},
|
||||
{"int_frac_digits", tok_int_frac_digits, 0},
|
||||
{"order_start", tok_order_start, 0},
|
||||
{"mon_grouping", tok_mon_grouping, 0},
|
||||
{"thousands_sep", tok_thousands_sep, 0},
|
||||
{"from", tok_from, 0},
|
||||
{"nostr", tok_nostr, 0},
|
||||
{"",}, {"",}, {"",}, {"",},
|
||||
{"alt_digits", tok_alt_digits, 0},
|
||||
{"lower", tok_lower, 0},
|
||||
{"",}, {"",}, {"",},
|
||||
{"order_end", tok_order_end, 0},
|
||||
{"",},
|
||||
{"frac_digits", tok_frac_digits, 0},
|
||||
{"",}, {"",}, {"",},
|
||||
{"alnum", tok_alnum, 0},
|
||||
{"",}, {"",},
|
||||
{"repertoiremap", tok_repertoiremap, 0},
|
||||
{"",},
|
||||
{"upper", tok_upper, 0},
|
||||
{"escape_char", tok_escape_char, 0},
|
||||
{"",}, {"",}, {"",},
|
||||
{"abday", tok_abday, 0},
|
||||
{"yesstr", tok_yesstr, 0},
|
||||
{"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",},
|
||||
{"",},
|
||||
{"yesexpr", tok_yesexpr, 0},
|
||||
{"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",},
|
||||
{"graph", tok_graph, 0},
|
||||
{"",}, {"",}, {"",}, {"",},
|
||||
{"am_pm", tok_am_pm, 0},
|
||||
{"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",},
|
||||
{"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",},
|
||||
{"",}, {"",}, {"",}, {"",},
|
||||
{"alnum", tok_alnum, 0},
|
||||
{"",},
|
||||
{"mon_grouping", tok_mon_grouping, 0},
|
||||
{"era_year", tok_era_year, 0},
|
||||
};
|
||||
|
||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
|
||||
|
||||
@ -49,6 +49,8 @@ enum token_t
|
||||
tok_g2esc,
|
||||
tok_g3esc,
|
||||
|
||||
tok_charids,
|
||||
|
||||
tok_code_set_name,
|
||||
tok_mb_cur_max,
|
||||
tok_mb_cur_min,
|
||||
@ -56,6 +58,7 @@ enum token_t
|
||||
tok_width,
|
||||
tok_width_variable,
|
||||
tok_width_default,
|
||||
tok_repertoiremap,
|
||||
|
||||
tok_lc_ctype,
|
||||
tok_copy,
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
|
||||
|
||||
@ -55,6 +55,7 @@ struct localedef_t
|
||||
|
||||
/* Declared in localedef.c. */
|
||||
extern int be_quiet;
|
||||
extern const char *repertoiremap;
|
||||
|
||||
/* Found in localedef.c. */
|
||||
void def_to_process (const char *name, int category);
|
||||
|
323
locale/programs/repertoire.c
Normal file
323
locale/programs/repertoire.c
Normal file
@ -0,0 +1,323 @@
|
||||
/* Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#include <error.h>
|
||||
#include <limits.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "linereader.h"
|
||||
#include "charset.h"
|
||||
#include "repertoire.h"
|
||||
#include "simple-hash.h"
|
||||
|
||||
|
||||
extern void *xmalloc (size_t __n);
|
||||
|
||||
|
||||
/* Simple keyword hashing for the repertoiremap. */
|
||||
static struct repertoire_t *parse_repertoiremap (const char *filename);
|
||||
static const struct keyword_t *repertoiremap_hash (const char *str, int len);
|
||||
|
||||
|
||||
struct repertoire_t *
|
||||
repertoire_read (const char *filename)
|
||||
{
|
||||
const char *pathnfile;
|
||||
struct repertoire_t *result = NULL;
|
||||
|
||||
if (euidaccess (filename, R_OK) >= 0)
|
||||
pathnfile = filename;
|
||||
else if (filename[0] != '/')
|
||||
{
|
||||
char *cp = xmalloc (strlen (filename) + sizeof CHARMAP_PATH + 1);
|
||||
stpcpy (stpcpy (stpcpy (cp, CHARMAP_PATH), "/"), filename);
|
||||
|
||||
pathnfile = (const char *) cp;
|
||||
}
|
||||
else
|
||||
pathnfile = NULL;
|
||||
|
||||
if (pathnfile != NULL)
|
||||
{
|
||||
result = parse_repertoiremap (pathnfile);
|
||||
|
||||
if (result == NULL && !be_quiet)
|
||||
error (0, errno, _("repertoire map file `%s' not found"), filename);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static struct repertoire_t *
|
||||
parse_repertoiremap (const char *filename)
|
||||
{
|
||||
struct linereader *cmfile;
|
||||
struct repertoire_t *result;
|
||||
int state;
|
||||
char *from_name = NULL;
|
||||
char *to_name = NULL;
|
||||
|
||||
/* Determine path. */
|
||||
cmfile = lr_open (filename, repertoiremap_hash);
|
||||
if (cmfile == NULL)
|
||||
{
|
||||
if (strchr (filename, '/') == NULL)
|
||||
{
|
||||
/* Look in the systems charmap directory. */
|
||||
char *buf = xmalloc (strlen (filename) + 1
|
||||
+ sizeof (REPERTOIREMAP_PATH));
|
||||
|
||||
stpcpy (stpcpy (stpcpy (buf, REPERTOIREMAP_PATH), "/"), filename);
|
||||
cmfile = lr_open (buf, repertoiremap_hash);
|
||||
|
||||
if (cmfile == NULL)
|
||||
free (buf);
|
||||
}
|
||||
|
||||
if (cmfile == NULL)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Allocate room for result. */
|
||||
result = (struct repertoire_t *) xmalloc (sizeof (struct repertoire_t));
|
||||
memset (result, '\0', sizeof (struct repertoire_t));
|
||||
|
||||
#define obstack_chunk_alloc malloc
|
||||
#define obstack_chunk_free free
|
||||
obstack_init (&result->mem_pool);
|
||||
|
||||
if (init_hash (&result->char_table, 256))
|
||||
{
|
||||
free (result);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* We use a state machine to describe the charmap description file
|
||||
format. */
|
||||
state = 1;
|
||||
while (1)
|
||||
{
|
||||
/* What's on? */
|
||||
struct token *now = lr_token (cmfile, NULL);
|
||||
enum token_t nowtok = now->tok;
|
||||
struct token *arg;
|
||||
|
||||
if (nowtok == tok_eof)
|
||||
break;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case 1:
|
||||
/* We haven't yet read any character definition. This is where
|
||||
we accept escape_char and comment_char definitions. */
|
||||
if (nowtok == tok_eol)
|
||||
/* Ignore empty lines. */
|
||||
continue;
|
||||
|
||||
if (nowtok == tok_escape_char || nowtok == tok_comment_char)
|
||||
{
|
||||
/* We know that we need an argument. */
|
||||
arg = lr_token (cmfile, NULL);
|
||||
|
||||
if (arg->tok != tok_ident)
|
||||
{
|
||||
lr_error (cmfile, _("syntax error in prolog: %s"),
|
||||
_("bad argument"));
|
||||
|
||||
lr_ignore_rest (cmfile, 0);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (arg->val.str.len != 1)
|
||||
{
|
||||
lr_error (cmfile, _("\
|
||||
argument to <%s> must be a single character"),
|
||||
nowtok == tok_escape_char ? "escape_char"
|
||||
: "comment_char");
|
||||
|
||||
lr_ignore_rest (cmfile, 0);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (nowtok == tok_escape_char)
|
||||
cmfile->escape_char = *arg->val.str.start;
|
||||
else
|
||||
cmfile->comment_char = *arg->val.str.start;
|
||||
|
||||
lr_ignore_rest (cmfile, 1);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (nowtok == tok_charids)
|
||||
{
|
||||
lr_ignore_rest (cmfile, 1);
|
||||
|
||||
state = 2;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Otherwise we start reading the character definitions. */
|
||||
state = 2;
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case 2:
|
||||
/* We are now are in the body. Each line
|
||||
must have the format "%s %s %s\n" or "%s...%s %s %s\n". */
|
||||
if (nowtok == tok_eol)
|
||||
/* Ignore empty lines. */
|
||||
continue;
|
||||
|
||||
if (nowtok == tok_end)
|
||||
{
|
||||
state = 90;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (nowtok != tok_bsymbol)
|
||||
{
|
||||
lr_error (cmfile,
|
||||
_("syntax error in repertoire map definition: %s"),
|
||||
_("no symbolic name given"));
|
||||
|
||||
lr_ignore_rest (cmfile, 0);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* If the previous line was not completely correct free the
|
||||
used memory. */
|
||||
if (from_name != NULL)
|
||||
obstack_free (&result->mem_pool, from_name);
|
||||
|
||||
from_name = (char *) obstack_copy0 (&result->mem_pool,
|
||||
now->val.str.start,
|
||||
now->val.str.len);
|
||||
to_name = NULL;
|
||||
|
||||
state = 3;
|
||||
continue;
|
||||
|
||||
case 3:
|
||||
/* We have two possibilities: We can see an ellipsis or an
|
||||
encoding value. */
|
||||
if (nowtok == tok_ellipsis)
|
||||
{
|
||||
state = 4;
|
||||
continue;
|
||||
}
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case 5:
|
||||
/* We expect a value of the form <Uxxxx> or <Uxxxxxxxx> where
|
||||
the xxx mean a hexadecimal value. */
|
||||
state = 2;
|
||||
|
||||
errno = 0;
|
||||
if (nowtok != tok_ucs2 && nowtok != tok_ucs4)
|
||||
{
|
||||
lr_error (cmfile,
|
||||
_("syntax error in repertoire map definition: %s"),
|
||||
_("no <Uxxxx> or <Uxxxxxxxx> value given"));
|
||||
|
||||
lr_ignore_rest (cmfile, 0);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* We've found a new valid definition. */
|
||||
charset_new_char (cmfile, &result->char_table, 4,
|
||||
now->val.charcode.val, from_name, to_name);
|
||||
|
||||
/* Ignore the rest of the line. */
|
||||
lr_ignore_rest (cmfile, 0);
|
||||
|
||||
from_name = NULL;
|
||||
to_name = NULL;
|
||||
|
||||
continue;
|
||||
|
||||
case 4:
|
||||
if (nowtok != tok_bsymbol)
|
||||
{
|
||||
lr_error (cmfile,
|
||||
_("syntax error in repertoire map definition: %s"),
|
||||
_("no symbolic name given for end of range"));
|
||||
|
||||
lr_ignore_rest (cmfile, 0);
|
||||
state = 2;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Copy the to-name in a safe place. */
|
||||
to_name = (char *) obstack_copy0 (&result->mem_pool,
|
||||
cmfile->token.val.str.start,
|
||||
cmfile->token.val.str.len);
|
||||
|
||||
state = 5;
|
||||
continue;
|
||||
|
||||
case 90:
|
||||
if (nowtok != tok_charids)
|
||||
lr_error (cmfile, _("\
|
||||
`%1$s' definition does not end with `END %1$s'"), "CHARIDS");
|
||||
|
||||
lr_ignore_rest (cmfile, nowtok == tok_charids);
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (state != 2 && state != 90 && !be_quiet)
|
||||
error (0, 0, _("%s: premature end of file"), cmfile->fname);
|
||||
|
||||
lr_close (cmfile);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static const struct keyword_t *
|
||||
repertoiremap_hash (const char *str, int len)
|
||||
{
|
||||
static const struct keyword_t wordlist[0] =
|
||||
{
|
||||
{"escape_char", tok_escape_char, 1},
|
||||
{"comment_char", tok_comment_char, 1},
|
||||
{"CHARIDS", tok_charids, 0},
|
||||
{"END", tok_end, 0},
|
||||
};
|
||||
|
||||
if (len == 11 && memcmp (wordlist[0].name, str, 11) == 0)
|
||||
return &wordlist[0];
|
||||
if (len == 12 && memcmp (wordlist[1].name, str, 12) == 0)
|
||||
return &wordlist[1];
|
||||
if (len == 7 && memcmp (wordlist[2].name, str, 7) == 0)
|
||||
return &wordlist[2];
|
||||
if (len == 3 && memcmp (wordlist[3].name, str, 3) == 0)
|
||||
return &wordlist[3];
|
||||
|
||||
return NULL;
|
||||
}
|
38
locale/programs/repertoire.h
Normal file
38
locale/programs/repertoire.h
Normal file
@ -0,0 +1,38 @@
|
||||
/* Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _REPERTOIREMAP_H
|
||||
#define _REPERTOIREMAP_H 1
|
||||
|
||||
#include <obstack.h>
|
||||
|
||||
#include "simple-hash.h"
|
||||
#include "linereader.h"
|
||||
|
||||
struct repertoire_t
|
||||
{
|
||||
struct obstack mem_pool;
|
||||
hash_table char_table;
|
||||
};
|
||||
|
||||
|
||||
/* Prototypes for repertoire map handling functions. */
|
||||
struct repertoire_t *repertoire_read (const char *filename);
|
||||
|
||||
#endif /* repertoiremap.h */
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
|
||||
|
||||
@ -92,7 +92,8 @@ translate_string (char *str, struct charset_t *charset)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
value = charset_find_value (charset, str + 1, tp - (str + 1));
|
||||
value = charset_find_value (&charset->char_table, str + 1,
|
||||
tp - (str + 1));
|
||||
if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
|
||||
{
|
||||
free (buf);
|
||||
|
@ -1,3 +1,10 @@
|
||||
1998-04-30 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* Makefile: Install repertoire maps.
|
||||
* localedata/mnemonic.ds: Moved into repertoiremaps subdir.
|
||||
* localedata/repertoiremaps/charids.894: New file.
|
||||
* localedata/repertoiremaps/mnemonic.ds: New file.
|
||||
|
||||
1998-04-29 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* tst-locale.sh: Add comment for when multi-byte charsets in
|
||||
|
@ -30,6 +30,10 @@ charmaps := $(filter-out $(addprefix charmaps/, CVS RCS %~), \
|
||||
locales := $(filter-out $(addprefix locales/, CVS RCS %~), \
|
||||
$(wildcard locales/*))
|
||||
|
||||
# List of repertoire maps.
|
||||
repertoires := $(filter-out $(addprefix repertoiremaps/, CVS RCS %~), \
|
||||
$(wildcard repertoiremaps/*))
|
||||
|
||||
test-srcs := collate-test xfrm-test tst-fmon tst-rpmatch
|
||||
test-input := de_DE.ISO-8859-1 da_DK.ISO-8859-1 fr_CA,2.13.ISO-8859-1
|
||||
test-output := $(foreach s, .out .xout, \
|
||||
@ -42,7 +46,7 @@ ld-test-srcs := $(addprefix tests/,$(addsuffix .cm,$(ld-test-names)) \
|
||||
$(addsuffix .def,$(ld-test-names)))
|
||||
|
||||
distribute := CHECKSUMS tst-fmon.sh tst-fmon.data ChangeLog sort-test.sh \
|
||||
README mnemonic.ds fr_CA,2.13.in de_DE.in da_DK.in \
|
||||
README fr_CA,2.13.in de_DE.in da_DK.in $(repertoiremaps) \
|
||||
$(charmaps) $(locales) $(ld-test-srcs) tst-rpmatch.sh \
|
||||
SUPPORTED tst-locale.sh
|
||||
|
||||
@ -50,13 +54,15 @@ distribute := CHECKSUMS tst-fmon.sh tst-fmon.data ChangeLog sort-test.sh \
|
||||
include ../Makeconfig
|
||||
|
||||
# Files to install.
|
||||
install-others := $(addprefix $(inst_i18ndir)/, $(charmaps) $(locales))
|
||||
install-others := $(addprefix $(inst_i18ndir)/, $(charmaps) $(locales) \
|
||||
$(repertoiremaps))
|
||||
|
||||
include ../Rules
|
||||
|
||||
# Install the source files in the appropriate directories.
|
||||
$(inst_i18ndir)/charmaps/%: charmaps/% $(+force); $(do-install)
|
||||
$(inst_i18ndir)/locales/%: locales/% $(+force); $(do-install)
|
||||
$(inst_i18ndir)/repertoiremaps/%: repertoiremaps/% $(+force); $(do-install)
|
||||
|
||||
|
||||
ifeq (no,$(cross-compiling))
|
||||
|
511
localedata/repertoiremaps/charids.894
Normal file
511
localedata/repertoiremaps/charids.894
Normal file
@ -0,0 +1,511 @@
|
||||
<escape_char> /
|
||||
# Charids refering to ISO 10646/Correspondance des caract<e!>res avec ISO 10646
|
||||
# Version: 1994-08-25
|
||||
#<comment_char> #
|
||||
CHARIDS
|
||||
<NUL> <U0000> # NULL / NUL
|
||||
<SOH> <U0001> # START OF HEADING / D<E'>BUT D'ENT<E/>>TE
|
||||
<STX> <U0002> # START OF TEXT / D<E'>BUT DE TEXTE
|
||||
<ETX> <U0003> # END OF TEXT / FIN DE TEXTE
|
||||
<EOT> <U0004> # END OF TRANSMISSION / FIN DE TRANSMISSION
|
||||
<ENQ> <U0005> # ENQUIRY / DEMANDE
|
||||
<ACK> <U0006> # ACKNOWLEDGE / ACCUS<E'> DE R<E'>CEPTION POSITIF
|
||||
<BEL> <U0007> # BELL / SONNERIE
|
||||
<BS> <U0008> # BACKSPACE / ESPACE ARRI<E!>RE
|
||||
<HT> <U0009> # CHARACTER TABULATION / TABULATION HORIZONTALE
|
||||
<LF> <U000A> # LINE FEED / INTERLIGNE
|
||||
<VT> <U000B> # LINE TABULATION / TABULATION VERTICALE
|
||||
<FF> <U000C> # FORM FEED / PAGE SUIVANTE
|
||||
<CR> <U000D> # CARRIAGE RETURN / RETOUR DE CHARIOT
|
||||
<SO> <U000E> # SHIFT OUT / HORS CODE
|
||||
<SI> <U000F> # SHIFT IN / EN CODE
|
||||
<DLE> <U0010> # DATA LINK ESCAPE / <E'>CHAPPEMENT TRANSMISSION
|
||||
<DC1> <U0011> # DEVICE CONTROL ONE / COMMANDE D'APPAREIL UN
|
||||
<DC2> <U0012> # DEVICE CONTROL TWO / COMMANDE D'APPAREIL DEUX
|
||||
<DC3> <U0013> # DEVICE CONTROL THREE / COMMANDE D'APPAREIL TROIS
|
||||
<DC4> <U0014> # DEVICE CONTROL FOUR / COMMANDE D'APPAREIL QUATRE
|
||||
<NAK> <U0015> # NEGATIVE ACKNOWLEDGE / ACCUS<E'> DE R<E'>CEPTION N<E'>GATIF
|
||||
<SYN> <U0016> # SYNCHRONOUS IDLE / SYNCHRONISATION
|
||||
<ETB> <U0017> # END OF TRANSMISSION BLOCK / FIN DE TRANSMISSION DE BLOC
|
||||
<CAN> <U0018> # CANCEL / ANNULATION
|
||||
<EM> <U0019> # END OF MEDIUM / FIN DE SUPPORT
|
||||
<SUB> <U001A> # SUBSTITUTE / CARACT<E!>RE DE SUBSTITUTION
|
||||
<ESC> <U001B> # ESCAPE / <E'>CHAPPEMENT
|
||||
<IS4> <U001C> # FILE SEPARATOR / S<E'>PARATEUR DE FICHIER
|
||||
<FS> <U001C> # INFORMATION SEPARATOR FOUR / S<E'>PARATEUR DE FICHIER
|
||||
<IFS> <U001C> # INFORMATION SEPARATOR FOUR / S<E'>PARATEUR DE FICHIER
|
||||
<IS3> <U001D> # GROUP SEPARATOR / S<E'>PARATEUR DE GROUPE
|
||||
<GS> <U001D> # INFORMATION SEPARATOR THREE / S<E'>PARATEUR DE GROUPE
|
||||
<IGS> <U001D> # INFORMATION SEPARATOR THREE / S<E'>PARATEUR DE GROUPE
|
||||
<IS2> <U001E> # RECORD SEPARATOR / S<E'>PARATEUR D'ARTICLE
|
||||
<RS> <U001E> # INFORMATION SEPARATOR TWO / S<E'>PARATEUR D'ARTICLE
|
||||
<IRS> <U001E> # INFORMATION SEPARATOR TWO / S<E'>PARATEUR D'ARTICLE
|
||||
<IS1> <U001F> # UNIT SEPARATOR / S<E'>PARATEUR DE SOUS-ARTICLE
|
||||
<US> <U001F> # INFORMATION SEPARATOR ONE / S<E'>PARATEUR DE SOUS-ARTICLE
|
||||
<SP> <U0020> # SPACE / ESPACE
|
||||
<!> <U0021> # EXCLAMATION MARK / POINT D'EXCLAMATION
|
||||
<"> <U0022> # QUOTATION MARK / GUILLEMET
|
||||
<H-> <U0023> # NUMBER SIGN / CROISILLON
|
||||
<!S> <U0024> # DOLLAR SIGN / SYMBOLE DOLLAR
|
||||
<%> <U0025> # PERCENT SIGN / SYMBOLE POURCENT
|
||||
<&> <U0026> # AMPERSAND / PERLU<E!>TE
|
||||
<'> <U0027> # APOSTROPHE / APOSTROPHE
|
||||
<(> <U0028> # LEFT PARENTHESIS / PARENTH<E!>SE GAUCHE
|
||||
<)> <U0029> # RIGHT PARENTHESIS / PARENTH<E!>SE DROITE
|
||||
<*> <U002A> # ASTERISK / AST<E'>RISQUE
|
||||
<+> <U002B> # PLUS SIGN / SIGNE PLUS
|
||||
<,> <U002C> # COMMA / VIRGULE
|
||||
<-> <U002D> # HYPHEN-MINUS / TRAIT D'UNION-SIGNE MOINS
|
||||
<.> <U002E> # FULL STOP / POINT
|
||||
<//> <U002F> # SOLIDUS / BARRE OBLIQUE
|
||||
<0> <U0030> # DIGIT ZERO / CHIFFRE Z<E'>RO
|
||||
<1> <U0031> # DIGIT ONE / CHIFFRE UN
|
||||
<2> <U0032> # DIGIT TWO / CHIFFRE DEUX
|
||||
<3> <U0033> # DIGIT THREE / CHIFFRE TROIS
|
||||
<4> <U0034> # DIGIT FOUR / CHIFFRE QUATRE
|
||||
<5> <U0035> # DIGIT FIVE / CHIFFRE CINQ
|
||||
<6> <U0036> # DIGIT SIX / CHIFFRE SIX
|
||||
<7> <U0037> # DIGIT SEVEN / CHIFFRE SEPT
|
||||
<8> <U0038> # DIGIT EIGHT / CHIFFRE HUIT
|
||||
<9> <U0039> # DIGIT NINE / CHIFFRE NEUF
|
||||
<:> <U003A> # COLON / DEUX-POINTS
|
||||
<;> <U003B> # SEMICOLON / POINT-VIRGULE
|
||||
<<> <U003C> # LESS-THAN SIGN / SIGNE INF<E'>RIEUR <A!>
|
||||
<=> <U003D> # EQUALS SIGN / SIGNE <E'>GAL
|
||||
</>> <U003E> # GREATER-THAN SIGN / SIGNE SUP<E'>RIEUR <A!>
|
||||
<?> <U003F> # QUESTION MARK / POINT D'INTERROGATION
|
||||
<@> <U0040> # COMMERCIAL AT / A COMMERCIAL
|
||||
<Oa> <U0040> # COMMERCIAL AT / A COMMERCIAL
|
||||
#
|
||||
# In the following, CAP stands for LATIN CAPITAL LETTER
|
||||
# CAPLIG stands for LATIN CAPITAL LIGATURE
|
||||
# IVT stnads for INVERTED
|
||||
# LOW stands for LATIN SMALL LETTER
|
||||
# LOWLIG stands for LATIN SMALL LIGATURE
|
||||
# OI stands for ORDINAL INDICATOR
|
||||
# PDAQ stands for POINTING DOUBLE ANGLE QUOTATION
|
||||
# VF stands for VULGAR FRACTION
|
||||
#
|
||||
# Ci-apr<e!>s, FO se lit FRACTION ORDINAIRE
|
||||
# GAD se lit GUILLEMET ANGULAIRE DOUBLE
|
||||
# IO se lit INDICATEUR ORDINAL
|
||||
# INV se lit INVERS<E'>
|
||||
# LIGMAJ se lit LIGATURE MAJUSCULE LATINE
|
||||
# LIGMIN se lit LIGATURE MINUSCULE LATINE
|
||||
# MAJ se lit LETTRE MAJUSCULE LATINE
|
||||
# MIN se lit LETTRE MINUSCULE LATINE
|
||||
#
|
||||
<A> <U0041> # CAP A / MAJ A
|
||||
<B> <U0042> # CAP B / MAJ B
|
||||
<C> <U0043> # CAP C / MAJ C
|
||||
<D> <U0044> # CAP D / MAJ D
|
||||
<E> <U0045> # CAP E / MAJ E
|
||||
<F> <U0046> # CAP F / MAJ F
|
||||
<G> <U0047> # CAP G / MAJ G
|
||||
<H> <U0048> # CAP H / MAJ H
|
||||
<I> <U0049> # CAP I / MAJ I
|
||||
<J> <U004A> # CAP J / MAJ J
|
||||
<K> <U004B> # CAP K / MAJ K
|
||||
<L> <U004C> # CAP L / MAJ L
|
||||
<M> <U004D> # CAP M / MAJ M
|
||||
<N> <U004E> # CAP N / MAJ N
|
||||
<O> <U004F> # CAP O / MAJ O
|
||||
<P> <U0050> # CAP P / MAJ P
|
||||
<Q> <U0051> # CAP Q / MAJ Q
|
||||
<R> <U0052> # CAP R / MAJ R
|
||||
<S> <U0053> # CAP S / MAJ S
|
||||
<T> <U0054> # CAP T / MAJ T
|
||||
<U> <U0055> # CAP U / MAJ U
|
||||
<V> <U0056> # CAP V / MAJ V
|
||||
<W> <U0057> # CAP W / MAJ W
|
||||
<X> <U0058> # CAP X / MAJ X
|
||||
<Y> <U0059> # CAP Y / MAJ Y
|
||||
<Z> <U005A> # CAP Z / MAJ Z
|
||||
<!(> <U005B> # LEFT SQUARE BRACKET / CROCHET GAUCHE
|
||||
<////> <U005C> # REVERSE SOLIDUS / BARRE OBLIQUE INVERS<E'>E
|
||||
<)!> <U005D> # RIGHT SQUARE BRACKET / CROCHET DROIT
|
||||
<'/>> <U005E> # CIRCUMFLEX ACCENT / ACCENT CIRCONFLEXE
|
||||
<_> <U005F> # LOW LINE / TRAIT BAS
|
||||
<'!> <U0060> # GRAVE ACCENT / ACCENT GRAVE
|
||||
<a> <U0061> # LOW A / MIN A
|
||||
<b> <U0062> # LOW B / MIN B
|
||||
<c> <U0063> # LOW C / MIN C
|
||||
<d> <U0064> # LOW D / MIN D
|
||||
<e> <U0065> # LOW E / MIN E
|
||||
<f> <U0066> # LOW F / MIN F
|
||||
<g> <U0067> # LOW G / MIN G
|
||||
<h> <U0068> # LOW H / MIN H
|
||||
<i> <U0069> # LOW I / MIN I
|
||||
<j> <U006A> # LOW J / MIN J
|
||||
<k> <U006B> # LOW K / MIN K
|
||||
<l> <U006C> # LOW L / MIN L
|
||||
<m> <U006D> # LOW M / MIN M
|
||||
<n> <U006E> # LOW N / MIN N
|
||||
<o> <U006F> # LOW O / MIN O
|
||||
<p> <U0070> # LOW P / MIN P
|
||||
<q> <U0071> # LOW Q / MIN Q
|
||||
<r> <U0072> # LOW R / MIN R
|
||||
<s> <U0073> # LOW S / MIN S
|
||||
<t> <U0074> # LOW T / MIN T
|
||||
<u> <U0075> # LOW U / MIN U
|
||||
<v> <U0076> # LOW V / MIN V
|
||||
<w> <U0077> # LOW W / MIN W
|
||||
<x> <U0078> # LOW X / MIN X
|
||||
<y> <U0079> # LOW Y / MIN Y
|
||||
<z> <U007A> # LOW Z / MIN Z
|
||||
<<(> <U007B> # LEFT CURLY BRACKET / ACCOLADE GAUCHE
|
||||
<!!> <U007C> # VERTICAL LINE / LIGNE VERTICALE
|
||||
<)/>> <U007D> # RIGHT CURLY BRACKET / ACCOLADE DROITE
|
||||
<'?> <U007E> # TILDE
|
||||
#
|
||||
# Values #x.. : IBM 850 code points / Valeurs #x.. : code IBM 850
|
||||
#
|
||||
<NS> <U00A0> #xff # NO-BREAK SPACE / ESPACE LIANT
|
||||
<!I> <U00A1> #xad # IVT EXCLAMATION MARK / POINT D'EXCLAMATION INV
|
||||
<!C> <U00A2> #xbd # CENT SIGN / SYMBOLE CENTIME
|
||||
<L-> <U00A3> #x9c # POUND SIGN / SYMBOLE LIVRE
|
||||
<Xo> <U00A4> #xcf # CURRENCY SIGN / SYMBOLE MON<E'>TAIRE
|
||||
<Y-> <U00A5> #xbe # YEN SIGN /SYMBOLE YEN
|
||||
<!B> <U00A6> #xdd # BROKEN BAR / BARRE VERTICALE INTERROMPUE
|
||||
<So> <U00A7> #xf5 # SECTION SIGN / SYMBOLE PARAGRAPHE
|
||||
<':> <U00A8> #xf9 # DIAERESIS / TR<E'>MA
|
||||
<OC> <U00A9> #xb8 # COPYRIGHT SIGN / SYMBOLE COPYRIGHT
|
||||
<-a> <U00AA> #xa6 # FEMININE OI / IO F<E'>MININ
|
||||
<<<> <U00AB> #xaf # LEFT PDAQ / GAD VERS LA GAUCHE
|
||||
<7!> <U00AC> #xaa # NOT SIGN / SIGNE N<E'>GATION
|
||||
<--> <U00AD> #xf0 # SOFT HYPHEN / TIRET VIRTUEL
|
||||
<OR> <U00AE> #xa9 # REGISTERED SIGN / SYMBOLE MARQUE D<E'>POS<E'>E
|
||||
<'-> <U00AF> #xee # MACRON
|
||||
<DG> <U00B0> #xf8 # DEGREE SIGN / SYMBOLE DEGR<E'>
|
||||
<+-> <U00B1> #xf1 # PLUS-MINUS SIGN / SIGNE PLUS OU MOINS
|
||||
<2S> <U00B2> #xfd # SUPERSCRIPT TWO / EXPOSANT DEUX
|
||||
<3S> <U00B3> #xfc # SUPERSCRIPT THREE / EXPOSANT TROIS
|
||||
<''> <U00B4> #xef # ACUTE ACCENT / ACCENT AIGU
|
||||
<My> <U00B5> #xe6 # MICRO SIGN / SYMBOLE MICRO
|
||||
<9I> <U00B6> #xf4 # PILCROW SIGN / SYMBOLE ALIN<E'>A
|
||||
<.M> <U00B7> #xfa # MIDDLE DOT / POINT M<E'>DIAN
|
||||
<',> <U00B8> #xf7 # CEDILLA / C<E'>DILLE
|
||||
<1S> <U00B9> #xfb # SUPERSCRIPT ONE / EXPOSANT UN
|
||||
<-o> <U00BA> #xa7 # MASCULINE OI / IO MASCULIN
|
||||
</>/>> <U00BB> #xae # RIGHT PDAQ / GAD VERS LA DROITE
|
||||
<14> <U00BC> #xac # VF ONE QUARTER / FO UN QUART
|
||||
<12> <U00BD> #xab # VF ONE HALF / FO UN DEMI
|
||||
<34> <U00BE> #xf3 # VF THREE QUARTERS / FO TROIS QUARTS
|
||||
<?I> <U00BF> #xa8 # IVT QUESTION MARK /POINT D'INTERROGATION INV
|
||||
<A!> <U00C0> #xb7 # CAP A WITH GRAVE / MAJ A ACCENT GRAVE
|
||||
<A'> <U00C1> #xb5 # CAP A WITH ACUTE / MAJ A ACCENT AIGU
|
||||
<A/>> <U00C2> #xb6 # CAP A WITH CIRCUMFLEX / MAJ A ACCENT CIRCONFLEXE
|
||||
<A?> <U00C3> #xc7 # CAP A WITH TILDE / MAJ A TILDE
|
||||
<A:> <U00C4> #x8e # CAP A WITH DIAERESIS / MAJ A TR<E'>MA
|
||||
<AA> <U00C5> #x8f # CAP A WITH RING ABOVE / MAJ A ROND
|
||||
<AE> <U00C6> #x92 # CAPLIG / LIGMAJ AE
|
||||
<C,> <U00C7> #x80 # CAP C WITH CEDILLA / MAJ C C<E'>DILLE
|
||||
<E!> <U00C8> #xd4 # CAP E WITH GRAVE / MAJ E ACCENT GRAVE
|
||||
<E'> <U00C9> #x90 # CAP E WITH ACUTE / MAJ E ACCENT AIGU
|
||||
<E/>> <U00CA> #xd2 # CAP E WITH CIRCUMFLEX / MAJ E ACCENT CIRCONFLEXE
|
||||
<E:> <U00CB> #xd3 # CAP E WITH DIAERESIS / MAJ E TR<E'>MA
|
||||
<I!> <U00CC> #xde # CAP I WITH GRAVE / MAJ I ACCENT GRAVE
|
||||
<I'> <U00CD> #xd6 # CAP I WITH ACUTE / MAJ I ACCENT AIGU
|
||||
<I/>> <U00CE> #xd7 # CAP I WITH CIRCUMFLEX / MAJ I ACCENT CIRCONFLEXE
|
||||
<I:> <U00CF> #xd8 # CAP I WITH DIAERESIS / MAJ I TR<E'>MA
|
||||
<D-> <U00D0> #xd1 # CAP ETH (Icelandic) / MAJ ETH (islandaise)
|
||||
<N?> <U00D1> #xa5 # CAP N WITH TILDE / MAJ N TILDE
|
||||
<O!> <U00D2> #xe3 # CAP O WITH GRAVE / MAJ O ACCENT GRAVE
|
||||
<O'> <U00D3> #xe0 # CAP O WITH ACUTE / MAJ O ACCENT AIGU
|
||||
<O/>> <U00D4> #xe2 # CAP O WITH CIRCUMFLEX / MAJ O ACCENT CIRCONFLEXE
|
||||
<O?> <U00D5> #xe5 # CAP O WITH TILDE / MAJ O TILDE
|
||||
<O:> <U00D6> #x99 # CAP O WITH DIAERESIS / MAJ O TR<E'>MA
|
||||
<*X> <U00D7> #x9e # MULTIPLICATION SIGN / SIGNE MULTIPLICATION
|
||||
<O//> <U00D8> #x9d # CAP O WITH STROKE / MAJ O BARR<E'>E EN OBLIQUE
|
||||
<U!> <U00D9> #xeb # CAP U WITH GRAVE / MAJ U ACCENT GRAVE
|
||||
<U'> <U00DA> #xe9 # CAP U WITH ACUTE / MAJ U ACCENT AIGU
|
||||
<U/>> <U00DB> #xea # CAP U WITH CIRCUMFLEX / MAJ U ACCENT CIRCONFLEXE
|
||||
<U:> <U00DC> #x9a # CAP U WITH DIAERESIS / MAJ U TR<E'>MA
|
||||
<Y'> <U00DD> #xed # CAP Y WITH ACUTE / MAJ Y ACCENT AIGU
|
||||
<TH> <U00DE> #xe8 # CAP THORN (Icelandic) / MAJ THORN (islandaise)
|
||||
<ss> <U00DF> #xe1 # LOW SHARP S (German)/ MIN S DUR (allemande)
|
||||
<a!> <U00E0> #x85 # LOW A WITH GRAVE / MIN A ACCENT GRAVE
|
||||
<a'> <U00E1> #xa0 # LOW A WITH ACUTE / MIN A ACCENT AIGU
|
||||
<a/>> <U00E2> #x83 # LOW A WITH CIRCUMFLEX / MIN A ACCENT CIRCONFLEXE
|
||||
<a?> <U00E3> #xc6 # LOW A WITH TILDE / MIN A TILDE
|
||||
<a:> <U00E4> #x84 # LOW A WITH DIAERESIS / MIN A TR<E'>MA
|
||||
<aa> <U00E5> #x86 # LOW A WITH RING ABOVE / MIN A ROND
|
||||
<ae> <U00E6> #x91 # LOWLIG / LIGMIN AE
|
||||
<c,> <U00E7> #x87 # LOW C WITH CEDILLA / MIN C C<E'>DILLE
|
||||
<e!> <U00E8> #x8a # LOW E WITH GRAVE / MIN E ACCENT GRAVE
|
||||
<e'> <U00E9> #x82 # LOW E WITH ACUTE / MIN E ACCENT AIGU
|
||||
<e/>> <U00EA> #x88 # LOW E WITH CIRCUMFLEX / MIN E ACCENT CIRCONFLEXE
|
||||
<e:> <U00EB> #x89 # LOW E WITH DIAERESIS / MIN E TR<E'>MA
|
||||
<i!> <U00EC> #x8d # LOW I WITH GRAVE / MIN I ACCENT GRAVE
|
||||
<i'> <U00ED> #xa1 # LOW I WITH ACUTE / MIN I ACCENT AIGU
|
||||
<i/>> <U00EE> #x8c # LOW I WITH CIRCUMFLEX / MIN I ACCENT CIRCONFLEXE
|
||||
<i:> <U00EF> #x8b # LOW I WITH DIAERESIS / MIN I TR<E'>MA
|
||||
<d-> <U00F0> #xd0 # LOW ETH (Icelandic) / MIN ETH (islandaise)
|
||||
<n?> <U00F1> #xa4 # LOW N WITH TILDE / MIN N TILDE
|
||||
<o!> <U00F2> #x95 # LOW O WITH GRAVE / MIN O ACCENT GRAVE
|
||||
<o'> <U00F3> #xa2 # LOW O WITH ACUTE / MIN O ACCENT AIGU
|
||||
<o/>> <U00F4> #x93 # LOW O WITH CIRCUMFLEX / MIN O ACCENT CIRCONFLEXE
|
||||
<o?> <U00F5> #xe4 # LOW O WITH TILDE / MIN O TILDE
|
||||
<o:> <U00F6> #x94 # LOW O WITH DIAERESIS / MIN O TR<E'>MA
|
||||
<-:> <U00F7> #xf6 # DIVISION SIGN / SIGNE DIVISION
|
||||
<o//> <U00F8> #x9b # LOW O WITH STROKE / MIN O BARR<E'>E EN OBLIQUE
|
||||
<u!> <U00F9> #x97 # LOW U WITH GRAVE / MIN U ACCENT GRAVE
|
||||
<u'> <U00FA> #xa3 # LOW U WITH ACUTE / MIN U ACCENT AIGU
|
||||
<u/>> <U00FB> #x96 # LOW U WITH CIRCUMFLEX / MIN U ACCENT CIRCONFLEXE
|
||||
<u:> <U00FC> #x81 # LOW U WITH DIAERESIS / MIN U TR<E'>MA
|
||||
<y:> <U00FF> #x98 # LOW Y WITH DIAERESIS / MIN Y TR<E'>MA
|
||||
<th> <U00FE> #xe7 # LOW THORN (Icelandic) / MIN THORN (islandaise)
|
||||
<y'> <U00FD> #xec # LOW Y WITH ACUTE / MIN Y ACCENT AIGU
|
||||
#
|
||||
# Par prudence les symboles suivants ont <e'>t<e'> d<e'>finis, m<e/>>me
|
||||
# s'ils ne sont pas utilis<e'>s dans les LOCALEs canadiens.
|
||||
#
|
||||
# By prudence the following symbols have been defined, even if they are not
|
||||
# refered to in the Canadian LOCALEs.
|
||||
#
|
||||
<alert> <U0007> # BELL / SONNERIE
|
||||
<backspace> <U0008> # BACKSPACE / ESPACE ARRI<E!>RE
|
||||
<tab> <U0009> # CHARACTER TABULATION / TABULATION HORIZONTALE
|
||||
<newline> <U000a> # LINE FEED / INTERLIGNE
|
||||
<vertical-tab> <U000b> # LINE TABULATION / TABULATION VERTICALE
|
||||
<form-feed> <U000c> # FORM FEED / PAGE SUIVANTE
|
||||
<carriage-return> <U000d> # CARRIAGE RETURN / RETOUR DE CHARIOT
|
||||
<space> <U0020> # SPACE / ESPACE
|
||||
<exclamation-mark> <U0021> # EXCLAMATION MARK / POINT D'EXCLAMATION
|
||||
<quotation-mark> <U0022> # QUOTATION MARK / GUILLEMET
|
||||
<number-sign> <U0023> # NUMBER SIGN / CROISILLON
|
||||
<dollar-sign> <U0024> # DOLLAR SIGN / SYMBOLE DOLLAR
|
||||
<percent-sign> <U0025> # PERCENT SIGN / SYMBOLE POURCENT
|
||||
<ampersand> <U0026> # AMPERSAND / PERLU<E!>TE
|
||||
<apostrophe> <U0027> # APOSTROPHE / APOSTROPHE
|
||||
<left-parenthesis> <U0028> # LEFT PARENTHESIS / PARENTH<E!>SE GAUCHE
|
||||
<right-parenthesis> <U0029> # RIGHT PARENTHESIS / PARENTH<E!>SE DROITE
|
||||
<asterisk> <U002a> # ASTERISK / AST<E'>RISQUE
|
||||
<plus-sign> <U002b> # PLUS SIGN / SIGNE PLUS
|
||||
<comma> <U002c> # COMMA / VIRGULE
|
||||
<hyphen> <U002d> # HYPHEN-MINUS / TRAIT D'UNION-SIGNE MOINS
|
||||
<hyphen-minus> <U002d> # HYPHEN-MINUS / TRAIT D'UNION-SIGNE MOINS
|
||||
<period> <U002e> # FULL STOP / POINT
|
||||
<full-stop> <U002e> # FULL STOP / POINT
|
||||
<slash> <U002f> # SOLIDUS / BARRE OBLIQUE
|
||||
<solidus> <U002f> # SOLIDUS / BARRE OBLIQUE
|
||||
<zero> <U0030> # DIGIT ZERO / CHIFFRE Z<E'>RO
|
||||
<one> <U0031> # DIGIT ONE / CHIFFRE UN
|
||||
<two> <U0032> # DIGIT TWO / CHIFFRE DEUX
|
||||
<three> <U0033> # DIGIT THREE / CHIFFRE TROIS
|
||||
<four> <U0034> # DIGIT FOUR / CHIFFRE QUATRE
|
||||
<five> <U0035> # DIGIT FIVE / CHIFFRE CINQ
|
||||
<six> <U0036> # DIGIT SIX / CHIFFRE SIX
|
||||
<seven> <U0037> # DIGIT SEVEN / CHIFFRE SEPT
|
||||
<eight> <U0038> # DIGIT EIGHT / CHIFFRE HUIT
|
||||
<nine> <U0039> # DIGIT NINE / CHIFFRE NEUF
|
||||
<colon> <U003a> # COLON / DEUX-POINTS
|
||||
<semicolon> <U003b> # SEMICOLON / POINT-VIRGULE
|
||||
<less-than-sign> <U003c> # LESS-THAN SIGN / SIGNE INF<E'>RIEUR <A!>
|
||||
<equals-sign> <U003d> # EQUALS SIGN / SIGNE <E'>GAL
|
||||
<greater-than-sign> <U003e> # GREATER-THAN SIGN / SIGNE SUP<E'>RIEUR <A!>
|
||||
<question-mark> <U003f> # QUESTION MARK / POINT D'INTERROGATION
|
||||
<commercial-at> <U0040> # COMMERCIAL AT / A COMMERCIAL
|
||||
<left-square-bracket> <U005b> # LEFT SQUARE BRACKET / CROCHET GAUCHE
|
||||
<backslash> <U005c> # REVERSE SOLIDUS / BARRE OBLIQUE INVERS<E'>E
|
||||
<reverse-solidus> <U005c> # REVERSE SOLIDUS / BARRE OBLIQUE INVERS<E'>E
|
||||
<right-square-bracket> <U005d> # RIGHT SQUARE BRACKET / CROCHET DROIT
|
||||
<circumflex> <U005e> # CIRCUMFLEX ACCENT / ACCENT CIRCONFLEXE
|
||||
<circumflex-accent> <U005e> # CIRCUMFLEX ACCENT / ACCENT CIRCONFLEXE
|
||||
<underscore> <U005f> # LOW LINE / TRAIT BAS
|
||||
<low-line> <U005f> # LOW LINE / TRAIT BAS
|
||||
<grave-accent> <U0060> # GRAVE ACCENT / ACCENT GRAVE
|
||||
<left-brace> <U007b> # LEFT CURLY BRACKET / ACCOLADE GAUCHE
|
||||
<left-curly-bracket> <U007b> # LEFT CURLY BRACKET / ACCOLADE GAUCHE
|
||||
<vertical-line> <U007c> # VERTICAL LINE / LIGNE VERTICALE
|
||||
<right-brace> <U007d> # RIGHT CURLY BRACKET / ACCOLADE DROITE
|
||||
<right-curly-bracket> <U007d> # RIGHT CURLY BRACKET / ACCOLADE DROITE
|
||||
<tilde> <U007e> # TILDE
|
||||
#
|
||||
# Les caract<e!>res suivants constituent une extension de l'alphabet latin no 1
|
||||
# qui couvre <a!> la fois le jeu graphique suppl<e'>mentaire <a!> usage
|
||||
# g<e'>n<e'>ral de la norme CAN/CSA Z243.4 et les caract<e!>res du NAPLPS,
|
||||
# correspondant <a!> peu de choses pr<e!>s <a!> la norme ISO/C<E'>I 6937.
|
||||
#
|
||||
# The following characters contitute an extension of Latin Alphabet No. 1
|
||||
# which covers both the general purpose graphic supplementary set of the
|
||||
# CAN/CSA Z243.4 standard and the characters used in NAPLPS, which themselves
|
||||
# correspond roughly to those of ISO/IEC 6937 standard.
|
||||
#
|
||||
<A-> <U0100>
|
||||
<a-> <U0101>
|
||||
<A(> <U0102>
|
||||
<a(> <U0103>
|
||||
<A;> <U0104>
|
||||
<a;> <U0105>
|
||||
<C'> <U0106>
|
||||
<c'> <U0107>
|
||||
<C/>> <U0108>
|
||||
<c/>> <U0109>
|
||||
<C.> <U010A>
|
||||
<c.> <U010B>
|
||||
<C<> <U010C>
|
||||
<c<> <U010D>
|
||||
<D<> <U010E>
|
||||
<d<> <U010F>
|
||||
<D//> <U0110>
|
||||
<d//> <U0111>
|
||||
<E-> <U0112>
|
||||
<e-> <U0113>
|
||||
<E.> <U0116>
|
||||
<e.> <U0117>
|
||||
<E;> <U0118>
|
||||
<e;> <U0119>
|
||||
<E<> <U011A>
|
||||
<e<> <U011B>
|
||||
<G/>> <U011C>
|
||||
<g/>> <U011D>
|
||||
<G(> <U011E>
|
||||
<g(> <U011F>
|
||||
<G.> <U0120>
|
||||
<g.> <U0121>
|
||||
<G,> <U0122>
|
||||
<g,> <U0123>
|
||||
<H/>> <U0124>
|
||||
<h/>> <U0125>
|
||||
<H//> <U0126>
|
||||
<h//> <U0127>
|
||||
<I?> <U0128>
|
||||
<i?> <U0129>
|
||||
<I-> <U012A>
|
||||
<i-> <U012B>
|
||||
<I;> <U012E>
|
||||
<i;> <U012F>
|
||||
<I.> <U0130>
|
||||
<i.> <U0131>
|
||||
<IJ> <U0132>
|
||||
<ij> <U0133>
|
||||
<J/>> <U0134>
|
||||
<j/>> <U0135>
|
||||
<K,> <U0136>
|
||||
<k,> <U0137>
|
||||
<kk> <U0138>
|
||||
<L'> <U0139>
|
||||
<l'> <U013A>
|
||||
<L,> <U013B>
|
||||
<l,> <U013C>
|
||||
<L<> <U013D>
|
||||
<l<> <U013E>
|
||||
<L.> <U013F>
|
||||
<l.> <U0140>
|
||||
<L//> <U0141>
|
||||
<l//> <U0142>
|
||||
<N'> <U0143>
|
||||
<n'> <U0144>
|
||||
<N,> <U0145>
|
||||
<n,> <U0146>
|
||||
<N<> <U0147>
|
||||
<n<> <U0148>
|
||||
<'n> <U0149>
|
||||
<NG> <U014A>
|
||||
<ng> <U014B>
|
||||
<O-> <U014C>
|
||||
<o-> <U014D>
|
||||
<O"> <U0150>
|
||||
<o"> <U0151>
|
||||
<OE> <U0152>
|
||||
<oe> <U0153>
|
||||
<R'> <U0154>
|
||||
<r'> <U0155>
|
||||
<R,> <U0156>
|
||||
<r,> <U0157>
|
||||
<R<> <U0158>
|
||||
<r<> <U0159>
|
||||
<S'> <U015A>
|
||||
<s'> <U015B>
|
||||
<S/>> <U015C>
|
||||
<s/>> <U015D>
|
||||
<S,> <U015E>
|
||||
<s,> <U015F>
|
||||
<S<> <U0160>
|
||||
<s<> <U0161>
|
||||
<T,> <U0162>
|
||||
<t,> <U0163>
|
||||
<T<> <U0164>
|
||||
<t<> <U0165>
|
||||
<T//> <U0166>
|
||||
<t//> <U0167>
|
||||
<U?> <U0168>
|
||||
<u?> <U0169>
|
||||
<U-> <U016A>
|
||||
<u-> <U016B>
|
||||
<U(> <U016C>
|
||||
<u(> <U016D>
|
||||
<U0> <U016E>
|
||||
<u0> <U016F>
|
||||
<U"> <U0170>
|
||||
<u"> <U0171>
|
||||
<U;> <U0172>
|
||||
<u;> <U0173>
|
||||
<W/>> <U0174>
|
||||
<w/>> <U0175>
|
||||
<Y/>> <U0176>
|
||||
<y/>> <U0177>
|
||||
<Y:> <U0178>
|
||||
<Z'> <U0179>
|
||||
<z'> <U017A>
|
||||
<Z.> <U017B>
|
||||
<z.> <U017C>
|
||||
<Z<> <U017D>
|
||||
<z<> <U017E>
|
||||
<"(> <U0306>
|
||||
<".> <U0307>
|
||||
<"0> <U030A>
|
||||
<""> <U030B>
|
||||
<"<> <U030C>
|
||||
<";> <U0328>
|
||||
<"_> <U0332>
|
||||
<"//> <U0338>
|
||||
<'6> <U2018>
|
||||
<'9> <U2019>
|
||||
<"6> <U201C>
|
||||
<"9> <U201D>
|
||||
<0S> <U2070>
|
||||
<4S> <U2074>
|
||||
<5S> <U2075>
|
||||
<6S> <U2076>
|
||||
<7S> <U2077>
|
||||
<8S> <U2078>
|
||||
<9S> <U2079>
|
||||
<+S> <U207A>
|
||||
<-S> <U207B>
|
||||
<(S> <U207D>
|
||||
<)S> <U207E>
|
||||
<"7> <U20D1>
|
||||
<TM> <U2122>
|
||||
<Om> <U2126>
|
||||
<18> <U215B>
|
||||
<38> <U215C>
|
||||
<58> <U215D>
|
||||
<78> <U215E>
|
||||
<<-> <U2190>
|
||||
<-!> <U2191>
|
||||
<-/>> <U2192>
|
||||
<-v> <U2193>
|
||||
<FP> <U220E>
|
||||
<!=> <U2260>
|
||||
<=<> <U2264>
|
||||
</>=> <U2265>
|
||||
<_-> <U2500>
|
||||
<_=> <U2501>
|
||||
<_!> <U2502>
|
||||
<_V/>> <U250C>
|
||||
<_V<w> <U2510>
|
||||
<_A/>> <U2514>
|
||||
<_A<> <U2518>
|
||||
<_!/>> <U251C>
|
||||
<_!<> <U2524>
|
||||
<_V-> <U252C>
|
||||
<_-A> <U2534>
|
||||
<_!-> <U253C>
|
||||
<_/>//> <U2571>
|
||||
<_<\> <U2572>
|
||||
<_./>//> <U25E2>
|
||||
<_.<\> <U25E3>
|
||||
<_d!> <U266A>
|
||||
END CHARIDS
|
@ -1,4 +1,4 @@
|
||||
escape_char /
|
||||
<escape_char> /
|
||||
<NUL> <U0000> NULL (NUL)
|
||||
<SOH> <U0001> START OF HEADING (SOH)
|
||||
<STX> <U0002> START OF TEXT (STX)
|
||||
@ -33,7 +33,7 @@ escape_char /
|
||||
<DEL> <U007F> DELETE (DEL)
|
||||
<space> <U0020> SPACE
|
||||
<exclamation-mark> <U0021> EXCLAMATION MARK
|
||||
<quotation-mark> <U0022> QUOTATION MARK
|
||||
<quotation-mark> <U003F> QUESTION MARK
|
||||
<number-sign> <U0023> NUMBER SIGN
|
||||
<dollar-sign> <U0024> DOLLAR SIGN
|
||||
<percent-sign> <U0025> PERCENT SIGN
|
||||
@ -353,8 +353,8 @@ escape_char /
|
||||
<o-> <U014d> LATIN SMALL LETTER O WITH MACRON
|
||||
<O(> <U014e> LATIN CAPITAL LETTER O WITH BREVE
|
||||
<o(> <U014f> LATIN SMALL LETTER O WITH BREVE
|
||||
<O"> <U0150> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
<o"> <U0151> LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
<O"> <U0150> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
<o"> <U0151> LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
<OE> <U0152> LATIN CAPITAL LIGATURE OE
|
||||
<oe> <U0153> LATIN SMALL LIGATURE OE
|
||||
<R'> <U0154> LATIN CAPITAL LETTER R WITH ACUTE
|
||||
@ -385,8 +385,8 @@ escape_char /
|
||||
<u(> <U016d> LATIN SMALL LETTER U WITH BREVE
|
||||
<U0> <U016e> LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
<u0> <U016f> LATIN SMALL LETTER U WITH RING ABOVE
|
||||
<U"> <U0170> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
<u"> <U0171> LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
<U"> <U0170> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
<u"> <U0171> LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
<U;> <U0172> LATIN CAPITAL LETTER U WITH OGONEK
|
||||
<u;> <U0173> LATIN SMALL LETTER U WITH OGONEK
|
||||
<W/>> <U0174> LATIN CAPITAL LETTER W WITH CIRCUMFLEX
|
||||
@ -1012,10 +1012,10 @@ escape_char /
|
||||
<?:> <U1fc1> GREEK DIALYTIKA AND PERISPOMENI
|
||||
<,!> <U1fcd> GREEK PSILI AND VARIA
|
||||
<,'> <U1fce> GREEK PSILI AND OXIA
|
||||
<?,> <U1fcf> GREEK PSILI AND PERISPOMENI
|
||||
<?,> <U1fcf> GREEK PSILI AND PERISPOMENI
|
||||
<;!> <U1fdd> GREEK DASIA AND VARIA
|
||||
<;'> <U1fde> GREEK DASIA AND OXIA
|
||||
<?;> <U1fdf> GREEK DASIA AND PERISPOMENI
|
||||
<?;> <U1fdf> GREEK DASIA AND PERISPOMENI
|
||||
<!:> <U1fed> GREEK DIALYTIKA AND VARIA
|
||||
<!*> <U1fef> GREEK VARIA
|
||||
<;;> <U1ffe> GREEK DASIA
|
||||
@ -1060,31 +1060,31 @@ escape_char /
|
||||
<:X> <U203b> REFERENCE MARK
|
||||
<!*2> <U203c> DOUBLE EXCLAMATION MARK
|
||||
<'-> <U203e> OVERLINE
|
||||
<0S> <U2070> SUPERSCRIPT ZERO
|
||||
<4S> <U2074> SUPERSCRIPT FOUR
|
||||
<5S> <U2075> SUPERSCRIPT FIVE
|
||||
<6S> <U2076> SUPERSCRIPT SIX
|
||||
<7S> <U2077> SUPERSCRIPT SEVEN
|
||||
<8S> <U2078> SUPERSCRIPT EIGHT
|
||||
<9S> <U2079> SUPERSCRIPT NINE
|
||||
<0S> <U2070> SUPERSCRIPT ZERO
|
||||
<4S> <U2074> SUPERSCRIPT FOUR
|
||||
<5S> <U2075> SUPERSCRIPT FIVE
|
||||
<6S> <U2076> SUPERSCRIPT SIX
|
||||
<7S> <U2077> SUPERSCRIPT SEVEN
|
||||
<8S> <U2078> SUPERSCRIPT EIGHT
|
||||
<9S> <U2079> SUPERSCRIPT NINE
|
||||
<+S> <U207a> SUPERSCRIPT PLUS SIGN
|
||||
<-S> <U207b> SUPERSCRIPT MINUS
|
||||
<-S> <U207b> SUPERSCRIPT MINUS
|
||||
<=S> <U207c> SUPERSCRIPT EQUALS SIGN
|
||||
<(S> <U207d> SUPERSCRIPT LEFT PARENTHESIS
|
||||
<)S> <U207e> SUPERSCRIPT RIGHT PARENTHESIS
|
||||
<nS> <U207f> SUPERSCRIPT LATIN SMALL LETTER N
|
||||
<0s> <U2080> SUBSCRIPT ZERO
|
||||
<1s> <U2081> SUBSCRIPT ONE
|
||||
<2s> <U2082> SUBSCRIPT TWO
|
||||
<3s> <U2083> SUBSCRIPT THREE
|
||||
<4s> <U2084> SUBSCRIPT FOUR
|
||||
<5s> <U2085> SUBSCRIPT FIVE
|
||||
<6s> <U2086> SUBSCRIPT SIX
|
||||
<7s> <U2087> SUBSCRIPT SEVEN
|
||||
<8s> <U2088> SUBSCRIPT EIGHT
|
||||
<9s> <U2089> SUBSCRIPT NINE
|
||||
<0s> <U2080> SUBSCRIPT ZERO
|
||||
<1s> <U2081> SUBSCRIPT ONE
|
||||
<2s> <U2082> SUBSCRIPT TWO
|
||||
<3s> <U2083> SUBSCRIPT THREE
|
||||
<4s> <U2084> SUBSCRIPT FOUR
|
||||
<5s> <U2085> SUBSCRIPT FIVE
|
||||
<6s> <U2086> SUBSCRIPT SIX
|
||||
<7s> <U2087> SUBSCRIPT SEVEN
|
||||
<8s> <U2088> SUBSCRIPT EIGHT
|
||||
<9s> <U2089> SUBSCRIPT NINE
|
||||
<+s> <U208a> SUBSCRIPT PLUS SIGN
|
||||
<-s> <U208b> SUBSCRIPT MINUS
|
||||
<-s> <U208b> SUBSCRIPT MINUS
|
||||
<=s> <U208c> SUBSCRIPT EQUALS SIGN
|
||||
<(s> <U208d> SUBSCRIPT LEFT PARENTHESIS
|
||||
<)s> <U208e> SUBSCRIPT RIGHT PARENTHESIS
|
||||
@ -1197,7 +1197,7 @@ escape_char /
|
||||
<.:> <U2234> THEREFORE
|
||||
<:.> <U2235> BECAUSE
|
||||
<:R> <U2236> RATIO
|
||||
<::> <U2237> PROPORTION
|
||||
<::> <U2237> PROPORTION
|
||||
<?1> <U223c> TILDE OPERATOR
|
||||
<CG> <U223e> INVERTED LAZY S
|
||||
<?-> <U2243> ASYMPTOTICALLY EQUAL TO
|
||||
@ -1242,7 +1242,7 @@ escape_char /
|
||||
<1j> <U2446> OCR BRANCH BANK IDENTIFICATION
|
||||
<2j> <U2447> OCR AMOUNT OF CHECK
|
||||
<3j> <U2448> OCR DASH
|
||||
<4j> <U2449> OCR CUSTOMER ACCOUNT NUMBER
|
||||
<4j> <U2449> OCR CUSTOMER ACCOUNT NUMBER
|
||||
<1-o> <U2460> CIRCLED DIGIT ONE
|
||||
<2-o> <U2461> CIRCLED DIGIT TWO
|
||||
<3-o> <U2462> CIRCLED DIGIT THREE
|
||||
@ -1426,7 +1426,7 @@ escape_char /
|
||||
<UdL> <U2529> BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
|
||||
<uDL> <U252a> BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
|
||||
<VL> <U252b> BOX DRAWINGS HEAVY VERTICAL AND LEFT
|
||||
<dh> <U252c> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
<dh> <U252c> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
<dLr> <U252d> BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
|
||||
<dlR> <U252e> BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
|
||||
<dH> <U252f> BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
|
||||
@ -1486,7 +1486,7 @@ escape_char /
|
||||
<Tr> <U25b7> WHITE RIGHT-POINTING TRIANGLE
|
||||
<PR> <U25ba> BLACK RIGHT-POINTING POINTER
|
||||
<Dt> <U25bc> BLACK DOWN-POINTING TRIANGLE
|
||||
<dT> <U25bd> WHITE DOWN-POINTING TRIANGLE
|
||||
<dT> <U25bd> WHITE DOWN-POINTING TRIANGLE
|
||||
<Tl> <U25c1> WHITE LEFT-POINTING TRIANGLE
|
||||
<PL> <U25c4> BLACK LEFT-POINTING POINTER
|
||||
<Db> <U25c6> BLACK DIAMOND
|
||||
@ -1939,29 +1939,3 @@ escape_char /
|
||||
<OC> <U009d> OPERATING SYSTEM COMMAND (OSC)
|
||||
<PM> <U009e> PRIVACY MESSAGE (PM)
|
||||
<AC> <U009f> APPLICATION PROGRAM COMMAND (APC)
|
||||
<"3> <ISO-IR-53_C9> NON-SPACING UMLAUT (not a real character)
|
||||
<"1> <ISO-IR-70_C0> NON-SPACING DIAERESIS WITH ACCENT (not a real character)
|
||||
<"!> <ISO-IR-103_C1> NON-SPACING GRAVE ACCENT (not a real character)
|
||||
<"'> <ISO-IR-103_C2> NON-SPACING ACUTE ACCENT (not a real character)
|
||||
<"/>> <ISO-IR-103_C3> NON-SPACING CIRCUMFLEX ACCENT (not a real character)
|
||||
<"?> <ISO-IR-103_C4> NON-SPACING TILDE (not a real character)
|
||||
<"-> <ISO-IR-103_C5> NON-SPACING MACRON (not a real character)
|
||||
<"(> <ISO-IR-103_C6> NON-SPACING BREVE (not a real character)
|
||||
<".> <ISO-IR-103_C7> NON-SPACING DOT ABOVE (not a real character)
|
||||
<":> <ISO-IR-103_C8> NON-SPACING DIAERESIS (not a real character)
|
||||
<"0> <ISO-IR-103_CA> NON-SPACING RING ABOVE (not a real character)
|
||||
<",> <ISO-IR-103_CB> NON-SPACING CEDILLA (not a real character)
|
||||
<"_> <ISO-IR-103_CC> NON-SPACING LOW LINE (not a real character)
|
||||
<""> <ISO-IR-103_CD> NON-SPACING DOUBLE ACCUTE ACCENT (not a real character)
|
||||
<";> <ISO-IR-103_CE> NON-SPACING OGONEK (not a real character)
|
||||
<"<> <ISO-IR-103_CF> NON-SPACING CARON (not a real character)
|
||||
<"=> <ISO-IR-38_D9> NON-SPACING DOUBLE LOW LINE (not a real character)
|
||||
<"//> <ISO-IR-128_C9> NON-SPACING LONG SOLIDUS OVERLAY (not a real character)
|
||||
<"p> <ISO-IR-55_25> GREEK NON-SPACING PSILI PNEUMATA (not a real character)
|
||||
<"d> <ISO-IR-55_26> GREEK NON-SPACING DASIA PNEUMATA (not a real character)
|
||||
<"i> <ISO-IR-55_27> GREEK NON-SPACING IOTA BELOW (not a real character)
|
||||
<+_> <ISO-IR-87_2138> IDEOGRAPHIC DITTO MARK
|
||||
<a+:> <IBM868_90> ARABIC LETTER ALEF FINAL FORM COMPATIBILITY
|
||||
<Tel> <ISO-IR-149_2265> TEL COMPATIBILITY SIGN
|
||||
<UA> <ISO-IR-8-1_40> Unit space A
|
||||
<UB> <ISO-IR-8-1_60> Unit space B
|
@ -63,6 +63,5 @@ ENTRY(memset)
|
||||
strb a2, [a4], $1
|
||||
strb a2, [a4], $1
|
||||
strb a2, [a4], $1
|
||||
strb a2, [a4], $1
|
||||
RETINSTR(mov,pc,lr)
|
||||
END(memset)
|
||||
|
85
sysdeps/unix/arm/start.c
Normal file
85
sysdeps/unix/arm/start.c
Normal file
@ -0,0 +1,85 @@
|
||||
/* Special startup code for ARM a.out binaries.
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <sysdep.h>
|
||||
|
||||
/* The first piece of initialized data. */
|
||||
int __data_start = 0;
|
||||
#ifdef HAVE_WEAK_SYMBOLS
|
||||
weak_alias (__data_start, data_start)
|
||||
#endif
|
||||
|
||||
#ifndef errno
|
||||
volatile int __errno;
|
||||
strong_alias (__errno, errno)
|
||||
#endif
|
||||
|
||||
extern void __libc_init __P ((int argc, char **argv, char **envp));
|
||||
extern int main __P ((int argc, char **argv, char **envp));
|
||||
|
||||
/* N.B.: It is important that this be the first function.
|
||||
This file is the first thing in the text section. */
|
||||
|
||||
/* If this was in C it might create its own stack frame and
|
||||
screw up the arguments. */
|
||||
#ifdef NO_UNDERSCORES
|
||||
asm (".text; .globl _start; _start: B start1");
|
||||
#else
|
||||
asm (".text; .globl __start; __start: B _start1");
|
||||
|
||||
/* Make an alias called `start' (no leading underscore, so it can't
|
||||
conflict with C symbols) for `_start'. This is the name vendor crt0.o's
|
||||
tend to use, and thus the name most linkers expect. */
|
||||
asm (".set start, __start");
|
||||
#endif
|
||||
|
||||
/* Fool gcc into thinking that more args are passed. This makes it look
|
||||
on the stack (correctly) for the real arguments. It causes somewhat
|
||||
strange register usage in start1(), but we aren't too bothered about
|
||||
that at the moment. */
|
||||
#define DUMMIES a1, a2, a3, a4
|
||||
|
||||
#ifdef DUMMIES
|
||||
#define ARG_DUMMIES DUMMIES,
|
||||
#define DECL_DUMMIES int DUMMIES;
|
||||
#else
|
||||
#define ARG_DUMMIES
|
||||
#define DECL_DUMMIES
|
||||
#endif
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
start1 (ARG_DUMMIES argc, argv, envp)
|
||||
DECL_DUMMIES
|
||||
int argc;
|
||||
char **argv;
|
||||
char **envp;
|
||||
{
|
||||
/* Store a pointer to the environment. */
|
||||
__environ = envp;
|
||||
|
||||
/* Do C library initializations. */
|
||||
__libc_init (argc, argv, __environ);
|
||||
|
||||
/* Call the user program. */
|
||||
exit (main (argc, argv, __environ));
|
||||
}
|
39
sysdeps/unix/sysv/linux/arm/mmap.S
Normal file
39
sysdeps/unix/sysv/linux/arm/mmap.S
Normal file
@ -0,0 +1,39 @@
|
||||
/* Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.text
|
||||
|
||||
ENTRY (__mmap)
|
||||
|
||||
/* Because we can only get five args through the syscall interface, and
|
||||
mmap() takes six, we need to build a parameter block and pass its
|
||||
address instead. The 386 port does a similar trick. */
|
||||
|
||||
mov ip, sp
|
||||
stmdb ip!, {a1-a4}
|
||||
mov a1, ip
|
||||
swi SYS_ify (mmap)
|
||||
cmn r0, $4096
|
||||
bhs PLTJMP(syscall_error);
|
||||
ret
|
||||
|
||||
PSEUDO_END (__mmap)
|
||||
|
||||
weak_alias (__mmap, mmap)
|
@ -53,7 +53,7 @@
|
||||
ENTRY (name) \
|
||||
DO_CALL (args, syscall_name); \
|
||||
cmn r0, $4096; \
|
||||
bhs PLTJMP(syscall_error);
|
||||
bhs PLTJMP(C_SYMBOL_NAME(__syscall_error));
|
||||
|
||||
#undef PSEUDO_END
|
||||
#define PSEUDO_END(name) \
|
||||
|
Loading…
Reference in New Issue
Block a user