Tue Mar 21 00:14:27 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>

* locale/loadlocale.c (_nl_load_locale): If LOCALE/LC_* is a
 	directory, open LOCALE/LC_*/SYS_LC_* instead.

	* stdio/fpioconst.c, stdio/fpioconst.h, stdio/gmp-impl.h,
	stdio/gmp.h, stdio/longlong.h, stdio/mp_clz_tab.c,
	stdio/gen-mpn-copy: Files moved to stdlib.
	* stdio/Makefile: All mpn stuff moved to stdlib/Makefile.
	* stdio/printf_fp.c: Use ../stdlib to find fpioconst.h and gmp
 	headers.
	* stdlib/strtod.c: Don't use ../stdio to find fpioconst.h and gmp
 	headers.
This commit is contained in:
Roland McGrath 1995-03-21 07:58:50 +00:00
parent 6bf028786c
commit 49e522bfb8
13 changed files with 104 additions and 102 deletions

View File

@ -1,5 +1,19 @@
Tue Mar 21 00:14:27 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* locale/loadlocale.c (_nl_load_locale): If LOCALE/LC_* is a
directory, open LOCALE/LC_*/SYS_LC_* instead.
Mon Mar 20 03:19:23 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* stdio/fpioconst.c, stdio/fpioconst.h, stdio/gmp-impl.h,
stdio/gmp.h, stdio/longlong.h, stdio/mp_clz_tab.c,
stdio/gen-mpn-copy: Files moved to stdlib.
* stdio/Makefile: All mpn stuff moved to stdlib/Makefile.
* stdio/printf_fp.c: Use ../stdlib to find fpioconst.h and gmp
headers.
* stdlib/strtod.c: Don't use ../stdio to find fpioconst.h and gmp
headers.
* Makefile (parent-mostlyclean): Don't use $(libc.a).
(parent-clean): Use $(objpfx) to find sysd-*.
* Rules (generated): Append dummy.o dummy.c.

78
NEWS
View File

@ -1,4 +1,4 @@
GNU C Library NEWS -- history of user-visible changes. 24 February 1995
GNU C Library NEWS -- history of user-visible changes. 21 March 1995
Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
See the end for copying conditions.
@ -16,6 +16,50 @@ Version 1.10
of many files which contained only symbol aliases, reducing the size of
the source and the compiled library; many other files were renamed to
less cryptic names previously occupied by the symbol alias files.
There is a new header file <elf.h> and new library `-lelf' for
programs which operate on files in the ELF format.
* Converted to Autoconf version 2, so `configure' has more options.
Run `configure --help' to see the details.
* The library can now be configured to build profiling, highly-optimized
(but undebuggable), and/or shared libraries (ELF with GNU ld only).
The `--enable-profile', `--enable-omitfp', and `--enable-shared'
options to `configure' enable building these extra libraries.
The shared library is built by default when using both ELF and GNU ld.
* The new functions `strtoq' and `strtouq' parse integer values from
strings, like `strtol' and `strtoul', but they return `long long int' and
`unsigned long long int' values, respectively (64-bit quantities).
* The new functions `strtof' and `strtold' parse floating-point values from
strings, like `strtod', but they return `float' and `long double' values,
respectively (on some machines `double' and `long double' are the same).
* Ulrich Drepper has contributed new implementations of the floating-point
printing and reading code used in the `printf' family of functions and
`strtod', `strtof', and `strtold'. These new functions are perfectly
accurate, and much faster than the old ones.
* The new header <langinfo.h> defines an interface for accessing
various locale-dependent data (using the locale chosen with `setlocale').
* You can now use positional parameter specifications in format strings
for the `printf' and `scanf' families of functions. For example,
`printf ("Number %2$d, Mr %1$s\n", "Jones", 6);'' prints
``Number 6, Mr Jones''. This is mainly useful when providing different
format strings for different languages, whose grammar may dictate
a different ordering of the values being printed. To support this
feature, the interface for `register_printf_handler' has changed; see
the header file <printf.h>.
* The `printf' and `scanf' families of functions now understand a new
formatting flag for numeric conversions: the ' flag (e.g. %'d or %'f) says
to group numbers as indicated by the locale; for `scanf' and friends, this
says to accept as valid only a number with all the proper grouping
separators in the right places. In the default "C" locale, numbers are
not grouped; but locales for specific countries will define the usual
conventions (i.e. separate thousands with `,' in the US locale).
* The pgrp functions have been regularized, slightly incompatibly but much
less confusingly. The core functions are now `getpgid' and `setpgid',
@ -27,23 +71,12 @@ Version 1.10
* The new header file <fts.h> and suite of functions simplify programs that
operate on directory trees. This code comes from 4.4 BSD.
* Converted to Autoconf version 2, so `configure' has more options.
Run `configure --help' to see the details.
* The resolver code has been updated from the BIND-4.9.3-BETA14 release.
* The new function `malloc_find_object_address' finds the starting address
of a malloc'd block, given any address within the block. This can be
useful for debugging.
* The new functions `strtoq' and `strtouq' parse integer values from
strings, like `strtol' and `strtoul', but they return `long long int' and
`unsigned long long int' values, respectively (64-bit quantities).
* The new functions `strtof' and `strtold' parse floating-point values from
strings, like `strtod', but they return `float' and `long double' values,
respectively (on some machines `double' and `long double' are the same).
* There is a new malloc debugging hook `__memalign_hook'.
* There are new typedefs `ushort' for `unsigned short int' and `uint' for
@ -53,19 +86,18 @@ Version 1.10
* The `-lmcheck' library to enable standard malloc debugging hooks is now
done differently, so that it works even without GNU ld.
* Ulrich Drepper has contributed new implementations of the floating-point
printing and reading code used in the `printf' family of functions and
`strtod', `strtof', and `strtold'. These new functions are perfectly
accurate, and much faster than the old ones.
* The `printf' family of functions now understand a new formatting flag
for numeric conversions: the ' flag (e.g. %'d or %'f) says to group
numbers as indicated by the locale. In the default "C" locale, numbers
are not grouped; but locales for specific countries will define the
usual conventions (i.e. separate thousands with `,' in the US locale).
* New function `euidaccess' checks allowed access to a file like `access',
but using the effective IDs instead of the real IDs.
* The time zone data files have been updated for the latest and greatest
local time conventions of the countries of the world.
* The new function `dirfd' extracts the file descriptor used by a DIR stream;
see <dirent.h>.
* The new functions `ecvt', `fcvt', and `gcvt' provide an obsolete interface
for formatting floating-point numbers. They are provided only for
compatibility; new programs should use `sprintf' instead.
Version 1.09

View File

@ -38,7 +38,6 @@ const size_t _nl_category_num_items[] =
struct locale_data *
_nl_load_locale (int category, char **name)
{
char *file;
int fd;
struct
{
@ -69,18 +68,31 @@ _nl_load_locale (int category, char **name)
*name = (char *) "local";
}
/* XXX can't use asprintf here */
if (asprintf (&file, "%s%s/%s",
strchr (*name, '/') != NULL ? "" : "/share/locale/", /* XXX */
*name, _nl_category_names[category]) == -1)
return NULL;
{
const char localedir[] = "/share/locale/"; /* XXX */
const char *catname = _nl_category_names[category];
size_t namelen = strlen (*name);
size_t catlen = strlen (catname);
char file[sizeof localedir + namelen + catlen * 2 + 4];
sprintf (file, "%s%s/%s",
strchr (*name, '/') != NULL ? "" : localedir, *name, catname);
fd = __open (file, O_RDONLY);
free (file);
if (fd < 0)
return NULL;
if (__fstat (fd, &st) < 0)
goto puntfd;
if (S_ISDIR (st.st_mode))
{
/* LOCALE/LC_* is a directory; open LOCALE/LC_*/SYS_LC_* instead. */
__close (fd);
memcpy (stpcpy (strchr (file, '\0'), "SYS_"), catname, catlen);
fd = __open (file, O_RDONLY);
if (fd < 0)
return NULL;
if (__fstat (fd, &st) < 0)
goto puntfd;
}
}
{
/* Map in the file's data. */

View File

@ -47,17 +47,8 @@ routines := \
remove rename \
memstream obstream \
internals sysd-stdio pipestream stdio_init libc_fatal
# Several mpn functions from GNU MP are used by the printf_fp function.
mpn-routines := add_1 add_n addmul_1 cmp divmod divmod_1 udiv_qrnnd \
lshift rshift mod_1 mul mul_1 mul_n sub_n submul_1
mpn-headers = longlong.h gmp.h gmp-impl.h gmp-mparam.h asm-syntax.h
routines := $(strip $(routines) $(mpn-routines)) \
dbl2mpn ldbl2mpn \
mpn2flt mpn2dbl mpn2ldbl
aux := errlist siglist defs glue mp_clz_tab fpioconst
distribute = $(mpn-headers) gen-mpn-copy _itoa.h fpioconst.h
aux := errlist siglist defs glue
distribute := _itoa.h
tests := tst-printf tstscanf test_rdwr test-popen tstgetln test-fseek \
temptest tst-fileno test-fwrite \
@ -66,49 +57,3 @@ tests := tst-printf tstscanf test_rdwr test-popen tstgetln test-fseek \
include ../Rules
ifdef gmp-srcdir
gmp-srcdir := $(firstword $(filter-out ..//%,$(..)$(gmp-srcdir) $(gmp-srcdir)))
# Copy the mpn source files we use from the GNU MP source directory.
# `gmp-srcdir' is set by doing `configure --with-gmp=DIR'.
# (Do not try this at home. You need an as yet unreleased version of GNU MP.)
mpn-sysdep := $(addsuffix .c,$(mpn-routines)) \
$(addsuffix .S,$(mpn-routines)) \
$(addsuffix .s,$(mpn-routines)) gmp-mparam.h asm-syntax.h
mpn-try := $(addprefix $(gmp-srcdir)/mpn/*/,$(mpn-sysdep))
mpn-found := $(wildcard $(mpn-try))
mpn-found := $(filter-out $(patsubst %.S,%.s,$(filter %.s,$(mpn-found))),\
$(mpn-found))
include mpn-copy.mk
%.mk: gen-%; sh $< > $@
mpn-copy-1 := $(patsubst $(gmp-srcdir)/mpn/%,$(sysdep_dir)/%,$(mpn-found))
mpn-copy-sysdep := $(mpn-copy-sysdep) $(mpn-copy-1)
$(mpn-copy-1): $(sysdep_dir)/%: $(ignore gmp2glibc.sed) $(gmp-srcdir)/mpn/%
$(gmp2glibc)
mpn-stuff = $(mpn-copy-sysdep) $(mpn-copy)
# chmod so I don't edit them by mistake.
define gmp2glibc
$(ignore sed -f $^ > $@-tmp)
cp $< $@-tmp
chmod a-w $@-tmp
mv -f $@-tmp $@
endef
mpn-copy = $(filter-out $(mpn-sysdep),$(mpn-headers) mp_clz_tab.c)
$(mpn-copy): %: $(ignore gmp2glibc.sed) $(gmp-srcdir)/%; $(gmp2glibc)
.PHONY: copy-mpn clean-mpn
copy-mpn: $(mpn-stuff)
clean-mpn:
rm -f $(mpn-stuff)
endif

View File

@ -29,9 +29,10 @@ Cambridge, MA 02139, USA. */
#include <ctype.h>
#include <float.h>
#include <gmp-mparam.h>
#include <gmp.h>
#include <gmp-impl.h>
#include <longlong.h>
#include "../stdlib/gmp.h"
#include "../stdlib/gmp-impl.h"
#include "../stdlib/longlong.h"
#include "../stdlib/fpioconst.h"
#include "../locale/localeinfo.h"
#include <limits.h>
#include <math.h>
@ -119,8 +120,6 @@ extern mp_size_t __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
int *expt, int *is_neg,
long double value);
#include "fpioconst.h"
static unsigned int guess_grouping (unsigned int intdig_max,
const char *grouping, wchar_t sepchar);

View File

@ -36,11 +36,11 @@ Cambridge, MA 02139, USA. */
#include "../locale/localeinfo.h"
#include <math.h>
#include <stdlib.h>
#include "../stdio/gmp.h"
#include "../stdio/gmp-impl.h"
#include "gmp.h"
#include "gmp-impl.h"
#include <gmp-mparam.h>
#include "../stdio/longlong.h"
#include "../stdio/fpioconst.h"
#include "longlong.h"
#include "fpioconst.h"
#define NDEBUG 1
#include <assert.h>