* io/ftw.c (process_entry): Cache object dev/inode only for
	directories (PR libc/1514).

2000-01-05  Andreas Schwab  <schwab@suse.de>

	* locale/programs/charmap.c (charmap_read): Fix typo.

2000-01-05  Ulrich Drepper  <drepper@cygnus.com>

	* locale/programs/charset.c: Removed.
This commit is contained in:
Ulrich Drepper 2000-01-05 20:49:52 +00:00
parent 7abbb474e7
commit eb7c2001aa
7 changed files with 31 additions and 138 deletions

View file

@ -1,5 +1,16 @@
2000-01-05 Ulrich Drepper <drepper@cygnus.com>
* io/ftw.c (process_entry): Cache object dev/inode only for
directories (PR libc/1514).
2000-01-05 Andreas Schwab <schwab@suse.de>
* locale/programs/charmap.c (charmap_read): Fix typo.
2000-01-05 Ulrich Drepper <drepper@cygnus.com>
* locale/programs/charset.c: Removed.
* iconvdata/Makefile: Add rules for ISO-8859-16 module.
* iconvdata/gconv-modules: Likewise.
* iconvdata/iso8859-16.c: New file.

View file

@ -1,5 +1,5 @@
/* File tree walker functions.
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -288,12 +288,12 @@ process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,
&& (flag == FTW_NS
|| !(data->flags & FTW_MOUNT) || st.st_dev == data->dev))
{
if ((data->flags & FTW_PHYS) || flag == FTW_NS
|| (!find_object (data, &st)
/* Remember the object. */
&& (result = add_object (data, &st)) == 0))
if (flag == FTW_D)
{
if (flag == FTW_D)
if ((data->flags & FTW_PHYS)
|| (!find_object (data, &st)
/* Remember the object. */
&& (result = add_object (data, &st)) == 0))
{
result = ftw_dir (data, &st);
@ -325,10 +325,10 @@ process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,
}
}
}
else
result = (*data->func) (data->dirbuf, &st, data->cvt_arr[flag],
&data->ftw);
}
else
result = (*data->func) (data->dirbuf, &st, data->cvt_arr[flag],
&data->ftw);
}
return result;

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
@ -94,7 +94,7 @@ charmap_read (const char *filename)
struct dirent *dirent;
dir = opendir (CHARMAP_PATH);
if (dir == NULL)
if (dir != NULL)
{
while ((dirent = readdir (dir)) != NULL)
if (strcmp (dirent->d_name, ".") != 0

View file

@ -1,121 +0,0 @@
/* 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.
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 <alloca.h>
#include <ctype.h>
#include <errno.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libintl.h>
#include "error.h"
#include "charset.h"
unsigned int
charset_find_value (const hash_table *ht, const char *name, size_t len)
{
void *result;
if (find_entry ((hash_table *) ht, name, len, &result) < 0)
return ILLEGAL_CHAR_VALUE;
return (unsigned int) ((unsigned long int) result);
}
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;
unsigned int from_nr, to_nr, cnt;
if (to == NULL)
{
if (insert_entry (ht, from, strlen (from),
(void *) (unsigned long int) value)
< 0)
lr_error (lr, _("duplicate character name `%s'"), from);
return;
}
/* We have a range: the names must have names with equal prefixes
and an equal number of digits, where the second number is greater
or equal than the first. */
len1 = strlen (from);
len2 = strlen (to);
if (len1 != len2)
{
illegal_range:
lr_error (lr, _("illegal names for character range"));
return;
}
cp = &from[len1 - 1];
while (isdigit (*cp) && cp >= from)
--cp;
prefix_len = (cp - from) + 1;
if (cp == &from[len1 - 1] || strncmp (from, to, prefix_len) != 0)
goto illegal_range;
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)
{
lr_error (lr, _("upper limit in range is not smaller then lower limit"));
return;
}
buf = alloca (len1 + 1);
memcpy (buf, from, prefix_len);
for (cnt = from_nr; cnt <= to_nr; ++cnt)
{
sprintf (&buf[prefix_len], "%0*d", len1 - prefix_len, cnt);
if (insert_entry (ht, buf, len1,
(void *) (unsigned long int) (value + (cnt - from_nr)))
< 0)
lr_error (lr, _("duplicate character name `%s'"), buf);
}
}

View file

@ -1,5 +1,8 @@
2000-01-05 Ulrich Drepper <drepper@cygnus.com>
* tst-trans.sh: Add directory names to charmap and repertoire file
names.
* charmaps/ISO-8859-16: New file.
* SUPPORTED: Change lv_LV entry to use ISO-8859-13.

View file

@ -4,8 +4,8 @@
% automatically generated from the charDB
% alias ISO-IR-226
% alias LATIN10
% alias L10
% alias LATIN10
% alias L10
CHARMAP
<NU> /x00 <U0000> NULL
<NUL> /x00 <U0000> NULL
@ -273,7 +273,7 @@ CHARMAP
<DG> /xB0 <U00B0> DEGREE SIGN
<+-> /xB1 <U00B1> PLUS-MINUS SIGN
<C<> /xB2 <U010C> LATIN CAPITAL LETTER C WITH CARON
<c<> /xB3 <U010D> LATIN SMALL LETTER C WITH CARON
<l/> /xB3 <U0142> LATIN SMALL LETTER L WITH STROKE
<Z<> /xB4 <U017D> LATIN CAPITAL LETTER Z WITH CARON
<"9> /xB5 <U201D> RIGHT DOUBLE QUOTATION MARK
<PI> /xB6 <U00B6> PILCROW SIGN
@ -284,7 +284,7 @@ CHARMAP
</>/>> /xBB <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
<OE> /xBC <U0152> LATIN CAPITAL LIGATURE OE
<oe> /xBD <U0153> LATIN SMALL LIGATURE OE
<Z.> /xBE <U017B> LATIN CAPITAL LETTER Z WITH DOT ABOVE
<Y:> /xBE <U0178> LATIN CAPITAL LETTER Y WITH DIAERESIS
<z.> /xBF <U017C> LATIN SMALL LETTER Z WITH DOT ABOVE
<A!> /xC0 <U00C0> LATIN CAPITAL LETTER A WITH GRAVE
<A'> /xC1 <U00C1> LATIN CAPITAL LETTER A WITH ACUTE

View file

@ -1,6 +1,6 @@
#! /bin/sh
# Test character mapping definitions.
# Copyright (C) 1999 Free Software Foundation, Inc.
# Copyright (C) 1999, 2000 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
@ -24,7 +24,7 @@ common_objpfx=$1
I18NPATH=. \
${common_objpfx}elf/ld.so --library-path $common_objpfx \
${common_objpfx}locale/localedef --quiet \
-i tests/trans.def -f ISO-8859-1 -u mnemonic.ds \
-i tests/trans.def -f charmaps/ISO-8859-1 -u repertoiremaps/mnemonic.ds \
${common_objpfx}localedata/tt_TT ||
exit 1