mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
Fri Apr 19 00:49:44 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* stdlib/rpmatch.c (rpmatch: try): Take new arg NOMATCH, return value for nonmatching nonerror (instead of !MATCH). (rpmatch): Use it, so we return -1 when NOEXPR doesn't match either. * resolv/getnetnamadr.c (getnetbyaddr): Use u_int32_t instead of unsigned long for variable NET2. * time/etcetera, time/europe, time/solar89: Updated from ADO's 96e. Tue Apr 9 14:37:31 1996 Ulrich Drepper <drepper@cygnus.com> * catgets/Makefile, catgets/catgets.c, catgets/catgetsinfo.h, catgets/config.h, catgets/gencat.c, catgets/nl_types.h, catgets/open_catalog.c: New files. Implementation of XPG4 compliant catgets() function and needed tools. * Makefile (subdirs): Add catgets. Thu Apr 18 23:36:11 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * math/Makefile (CPPFLAGS): Append -D__NO_MATH_INLINES. Wed Apr 10 20:48:43 1996 Ulrich Drepper <drepper@cygnus.com> * stdio-common/vfprintf.c: Correct some typos. * sysdeps/libm-ieee754/w_gammaf.c, sysdeps/libm-ieee754/w_lgamma.c, sysdeps/libm-ieee754/w_lgammaf.c: Reference signgam instead of __signgam. Thu Apr 18 21:07:27 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * Makerules (no-whole-archive): New variable. (build-shlib): Use it. * elf/Makefile (libdl.so): Use it. * configure.in (libc_cv_ld_no_whole_archive): New check for --no-whole-archive. * config.make.in (have-no-whole-archive): New variable. * stdio-common/printf_fp.c: Increase fudge factor for BIGNUM_SIZE calc from 3 to 4. * Make-dist: Include version.mk. (version, release): Variables removed. * Makeconfig (version.mk): New target. Fri Apr 19 01:42:18 1996 Ulrich Drepper <drepper@cygnus.com> * locale/Makefile (headers): Add langinfo.h. (CPPFLAGS): Remove -Iliblib.
This commit is contained in:
parent
f24f4dc82d
commit
a641835acd
52
ChangeLog
52
ChangeLog
@ -1,3 +1,55 @@
|
|||||||
|
Fri Apr 19 00:49:44 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
|
||||||
|
|
||||||
|
* stdlib/rpmatch.c (rpmatch: try): Take new arg NOMATCH, return value
|
||||||
|
for nonmatching nonerror (instead of !MATCH).
|
||||||
|
(rpmatch): Use it, so we return -1 when NOEXPR doesn't match either.
|
||||||
|
|
||||||
|
* resolv/getnetnamadr.c (getnetbyaddr): Use u_int32_t instead of
|
||||||
|
unsigned long for variable NET2.
|
||||||
|
|
||||||
|
* time/etcetera, time/europe, time/solar89: Updated from ADO's 96e.
|
||||||
|
|
||||||
|
Tue Apr 9 14:37:31 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* catgets/Makefile, catgets/catgets.c, catgets/catgetsinfo.h,
|
||||||
|
catgets/config.h, catgets/gencat.c, catgets/nl_types.h,
|
||||||
|
catgets/open_catalog.c: New files. Implementation of XPG4
|
||||||
|
compliant catgets() function and needed tools.
|
||||||
|
* Makefile (subdirs): Add catgets.
|
||||||
|
|
||||||
|
Thu Apr 18 23:36:11 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
|
||||||
|
|
||||||
|
* math/Makefile (CPPFLAGS): Append -D__NO_MATH_INLINES.
|
||||||
|
|
||||||
|
Wed Apr 10 20:48:43 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* stdio-common/vfprintf.c: Correct some typos.
|
||||||
|
|
||||||
|
* sysdeps/libm-ieee754/w_gammaf.c, sysdeps/libm-ieee754/w_lgamma.c,
|
||||||
|
sysdeps/libm-ieee754/w_lgammaf.c: Reference signgam instead of
|
||||||
|
__signgam.
|
||||||
|
|
||||||
|
Thu Apr 18 21:07:27 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
|
||||||
|
|
||||||
|
* Makerules (no-whole-archive): New variable.
|
||||||
|
(build-shlib): Use it.
|
||||||
|
* elf/Makefile (libdl.so): Use it.
|
||||||
|
* configure.in (libc_cv_ld_no_whole_archive): New check for
|
||||||
|
--no-whole-archive.
|
||||||
|
* config.make.in (have-no-whole-archive): New variable.
|
||||||
|
|
||||||
|
* stdio-common/printf_fp.c: Increase fudge factor for BIGNUM_SIZE calc
|
||||||
|
from 3 to 4.
|
||||||
|
|
||||||
|
* Make-dist: Include version.mk.
|
||||||
|
(version, release): Variables removed.
|
||||||
|
* Makeconfig (version.mk): New target.
|
||||||
|
|
||||||
|
Fri Apr 19 01:42:18 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* locale/Makefile (headers): Add langinfo.h.
|
||||||
|
(CPPFLAGS): Remove -Iliblib.
|
||||||
|
|
||||||
Mon Apr 15 16:49:04 1996 Roland McGrath <roland@whiz-bang.gnu.ai.mit.edu>
|
Mon Apr 15 16:49:04 1996 Roland McGrath <roland@whiz-bang.gnu.ai.mit.edu>
|
||||||
|
|
||||||
* malloc/memalign.c, malloc/malloc.h [__DJGPP__ == 1]: Elide memalign
|
* malloc/memalign.c, malloc/malloc.h [__DJGPP__ == 1]: Elide memalign
|
||||||
|
@ -105,11 +105,7 @@ foo:=$(shell echo '+tsrcs=$(+tsrcs)'>&2)
|
|||||||
foo:=$(shell echo foobie, dammit! >&2)
|
foo:=$(shell echo foobie, dammit! >&2)
|
||||||
|
|
||||||
ifndef tardir
|
ifndef tardir
|
||||||
rel+vers := $(shell sed -n -e 's/^.*RELEASE.*\"\([^"]*\)";$$/\1/p' \
|
-include $(common-objpfx)version.mk
|
||||||
-e 's/^.*VERSION.*\"\([^"]*\)";$$/\1/p' \
|
|
||||||
< $(..)version.h)
|
|
||||||
release := $(word 1,$(rel+vers))
|
|
||||||
version := $(word 2,$(rel+vers))
|
|
||||||
export tardir := glibc-$(version)
|
export tardir := glibc-$(version)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -468,6 +468,13 @@ cross-compiling := yes
|
|||||||
else
|
else
|
||||||
cross-compiling := no
|
cross-compiling := no
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Figure out the version numbers from version.h.
|
||||||
|
|
||||||
|
$(common-objpfx)version.mk: $(..)version.h
|
||||||
|
sed -n -e 's/^.*RELEASE.*\"\([^"]*\)";$$/release=\1/p' \
|
||||||
|
-e 's/^.*VERSION.*\"\([^"]*\)";$$/version=\1/p' \
|
||||||
|
< $< > $@-new
|
||||||
|
mv -f $@-new $@
|
||||||
|
|
||||||
endif # Makeconfig not yet included
|
endif # Makeconfig not yet included
|
||||||
|
2
Makefile
2
Makefile
@ -51,7 +51,7 @@ sysdep-subdirs := $(subst $(\n), ,$(sysdep-subdirs))
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# These are the subdirectories containing the library source.
|
# These are the subdirectories containing the library source.
|
||||||
subdirs = csu assert ctype db locale intl math setjmp signal stdlib \
|
subdirs = csu assert ctype db locale intl catgets math setjmp signal stdlib \
|
||||||
stdio-common $(stdio) malloc string wcsmbs time dirent grp pwd\
|
stdio-common $(stdio) malloc string wcsmbs time dirent grp pwd\
|
||||||
posix io termios resource misc socket sysvipc gmon gnulib \
|
posix io termios resource misc socket sysvipc gmon gnulib \
|
||||||
wctype $(wildcard crypt) manual $(sysdep-subdirs) elf
|
wctype $(wildcard crypt) manual $(sysdep-subdirs) elf
|
||||||
|
@ -569,12 +569,19 @@ ifeq (yes,$(build-shared))
|
|||||||
# on other shared objects.
|
# on other shared objects.
|
||||||
lib%.so: lib%_pic.a; $(build-shlib)
|
lib%.so: lib%_pic.a; $(build-shlib)
|
||||||
|
|
||||||
|
ifeq ($(libc_cv_ld_no_whole_archive),yes)
|
||||||
|
no-whole-archive = -Wl,--no-whole-archive
|
||||||
|
else
|
||||||
|
no-whole-archive =
|
||||||
|
endif
|
||||||
|
|
||||||
define build-shlib
|
define build-shlib
|
||||||
$(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS) \
|
$(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS) \
|
||||||
-Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \
|
-Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \
|
||||||
$(LDFLAGS.so) $(LDFLAGS-$(@F:lib%.so=%).so) \
|
$(LDFLAGS.so) $(LDFLAGS-$(@F:lib%.so=%).so) \
|
||||||
-Wl,-rpath-link=$(common-objdir) \
|
-Wl,-rpath-link=$(common-objdir) \
|
||||||
-Wl,--whole-archive $^ $(LDLIBS-$(@F:lib%.so=%).so)
|
-Wl,--whole-archive $^ $(no-whole-archive) \
|
||||||
|
$(LDLIBS-$(@F:lib%.so=%).so)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# Don't try to use -lc when making libc.so itself.
|
# Don't try to use -lc when making libc.so itself.
|
||||||
|
41
catgets/Makefile
Normal file
41
catgets/Makefile
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Copyright (C) 1996 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.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Makefile for catgets.
|
||||||
|
#
|
||||||
|
subdir := catgets
|
||||||
|
|
||||||
|
headers = nl_types.h
|
||||||
|
distribute = catgetsinfo.h config.h
|
||||||
|
routines = catgets open_catalog
|
||||||
|
others = gencat
|
||||||
|
install-bin = gencat
|
||||||
|
|
||||||
|
gencat-modules = xmalloc
|
||||||
|
|
||||||
|
# To find xmalloc.c
|
||||||
|
vpath %.c ../locale/programs
|
||||||
|
|
||||||
|
|
||||||
|
include ../Rules
|
||||||
|
|
||||||
|
$(objpfx)gencat: $(gencat-modules:%=$(objpfx)%.o)
|
||||||
|
|
||||||
|
CPPFLAGS := -DNLSPATH='"$(localedir)/%L/%N:$(localedir)/%L/LC_MESSAGES/%N:"' \
|
||||||
|
-DHAVE_CONFIG_H $(CPPFLAGS)
|
163
catgets/catgets.c
Normal file
163
catgets/catgets.c
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
|
||||||
|
|
||||||
|
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 <alloca.h>
|
||||||
|
#include <nl_types.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
|
||||||
|
#include "catgetsinfo.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Open the catalog and return a descriptor for the catalog. */
|
||||||
|
nl_catd
|
||||||
|
catopen (const char *cat_name, int flag)
|
||||||
|
{
|
||||||
|
__nl_catd result;
|
||||||
|
const char *env_var;
|
||||||
|
|
||||||
|
result = (__nl_catd) malloc (sizeof (__nl_catd));
|
||||||
|
if (result == NULL)
|
||||||
|
/* We cannot get enough memory. */
|
||||||
|
return (nl_catd) -1;
|
||||||
|
|
||||||
|
result->status = closed;
|
||||||
|
|
||||||
|
result->cat_name = strdup (cat_name);
|
||||||
|
if (result->cat_name == NULL)
|
||||||
|
{
|
||||||
|
free (result);
|
||||||
|
return (nl_catd) -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strchr (cat_name, '/') == NULL)
|
||||||
|
{
|
||||||
|
if (flag == NL_CAT_LOCALE)
|
||||||
|
{
|
||||||
|
env_var = getenv ("LC_ALL");
|
||||||
|
if (env_var == NULL)
|
||||||
|
{
|
||||||
|
env_var = getenv ("LC_MESSAGES");
|
||||||
|
if (env_var == NULL)
|
||||||
|
{
|
||||||
|
env_var = getenv ("LANG");
|
||||||
|
if (env_var == NULL)
|
||||||
|
env_var = "C";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
env_var = getenv ("LANG");
|
||||||
|
if (env_var == NULL)
|
||||||
|
env_var = "C";
|
||||||
|
}
|
||||||
|
|
||||||
|
result->env_var = strdup (env_var);
|
||||||
|
if (result->env_var == NULL)
|
||||||
|
{
|
||||||
|
free ((void *) result->cat_name);
|
||||||
|
free ((void *) result);
|
||||||
|
return (nl_catd) -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getenv ("NLSPATH") != NULL)
|
||||||
|
result->nlspath = strdup (getenv ("NLSPATH"));
|
||||||
|
else
|
||||||
|
result->nlspath = strdup (NLSPATH);
|
||||||
|
|
||||||
|
if (result->nlspath == NULL)
|
||||||
|
{
|
||||||
|
free ((void *) result->cat_name);
|
||||||
|
free ((void *) result->env_var);
|
||||||
|
free ((void *) result);
|
||||||
|
return (nl_catd) -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result->env_var = NULL;
|
||||||
|
result->nlspath = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (nl_catd) result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Return message from message catalog. */
|
||||||
|
char *
|
||||||
|
catgets (nl_catd catalog_desc, int set, int message, const char *string)
|
||||||
|
{
|
||||||
|
__nl_catd catalog;
|
||||||
|
size_t idx;
|
||||||
|
size_t cnt;
|
||||||
|
|
||||||
|
/* Be generous if catalog which failed to be open is used. */
|
||||||
|
if (catalog_desc == (nl_catd) -1 || ++set <= 0 || message < 0)
|
||||||
|
return (char *) string;
|
||||||
|
|
||||||
|
catalog = (__nl_catd) catalog_desc;
|
||||||
|
|
||||||
|
if (catalog->status == closed)
|
||||||
|
__open_catalog (catalog, 1);
|
||||||
|
|
||||||
|
if (catalog->status == nonexisting)
|
||||||
|
return (char *) string;
|
||||||
|
|
||||||
|
idx = ((set * message) % catalog->plane_size) * 3;
|
||||||
|
cnt = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (catalog->name_ptr[idx + 0] == (u_int32_t) set
|
||||||
|
&& catalog->name_ptr[idx + 1] == (u_int32_t) message)
|
||||||
|
return (char *) &catalog->strings[catalog->name_ptr[idx + 2]];
|
||||||
|
|
||||||
|
idx += catalog->plane_size * 3;
|
||||||
|
}
|
||||||
|
while (++cnt < catalog->plane_depth);
|
||||||
|
|
||||||
|
return (char *) string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Return resources used for loaded message catalog. */
|
||||||
|
int
|
||||||
|
catclose (nl_catd catalog_desc)
|
||||||
|
{
|
||||||
|
__nl_catd catalog;
|
||||||
|
|
||||||
|
catalog = (__nl_catd) catalog_desc;
|
||||||
|
|
||||||
|
if (catalog->status == mmaped)
|
||||||
|
munmap ((void *) catalog->file_ptr, catalog->file_size);
|
||||||
|
else if (catalog->status == malloced)
|
||||||
|
free ((void *) catalog->file_ptr);
|
||||||
|
else if (catalog->status != closed && catalog->status != nonexisting)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (catalog->nlspath)
|
||||||
|
free ((void *) catalog->nlspath);
|
||||||
|
if (catalog->env_var)
|
||||||
|
free ((void *) catalog->env_var);
|
||||||
|
free ((void *) catalog);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
59
catgets/catgetsinfo.h
Normal file
59
catgets/catgetsinfo.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
|
||||||
|
|
||||||
|
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 <sys/types.h>
|
||||||
|
|
||||||
|
|
||||||
|
struct catalog_obj
|
||||||
|
{
|
||||||
|
u_int32_t magic;
|
||||||
|
u_int32_t plane_size;
|
||||||
|
u_int32_t plane_depth;
|
||||||
|
/* This is in fact two arrays in one: always a pair of name and
|
||||||
|
pointer into the data area. */
|
||||||
|
u_int32_t name_ptr[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* This structure will be filled after loading the catalog. */
|
||||||
|
typedef struct catalog_info
|
||||||
|
{
|
||||||
|
enum { closed, nonexisting, mmaped, malloced } status;
|
||||||
|
|
||||||
|
const char *cat_name;
|
||||||
|
const char *env_var;
|
||||||
|
const char *nlspath;
|
||||||
|
|
||||||
|
size_t plane_size;
|
||||||
|
size_t plane_depth;
|
||||||
|
u_int32_t *name_ptr;
|
||||||
|
const char *strings;
|
||||||
|
|
||||||
|
struct catalog_obj *file_ptr;
|
||||||
|
size_t file_size;
|
||||||
|
} *__nl_catd;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* The magic number to signal we really have a catalog file. */
|
||||||
|
#define CATGETS_MAGIC 0x960408de
|
||||||
|
|
||||||
|
|
||||||
|
/* Prototypes for helper functions. */
|
||||||
|
void __open_catalog (__nl_catd __catalog, int __with_path);
|
14
catgets/config.h
Normal file
14
catgets/config.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#ifndef _CG_CONFIG_H
|
||||||
|
#define _CG_CONFIG_H
|
||||||
|
|
||||||
|
/* Use the internal textdomain used for libc messages. */
|
||||||
|
#define PACKAGE _libc_intl_domainname
|
||||||
|
#ifndef VERSION
|
||||||
|
/* Get libc version number. */
|
||||||
|
#include "../version.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#include_next <config.h>
|
||||||
|
|
||||||
|
#endif
|
1030
catgets/gencat.c
Normal file
1030
catgets/gencat.c
Normal file
File diff suppressed because it is too large
Load Diff
48
catgets/nl_types.h
Normal file
48
catgets/nl_types.h
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/* Copyright (C) 1996 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. */
|
||||||
|
|
||||||
|
#ifndef _NL_TYPES_H
|
||||||
|
#define _NL_TYPES_H 1
|
||||||
|
#include <features.h>
|
||||||
|
|
||||||
|
/* The default message set used by the gencat program. */
|
||||||
|
#define NL_SETD 1
|
||||||
|
|
||||||
|
/* Value for FLAG parameter of `catgets' to say we want XPG4 compliance. */
|
||||||
|
#define NL_CAT_LOCALE 1
|
||||||
|
|
||||||
|
/* Message catalog descriptor type. */
|
||||||
|
typedef void *nl_catd;
|
||||||
|
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
/* Open message catalog for later use, returning descriptor. */
|
||||||
|
extern nl_catd catopen __P ((__const char *__cat_name, int __flag));
|
||||||
|
|
||||||
|
/* Return translation with NUMBER in SET of CATALOG; if not found
|
||||||
|
return STRING. */
|
||||||
|
extern char *catgets __P ((nl_catd __catalog, int __set, int __number,
|
||||||
|
__const char *__string));
|
||||||
|
|
||||||
|
/* Close message CATALOG. */
|
||||||
|
extern int catclose __P ((nl_catd __catalog));
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* nl_types.h */
|
263
catgets/open_catalog.c
Normal file
263
catgets/open_catalog.c
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
|
||||||
|
|
||||||
|
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 <endian.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
#include "catgetsinfo.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define SWAPU32(w) \
|
||||||
|
(((w) << 24) | (((w) & 0xff00) << 8) | (((w) >> 8) & 0xff00) | ((w) >> 24))
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
__open_catalog (__nl_catd catalog, int with_path)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
struct stat st;
|
||||||
|
int swapping;
|
||||||
|
|
||||||
|
if (strchr (catalog->cat_name, '/') != NULL || !with_path)
|
||||||
|
fd = open (catalog->cat_name, O_RDONLY);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const char *run_nlspath = catalog->nlspath;
|
||||||
|
#define ENOUGH(n) \
|
||||||
|
if (bufact + (n) >=bufmax) \
|
||||||
|
{ \
|
||||||
|
char *old_buf = buf; \
|
||||||
|
bufmax += 256 + (n); \
|
||||||
|
buf = (char *) alloca (bufmax); \
|
||||||
|
memcpy (buf, old_buf, bufact); \
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The RUN_NLSPATH variable contains a colon separated list of
|
||||||
|
descriptions where we expect to find catalogs. We have to
|
||||||
|
recognize certain % substitutions and stop when we found the
|
||||||
|
first existing file. */
|
||||||
|
char *buf;
|
||||||
|
size_t bufact;
|
||||||
|
size_t bufmax;
|
||||||
|
|
||||||
|
buf = NULL;
|
||||||
|
bufmax = 0;
|
||||||
|
|
||||||
|
fd = -1;
|
||||||
|
while (*run_nlspath != '\0')
|
||||||
|
{
|
||||||
|
bufact = 0;
|
||||||
|
while (*run_nlspath != ':' && *run_nlspath != '\0')
|
||||||
|
if (*run_nlspath == '%')
|
||||||
|
{
|
||||||
|
const char *tmp;
|
||||||
|
|
||||||
|
++run_nlspath; /* We have seen the `%'. */
|
||||||
|
switch (*run_nlspath++)
|
||||||
|
{
|
||||||
|
case 'N':
|
||||||
|
/* Use the catalog name. */
|
||||||
|
ENOUGH (strlen (catalog->cat_name));
|
||||||
|
bufact = stpcpy (&buf[bufact], catalog->cat_name) - buf;
|
||||||
|
break;
|
||||||
|
case 'L':
|
||||||
|
/* Use the current locale category value. */
|
||||||
|
ENOUGH (strlen (catalog->env_var));
|
||||||
|
bufact = stpcpy (&buf[bufact], catalog->env_var) - buf;
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
/* Use language element of locale category value. */
|
||||||
|
tmp = catalog->env_var;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
ENOUGH (1);
|
||||||
|
buf[bufact++] = *tmp++;
|
||||||
|
}
|
||||||
|
while (*tmp != '\0' && *tmp != '_' && *tmp != '.');
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
/* Use territory element of locale category value. */
|
||||||
|
tmp = catalog->env_var;
|
||||||
|
do
|
||||||
|
++tmp;
|
||||||
|
while (*tmp != '\0' && *tmp != '_' && *tmp != '.');
|
||||||
|
if (*tmp == '_')
|
||||||
|
{
|
||||||
|
++tmp;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
ENOUGH (1);
|
||||||
|
buf[bufact++] = *tmp;
|
||||||
|
}
|
||||||
|
while (*tmp != '\0' && *tmp != '.');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'c':
|
||||||
|
/* Use code set element of locale category value. */
|
||||||
|
tmp = catalog->env_var;
|
||||||
|
do
|
||||||
|
++tmp;
|
||||||
|
while (*tmp != '\0' && *tmp != '.');
|
||||||
|
if (*tmp == '.')
|
||||||
|
{
|
||||||
|
++tmp;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
ENOUGH (1);
|
||||||
|
buf[bufact++] = *tmp;
|
||||||
|
}
|
||||||
|
while (*tmp != '\0');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '%':
|
||||||
|
ENOUGH (1);
|
||||||
|
buf[bufact++] = '%';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/* Unknown variable: ignore this path element. */
|
||||||
|
bufact = 0;
|
||||||
|
while (*run_nlspath != '\0' && *run_nlspath != ':')
|
||||||
|
++run_nlspath;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ENOUGH (1);
|
||||||
|
buf[bufact++] = *run_nlspath++;
|
||||||
|
}
|
||||||
|
ENOUGH (1);
|
||||||
|
buf[bufact] = '\0';
|
||||||
|
|
||||||
|
if (bufact != 0)
|
||||||
|
{
|
||||||
|
fd = open (buf, O_RDONLY);
|
||||||
|
if (fd >= 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
++run_nlspath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fd < 0 || fstat (fd, &st) < 0)
|
||||||
|
{
|
||||||
|
catalog->status = nonexisting;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef MAP_COPY
|
||||||
|
/* Linux seems to lack read-only copy-on-write. */
|
||||||
|
#define MAP_COPY MAP_PRIVATE
|
||||||
|
#endif
|
||||||
|
#ifndef MAP_FILE
|
||||||
|
/* Some systems do not have this flag; it is superfluous. */
|
||||||
|
#define MAP_FILE 0
|
||||||
|
#endif
|
||||||
|
#ifndef MAP_INHERIT
|
||||||
|
/* Some systems might lack this; they lose. */
|
||||||
|
#define MAP_INHERIT 0
|
||||||
|
#endif
|
||||||
|
catalog->file_size = st.st_size;
|
||||||
|
catalog->file_ptr =
|
||||||
|
(struct catalog_obj *) mmap (NULL, st.st_size, PROT_READ,
|
||||||
|
MAP_FILE|MAP_COPY|MAP_INHERIT, fd, 0);
|
||||||
|
if (catalog->file_ptr != (struct catalog_obj *) -1)
|
||||||
|
/* Tell the world we managed to mmap the file. */
|
||||||
|
catalog->status = mmaped;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* mmap failed perhaps because the system call is not
|
||||||
|
implemented. Try to load the file. */
|
||||||
|
size_t todo;
|
||||||
|
catalog->file_ptr = malloc (st.st_size);
|
||||||
|
if (catalog->file_ptr == NULL)
|
||||||
|
{
|
||||||
|
catalog->status = nonexisting;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
todo = st.st_size;
|
||||||
|
/* Save read, handle partial reads. */
|
||||||
|
do
|
||||||
|
{
|
||||||
|
size_t now = read (fd, (((char *) &catalog->file_ptr)
|
||||||
|
+ (st.st_size - todo)), todo);
|
||||||
|
if (now == 0)
|
||||||
|
{
|
||||||
|
free ((void *) catalog->file_ptr);
|
||||||
|
catalog->status = nonexisting;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
todo -= now;
|
||||||
|
}
|
||||||
|
while (todo > 0);
|
||||||
|
catalog->status = malloced;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We don't need the file anymore. */
|
||||||
|
close (fd);
|
||||||
|
|
||||||
|
/* Determine whether the file is a catalog file and if yes whether
|
||||||
|
it is written using the correct byte order. Else we have to swap
|
||||||
|
the values. */
|
||||||
|
if (catalog->file_ptr->magic == CATGETS_MAGIC)
|
||||||
|
swapping = 0;
|
||||||
|
else if (catalog->file_ptr->magic == SWAPU32 (CATGETS_MAGIC))
|
||||||
|
swapping = 1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Illegal file. Free he resources and mark catalog as not
|
||||||
|
usable. */
|
||||||
|
if (catalog->status == mmaped)
|
||||||
|
munmap ((void *) catalog->file_ptr, catalog->file_size);
|
||||||
|
else
|
||||||
|
free (catalog->file_ptr);
|
||||||
|
catalog->status = nonexisting;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define SWAP(x) (swapping ? SWAPU32 (x) : (x))
|
||||||
|
|
||||||
|
/* Get dimensions of the used hashing table. */
|
||||||
|
catalog->plane_size = SWAP (catalog->file_ptr->plane_size);
|
||||||
|
catalog->plane_depth = SWAP (catalog->file_ptr->plane_depth);
|
||||||
|
|
||||||
|
/* The file contains two versions of the pointer tables. Pick the
|
||||||
|
right one for the local byte order. */
|
||||||
|
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||||
|
catalog->name_ptr = &catalog->file_ptr->name_ptr[0];
|
||||||
|
#elif __BYTE_ORDER == __BIG_ENDIAN
|
||||||
|
catalog->name_ptr = &catalog->file_ptr->name_ptr[catalog->plane_size
|
||||||
|
* catalog->plane_depth
|
||||||
|
* 3];
|
||||||
|
#else
|
||||||
|
# error Cannot handle __BYTE_ORDER byte order
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The rest of the file contains all the strings. They are
|
||||||
|
addressed relative to the position of the first string. */
|
||||||
|
catalog->strings =
|
||||||
|
(const char *) &catalog->file_ptr->name_ptr[catalog->plane_size
|
||||||
|
* catalog->plane_depth * 3 * 2];
|
||||||
|
}
|
@ -17,6 +17,8 @@ config-defines = @DEFS@
|
|||||||
elf = @elf@
|
elf = @elf@
|
||||||
have-initfini = @libc_cv_have_initfini@
|
have-initfini = @libc_cv_have_initfini@
|
||||||
|
|
||||||
|
have-no-whole-archive = @libc_cv_ld_no_whole_archive@
|
||||||
|
|
||||||
# Configuration options.
|
# Configuration options.
|
||||||
gnu-as = @gnu_as@
|
gnu-as = @gnu_as@
|
||||||
gnu-ld = @gnu_ld@
|
gnu-ld = @gnu_ld@
|
||||||
|
13
configure.in
13
configure.in
@ -469,6 +469,19 @@ elif test $libc_cv_asm_weakext_directive = yes; then
|
|||||||
AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
|
AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
|
||||||
|
cat > conftest.c <<\EOF
|
||||||
|
main () { exit (0); }
|
||||||
|
EOF
|
||||||
|
if ${CC-cc} $CFLAGS -Wl,--no-whole-archive \
|
||||||
|
-o conftest conftest.c 2>/dev/null; then
|
||||||
|
libc_cv_ld_no_whole_archive=yes
|
||||||
|
else
|
||||||
|
libc_cv_ld_no_whole_archive=no
|
||||||
|
fi
|
||||||
|
rm -f conftest*])
|
||||||
|
AC_SUBST(libc_cv_ld_no_whole_archive)dnl
|
||||||
|
|
||||||
### End of automated tests.
|
### End of automated tests.
|
||||||
### Now run sysdeps configure fragments.
|
### Now run sysdeps configure fragments.
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Makefile for elf subdirectory of GNU C Library.
|
# Makefile for elf subdirectory of GNU C Library.
|
||||||
|
|
||||||
# Copyright (C) 1995 Free Software Foundation, Inc.
|
# Copyright (C) 1995, 1996 Free Software Foundation, Inc.
|
||||||
# This file is part of the GNU C Library.
|
# This file is part of the GNU C Library.
|
||||||
|
|
||||||
# The GNU C Library is free software; you can redistribute it and/or
|
# The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -80,7 +80,7 @@ $(objpfx)libdl.so: $(objpfx)libdl_pic.a $(common-objpfx)libc.so $(objpfx)ld.so
|
|||||||
$(patsubst %/,cd %;,$(objpfx)) \
|
$(patsubst %/,cd %;,$(objpfx)) \
|
||||||
$(LINK.o) -shared -o $(@:$(objpfx)%=%) \
|
$(LINK.o) -shared -o $(@:$(objpfx)%=%) \
|
||||||
$(LDFLAGS.so) $(LDFLAGS-dl.so) \
|
$(LDFLAGS.so) $(LDFLAGS-dl.so) \
|
||||||
-Wl,--whole-archive $(^:$(objpfx)%=%)
|
-Wl,--whole-archive $(^:$(objpfx)%=%) $(no-whole-archive)
|
||||||
|
|
||||||
$(slibdir)/$(rtld-installed-name): $(objpfx)ld.so; $(do-install-program)
|
$(slibdir)/$(rtld-installed-name): $(objpfx)ld.so; $(do-install-program)
|
||||||
$(slibdir)/ld-linux.so.1: $(objpfx)ld-linux.so.1; $(do-install-program)
|
$(slibdir)/ld-linux.so.1: $(objpfx)ld-linux.so.1; $(do-install-program)
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#
|
#
|
||||||
subdir := locale
|
subdir := locale
|
||||||
|
|
||||||
headers = locale.h
|
headers = locale.h langinfo.h
|
||||||
distribute = localeinfo.h categories.def \
|
distribute = localeinfo.h categories.def \
|
||||||
$(localedef-modules:=.c) $(locale-modules:=.c) \
|
$(localedef-modules:=.c) $(locale-modules:=.c) \
|
||||||
$(lib-modules:=.c) config.h simple-hash.h iso-4217.def \
|
$(lib-modules:=.c) config.h simple-hash.h iso-4217.def \
|
||||||
@ -60,7 +60,7 @@ $(objpfx)localedef $(objpfx)locale: $(lib-modules:%=$(objpfx)%.o)
|
|||||||
CPPFLAGS := -DLOCALE_PATH='"$(localedir)"' \
|
CPPFLAGS := -DLOCALE_PATH='"$(localedir)"' \
|
||||||
-DCHARMAP_PATH='"$(i18ndir)/charmap"' \
|
-DCHARMAP_PATH='"$(i18ndir)/charmap"' \
|
||||||
-DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \
|
-DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \
|
||||||
-Iliblib -Iprograms $(CPPFLAGS)
|
-Iprograms $(CPPFLAGS)
|
||||||
|
|
||||||
CFLAGS-charmap.c = -Wno-write-strings
|
CFLAGS-charmap.c = -Wno-write-strings
|
||||||
CFLAGS-locfile.c = -Wno-write-strings
|
CFLAGS-locfile.c = -Wno-write-strings
|
||||||
|
@ -71,5 +71,9 @@ include ../Rules
|
|||||||
# the error return conventions for the math functions.
|
# the error return conventions for the math functions.
|
||||||
CPPFLAGS-s_lib_version.c := -D_POSIX_MODE
|
CPPFLAGS-s_lib_version.c := -D_POSIX_MODE
|
||||||
|
|
||||||
|
# We don't want the fdlibm code to use the inline math functions,
|
||||||
|
# only the fdlibm code.
|
||||||
|
CPPFLAGS += -D__NO_MATH_INLINES
|
||||||
|
|
||||||
# The fdlibm code generates a lot of these warnings but is otherwise clean.
|
# The fdlibm code generates a lot of these warnings but is otherwise clean.
|
||||||
override CFLAGS += -Wno-uninitialized -Wno-write-strings
|
override CFLAGS += -Wno-uninitialized -Wno-write-strings
|
||||||
|
@ -1007,7 +1007,7 @@ static const char *re_error_msgid[] =
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Roughly the maximum number of failure points on the stack. Would be
|
/* Roughly the maximum number of failure points on the stack. Would be
|
||||||
exactly that if always used MAX_FAILURE_SPACE each time we failed.
|
exactly that if always used MAX_FAILURE_ITEMS items each time we failed.
|
||||||
This is a variable only so users of regex can assign to it; we never
|
This is a variable only so users of regex can assign to it; we never
|
||||||
change it ourselves. */
|
change it ourselves. */
|
||||||
#if defined (MATCH_MAY_ALLOCATE)
|
#if defined (MATCH_MAY_ALLOCATE)
|
||||||
@ -1224,7 +1224,10 @@ typedef struct
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* We push at most this many items on the stack. */
|
/* We push at most this many items on the stack. */
|
||||||
#define MAX_FAILURE_ITEMS ((num_regs - 1) * NUM_REG_ITEMS + NUM_NONREG_ITEMS)
|
/* We used to use (num_regs - 1), which is the number of registers
|
||||||
|
this regexp will save; but that was changed to 5
|
||||||
|
to avoid stack overflow for a regexp with lots of parens. */
|
||||||
|
#define MAX_FAILURE_ITEMS (5 * NUM_REG_ITEMS + NUM_NONREG_ITEMS)
|
||||||
|
|
||||||
/* We actually push this many items. */
|
/* We actually push this many items. */
|
||||||
#define NUM_FAILURE_ITEMS \
|
#define NUM_FAILURE_ITEMS \
|
||||||
|
@ -154,7 +154,7 @@ static char *net_aliases[MAXALIASES], netbuf[BUFSIZ+1];
|
|||||||
cp += n;
|
cp += n;
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
cp += n;
|
cp += n;
|
||||||
*ap++ = bp;
|
*ap++ = bp;
|
||||||
bp += strlen(bp) + 1;
|
bp += strlen(bp) + 1;
|
||||||
net_entry.n_addrtype =
|
net_entry.n_addrtype =
|
||||||
@ -189,7 +189,7 @@ static char *net_aliases[MAXALIASES], netbuf[BUFSIZ+1];
|
|||||||
paux1 = pauxt;
|
paux1 = pauxt;
|
||||||
}
|
}
|
||||||
in = ++st;
|
in = ++st;
|
||||||
}
|
}
|
||||||
net_entry.n_net = inet_network(paux2);
|
net_entry.n_net = inet_network(paux2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -209,7 +209,7 @@ getnetbyaddr(net, net_type)
|
|||||||
int nn, anslen;
|
int nn, anslen;
|
||||||
querybuf buf;
|
querybuf buf;
|
||||||
char qbuf[MAXDNAME];
|
char qbuf[MAXDNAME];
|
||||||
unsigned long net2;
|
u_int32_t net2;
|
||||||
struct netent *net_entry;
|
struct netent *net_entry;
|
||||||
|
|
||||||
if (net_type != AF_INET)
|
if (net_type != AF_INET)
|
||||||
|
@ -337,7 +337,7 @@ __printf_fp (FILE *fp,
|
|||||||
would be really big it could lead to memory problems. */
|
would be really big it could lead to memory problems. */
|
||||||
{
|
{
|
||||||
mp_size_t bignum_size = ((ABS (exponent) + BITS_PER_MP_LIMB - 1)
|
mp_size_t bignum_size = ((ABS (exponent) + BITS_PER_MP_LIMB - 1)
|
||||||
/ BITS_PER_MP_LIMB + 3) * sizeof (mp_limb);
|
/ BITS_PER_MP_LIMB + 4) * sizeof (mp_limb);
|
||||||
frac = (mp_limb *) alloca (bignum_size);
|
frac = (mp_limb *) alloca (bignum_size);
|
||||||
tmp = (mp_limb *) alloca (bignum_size);
|
tmp = (mp_limb *) alloca (bignum_size);
|
||||||
scale = (mp_limb *) alloca (bignum_size);
|
scale = (mp_limb *) alloca (bignum_size);
|
||||||
|
@ -895,7 +895,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
|
|||||||
|
|
||||||
tmp = ++f;
|
tmp = ++f;
|
||||||
if (ISDIGIT (*tmp) && read_int (&tmp) && *tmp == L_('$'))
|
if (ISDIGIT (*tmp) && read_int (&tmp) && *tmp == L_('$'))
|
||||||
/* The width comes from an positional parameter. */
|
/* The width comes from a positional parameter. */
|
||||||
goto do_positional;
|
goto do_positional;
|
||||||
|
|
||||||
width = va_arg (ap, int);
|
width = va_arg (ap, int);
|
||||||
@ -914,7 +914,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
|
|||||||
LABEL (width):
|
LABEL (width):
|
||||||
width = read_int (&f);
|
width = read_int (&f);
|
||||||
if (*f == L_('$'))
|
if (*f == L_('$'))
|
||||||
/* Oh, oh. The argument comes from an positional parameter. */
|
/* Oh, oh. The argument comes from a positional parameter. */
|
||||||
goto do_positional;
|
goto do_positional;
|
||||||
JUMP (*f, step1_jumps);
|
JUMP (*f, step1_jumps);
|
||||||
|
|
||||||
@ -926,7 +926,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
|
|||||||
|
|
||||||
tmp = ++f;
|
tmp = ++f;
|
||||||
if (ISDIGIT (*tmp) && read_int (&tmp) > 0 && *tmp == L_('$'))
|
if (ISDIGIT (*tmp) && read_int (&tmp) > 0 && *tmp == L_('$'))
|
||||||
/* The precision comes from an positional parameter. */
|
/* The precision comes from a positional parameter. */
|
||||||
goto do_positional;
|
goto do_positional;
|
||||||
|
|
||||||
prec = va_arg (ap, int);
|
prec = va_arg (ap, int);
|
||||||
|
@ -30,7 +30,7 @@ rpmatch (response)
|
|||||||
{
|
{
|
||||||
/* Match against one of the response patterns, compiling the pattern
|
/* Match against one of the response patterns, compiling the pattern
|
||||||
first if necessary. */
|
first if necessary. */
|
||||||
inline int try (const int tag, const int match,
|
inline int try (const int tag, const int match, const int nomatch,
|
||||||
const char **lastp, regex_t *re)
|
const char **lastp, regex_t *re)
|
||||||
{
|
{
|
||||||
const char *pattern = nl_langinfo (tag);
|
const char *pattern = nl_langinfo (tag);
|
||||||
@ -50,13 +50,13 @@ rpmatch (response)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Try the pattern. */
|
/* Try the pattern. */
|
||||||
return regexec (re, response, 0, NULL, 0) == 0 ? match : !match;
|
return regexec (re, response, 0, NULL, 0) == 0 ? match : nomatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We cache the response patterns and compiled regexps here. */
|
/* We cache the response patterns and compiled regexps here. */
|
||||||
static const char *yesexpr, *noexpr;
|
static const char *yesexpr, *noexpr;
|
||||||
static regex_t yesre, nore;
|
static regex_t yesre, nore;
|
||||||
|
|
||||||
return (try (YESEXPR, 1, &yesexpr, &yesre) ?:
|
return (try (YESEXPR, 1, 0, &yesexpr, &yesre) ?:
|
||||||
try (NOEXPR, 0, &noexpr, &nore));
|
try (NOEXPR, 0, -1, &noexpr, &nore));
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ static char rcsid[] = "$NetBSD: w_gammaf.c,v 1.4 1995/11/20 22:06:48 jtc Exp $";
|
|||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "math_private.h"
|
#include "math_private.h"
|
||||||
|
|
||||||
extern int __signgam;
|
extern int signgam;
|
||||||
|
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
float __gammaf(float x)
|
float __gammaf(float x)
|
||||||
@ -30,10 +30,10 @@ extern int __signgam;
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef _IEEE_LIBM
|
#ifdef _IEEE_LIBM
|
||||||
return __ieee754_lgammaf_r(x,&__signgam);
|
return __ieee754_lgammaf_r(x,&signgam);
|
||||||
#else
|
#else
|
||||||
float y;
|
float y;
|
||||||
y = __ieee754_lgammaf_r(x,&__signgam);
|
y = __ieee754_lgammaf_r(x,&signgam);
|
||||||
if(_LIB_VERSION == _IEEE_) return y;
|
if(_LIB_VERSION == _IEEE_) return y;
|
||||||
if(!__finitef(y)&&__finitef(x)) {
|
if(!__finitef(y)&&__finitef(x)) {
|
||||||
if(__floorf(x)==x&&x<=(float)0.0)
|
if(__floorf(x)==x&&x<=(float)0.0)
|
||||||
|
@ -23,7 +23,7 @@ static char rcsid[] = "$NetBSD: w_lgamma.c,v 1.6 1995/05/10 20:49:24 jtc Exp $";
|
|||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "math_private.h"
|
#include "math_private.h"
|
||||||
|
|
||||||
extern int __signgam;
|
extern int signgam;
|
||||||
|
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
double __lgamma(double x)
|
double __lgamma(double x)
|
||||||
@ -33,10 +33,10 @@ extern int __signgam;
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef _IEEE_LIBM
|
#ifdef _IEEE_LIBM
|
||||||
return __ieee754_lgamma_r(x,&__signgam);
|
return __ieee754_lgamma_r(x,&signgam);
|
||||||
#else
|
#else
|
||||||
double y;
|
double y;
|
||||||
y = __ieee754_lgamma_r(x,&__signgam);
|
y = __ieee754_lgamma_r(x,&signgam);
|
||||||
if(_LIB_VERSION == _IEEE_) return y;
|
if(_LIB_VERSION == _IEEE_) return y;
|
||||||
if(!__finite(y)&&__finite(x)) {
|
if(!__finite(y)&&__finite(x)) {
|
||||||
if(__floor(x)==x&&x<=0.0)
|
if(__floor(x)==x&&x<=0.0)
|
||||||
|
@ -20,7 +20,7 @@ static char rcsid[] = "$NetBSD: w_lgammaf.c,v 1.3 1995/05/10 20:49:30 jtc Exp $"
|
|||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "math_private.h"
|
#include "math_private.h"
|
||||||
|
|
||||||
extern int __signgam;
|
extern int signgam;
|
||||||
|
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
float __lgammaf(float x)
|
float __lgammaf(float x)
|
||||||
@ -30,10 +30,10 @@ extern int __signgam;
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef _IEEE_LIBM
|
#ifdef _IEEE_LIBM
|
||||||
return __ieee754_lgammaf_r(x,&__signgam);
|
return __ieee754_lgammaf_r(x,&signgam);
|
||||||
#else
|
#else
|
||||||
float y;
|
float y;
|
||||||
y = __ieee754_lgammaf_r(x,&__signgam);
|
y = __ieee754_lgammaf_r(x,&signgam);
|
||||||
if(_LIB_VERSION == _IEEE_) return y;
|
if(_LIB_VERSION == _IEEE_) return y;
|
||||||
if(!__finitef(y)&&__finitef(x)) {
|
if(!__finitef(y)&&__finitef(x)) {
|
||||||
if(__floorf(x)==x&&x<=(float)0.0)
|
if(__floorf(x)==x&&x<=(float)0.0)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# @(#)etcetera 7.4
|
# @(#)etcetera 7.5
|
||||||
|
|
||||||
# All of these are set up just so people can "zic -l" to a timezone
|
# All of these are set up just so people can "zic -l" to a timezone
|
||||||
# that's right for their area, even if it doesn't have a name or DST rules
|
# that's right for their area, even if it doesn't have a name or DST rules
|
||||||
@ -27,7 +27,8 @@ Link Etc/GMT Etc/GMT0
|
|||||||
# zic -l GMT-12
|
# zic -l GMT-12
|
||||||
# so we moved the names into the Etc subdirectory.
|
# so we moved the names into the Etc subdirectory.
|
||||||
|
|
||||||
Zone Etc/GMT-13 13 - GMT-13 # 12 hours ahead of GMT, plus DST
|
Zone Etc/GMT-14 14 - GMT-14 # 14 hours ahead of GMT
|
||||||
|
Zone Etc/GMT-13 13 - GMT-13
|
||||||
Zone Etc/GMT-12 12 - GMT-12
|
Zone Etc/GMT-12 12 - GMT-12
|
||||||
Zone Etc/GMT-11 11 - GMT-11
|
Zone Etc/GMT-11 11 - GMT-11
|
||||||
Zone Etc/GMT-10 10 - GMT-10
|
Zone Etc/GMT-10 10 - GMT-10
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# @(#)europe 7.31
|
# @(#)europe 7.33
|
||||||
|
|
||||||
# This data is by no means authoritative; if you think you know better,
|
# This data is by no means authoritative; if you think you know better,
|
||||||
# go ahead and edit the file (and please send any changes to
|
# go ahead and edit the file (and please send any changes to
|
||||||
@ -1644,7 +1644,12 @@ Zone Europe/Lisbon -0:36:32 - LMT 1884
|
|||||||
# From Rui Pedro Salgueiro <rps@inescca.inescc.pt> (November 12, 1992):
|
# From Rui Pedro Salgueiro <rps@inescca.inescc.pt> (November 12, 1992):
|
||||||
# Portugal has recently (September, 27) changed timezone
|
# Portugal has recently (September, 27) changed timezone
|
||||||
# (from WET to MET or CET) to harmonize with EEC.
|
# (from WET to MET or CET) to harmonize with EEC.
|
||||||
1:00 EC MET%s
|
1:00 EC MET%s 1996 Mar 31 1:00u
|
||||||
|
# Martin Bruckmann <martin@ua.pt> (1996-02-29) reports via Peter Ilieve
|
||||||
|
# that Portugal is reverting to 0:00 by not moving its clocks this spring.
|
||||||
|
# The new Prime Minister was fed up with getting up in the dark in the winter.
|
||||||
|
0:00 1:00 "WET DST" 1996 Oct 27 1:00u
|
||||||
|
0:00 EC WET%s
|
||||||
# We don't know what happened to Madeira or the Azores,
|
# We don't know what happened to Madeira or the Azores,
|
||||||
# so we'll just use Shanks for now.
|
# so we'll just use Shanks for now.
|
||||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# @(#)solar89 7.3
|
# @(#)solar89 7.4
|
||||||
|
|
||||||
# Apparent noon times below are for Riyadh; they're a bit off for other places.
|
# Apparent noon times below are for Riyadh; they're a bit off for other places.
|
||||||
# Times were computed using a formula provided by the U. S. Naval Observatory:
|
# Times were computed using a formula provided by the U. S. Naval Observatory:
|
||||||
@ -390,4 +390,4 @@ Zone Asia/Riyadh89 3:07:04 - ?? 1989
|
|||||||
3:07:04 sol89 ?? 1990
|
3:07:04 sol89 ?? 1990
|
||||||
3:07:04 - ??
|
3:07:04 - ??
|
||||||
# For backward compatibility...
|
# For backward compatibility...
|
||||||
Link Asia/Riyadh88 Mideast/Riyadh88
|
Link Asia/Riyadh89 Mideast/Riyadh89
|
||||||
|
Loading…
Reference in New Issue
Block a user