update from main archive 970202

1997-02-03 02:33  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dl-deps.c (_dl_map_object_deps): Handle multiple AUXILIARY
	entries.  This is still no complete implementation since AUXILIARY
	entries in other shared objects are not yet handled.

	* libio/libio.h (_IO_cookie_io_functions_t): Move to C++ protected
	place.

	* po/es.po: Update.
	* po/fr.po: Update.
	* po/nl.po: Update.

	* time/Makefile: Better cross-compile support.  Avoid test which
	cannot be run.
	(CFLAGS-tzset.c): New variable.  Overwrite TZDEFAULT value from
	tzfile.h file.
	* time/tzfile.c (__tzfile_read): Allow TZDEFAULT start with '/' even
	in SUID programs.
	* time/tzset.c (__tzset_internal): If TZ envvar is not set use same
	default values as in tzfile.c.

	* elf/dynamic-link.h (elf_get_dynamic_info): Recognize versioning
	tags.
	* elf/link.h: Likewise.
	* elf/elf.h: Add tag definitions and data structures for versioning.

1997-02-03 02:17  Ulrich Drepper  <drepper@cygnus.com>

	* nis/rpcsvc/yp.x (struct ypresp_key_val): There is not stupid
	"Sun bug".  This is the order of elements also used by 4.4BSD.
	* nis/rpcsvc/yp.h: Likewise.
	Reported by HJ Lu.

1997-02-02 12:13  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* sunrpc/Makefile ($(objpfx)x%.h, $(objpfx)x%.c): Add "@:" as
	action.

	* Makefile (install): Pass installation directories as arguments
	to ldconfig.

1997-02-02 23:15  Ulrich Drepper  <drepper@cygnus.com>

	* malloc/malloc.c (__after_morecore_hook): New variable.
	(malloc_extend_top): Call __after_morecore_hook if set.
	(main_trim): Likewise.
	* malloc/malloc.h: Add declaration of __after_morecore_hook.
	Suggested by Marcus Daniels.

1997-02-02 23:00  Marcus G. Daniels  <marcus@tdb.com>

	* malloc/malloc.c (rEALLOc): Protect tsd_setspecific call by
	#ifndef NO_THREADS.
	(mallinfo): Likewise.

	* malloc/malloc.c (__morecore): Make external since it is used in
	programs.

1997-02-02 15:10  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/statbuf.h (struct stat): Make st_dev field
	unsigned.

1997-02-01 23:36  Richard Henderson  <rth@tamu.edu>

	* sysdeps/alpha/stxncpy.S ($unaligned) [src % 8 > dst % 8]: Don't
	use t6 as a temporary; it contains bits we still need in $u_head.

1997-01-31 15:05  John Bowman  <bowman@ipp-garching.mpg.de>

	* sysdeps/i386/fpu/__math.h [__USE_MISC]: Don't declare prototypes
	using __ prefix.  Add prototype for log1p.
This commit is contained in:
Ulrich Drepper 1997-02-03 03:18:58 +00:00
parent c0e4567461
commit 1228ed5cd5
22 changed files with 751 additions and 421 deletions

View File

@ -1,3 +1,77 @@
1997-02-03 02:33 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-deps.c (_dl_map_object_deps): Handle multiple AUXILIARY
entries. This is still no complete implementation since AUXILIARY
entries in other shared objects are not yet handled.
* libio/libio.h (_IO_cookie_io_functions_t): Move to C++ protected
place.
* po/es.po: Update.
* po/fr.po: Update.
* po/nl.po: Update.
* time/Makefile: Better cross-compile support. Avoid test which
cannot be run.
(CFLAGS-tzset.c): New variable. Overwrite TZDEFAULT value from
tzfile.h file.
* time/tzfile.c (__tzfile_read): Allow TZDEFAULT start with '/' even
in SUID programs.
* time/tzset.c (__tzset_internal): If TZ envvar is not set use same
default values as in tzfile.c.
* elf/dynamic-link.h (elf_get_dynamic_info): Recognize versioning
tags.
* elf/link.h: Likewise.
* elf/elf.h: Add tag definitions and data structures for versioning.
1997-02-03 02:17 Ulrich Drepper <drepper@cygnus.com>
* nis/rpcsvc/yp.x (struct ypresp_key_val): There is not stupid
"Sun bug". This is the order of elements also used by 4.4BSD.
* nis/rpcsvc/yp.h: Likewise.
Reported by HJ Lu.
1997-02-02 12:13 H.J. Lu <hjl@gnu.ai.mit.edu>
* sunrpc/Makefile ($(objpfx)x%.h, $(objpfx)x%.c): Add "@:" as
action.
* Makefile (install): Pass installation directories as arguments
to ldconfig.
1997-02-02 23:15 Ulrich Drepper <drepper@cygnus.com>
* malloc/malloc.c (__after_morecore_hook): New variable.
(malloc_extend_top): Call __after_morecore_hook if set.
(main_trim): Likewise.
* malloc/malloc.h: Add declaration of __after_morecore_hook.
Suggested by Marcus Daniels.
1997-02-02 23:00 Marcus G. Daniels <marcus@tdb.com>
* malloc/malloc.c (rEALLOc): Protect tsd_setspecific call by
#ifndef NO_THREADS.
(mallinfo): Likewise.
* malloc/malloc.c (__morecore): Make external since it is used in
programs.
1997-02-02 15:10 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/statbuf.h (struct stat): Make st_dev field
unsigned.
1997-02-01 23:36 Richard Henderson <rth@tamu.edu>
* sysdeps/alpha/stxncpy.S ($unaligned) [src % 8 > dst % 8]: Don't
use t6 as a temporary; it contains bits we still need in $u_head.
1997-01-31 15:05 John Bowman <bowman@ipp-garching.mpg.de>
* sysdeps/i386/fpu/__math.h [__USE_MISC]: Don't declare prototypes
using __ prefix. Add prototype for log1p.
1997-02-02 00:39 Ulrich Drepper <drepper@cygnus.com> 1997-02-02 00:39 Ulrich Drepper <drepper@cygnus.com>
* dirent/dirent.h: Add description _DIRENT_HAVE_D_TYPE. * dirent/dirent.h: Add description _DIRENT_HAVE_D_TYPE.

View File

@ -119,7 +119,7 @@ ifeq (no,$(cross-compiling))
ifeq (yes,$(build-shared)) ifeq (yes,$(build-shared))
install: install:
test ! -x $(common-objpfx)elf/ldconfig || \ test ! -x $(common-objpfx)elf/ldconfig || \
$(common-objpfx)elf/ldconfig -d $(common-objpfx)elf/ldconfig -d $(inst_slibdir) $(inst_libdir)
endif endif
endif endif

4
README
View File

@ -1,4 +1,4 @@
This directory contains the version 2.0 test release of the GNU C Library. This directory contains the version 2.0.1 test release of the GNU C Library.
Many bugs have been fixed since the last release. Many bugs have been fixed since the last release.
Some bugs surely remain. Some bugs surely remain.
@ -46,7 +46,7 @@ provides the Unix `crypt' function, plus some other entry points.
Because of the United States export restriction on DES implementations, Because of the United States export restriction on DES implementations,
we are distributing this code separately from the rest of the C we are distributing this code separately from the rest of the C
library. There is an extra distribution tar file just for crypt; it is library. There is an extra distribution tar file just for crypt; it is
called `glibc-crypt-2.0.tar.gz'. You can just unpack the crypt called `glibc-crypt-2.0.1.tar.gz'. You can just unpack the crypt
distribution along with the rest of the C library and build; you can distribution along with the rest of the C library and build; you can
also build the library without getting crypt. Users outside the USA also build the library without getting crypt. Users outside the USA
can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no

View File

@ -32,7 +32,7 @@ _dl_map_object_deps (struct link_map *map,
struct link_map *map; struct link_map *map;
struct list *next; struct list *next;
}; };
struct list head[2 + npreloads], *tailp, *scanp; struct list *head, *tailp, *scanp;
struct list duphead, *duptailp; struct list duphead, *duptailp;
unsigned int nduplist; unsigned int nduplist;
unsigned int nlist, naux, i; unsigned int nlist, naux, i;
@ -49,36 +49,57 @@ _dl_map_object_deps (struct link_map *map,
naux = nlist = 0; naux = nlist = 0;
#define AUXTAG (DT_NUM + DT_PROCNUM + DT_EXTRATAGIDX (DT_AUXILIARY)) /* XXX The AUXILIARY implementation isn't correct in the moment. XXX
XXX The problem is that we currently do not handle auxiliary XXX
XXX entries in the loaded objects. XXX */
#define AUXTAG (DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM \
+ DT_EXTRATAGIDX (DT_AUXILIARY))
/* First determine the number of auxiliary objects we have to load. */
if (map->l_info[AUXTAG]) if (map->l_info[AUXTAG])
{ {
/* There is an auxiliary library specified. We try to load it, ElfW(Dyn) *d;
and if we can, use its symbols in preference to our own. for (d = map->l_ld; d->d_tag != DT_NULL; ++d)
But if we can't load it, we just silently ignore it. if (d->d_tag == DT_AUXILIARY)
XXX support multiple DT_AUXILIARYs? ++naux;
*/
struct link_map *aux;
void openaux (void)
{
const char *strtab
= ((void *) map->l_addr + map->l_info[DT_STRTAB]->d_un.d_ptr);
aux = _dl_map_object (map, strtab + map->l_info[AUXTAG]->d_un.d_val,
map->l_type == lt_executable ? lt_library :
map->l_type, trace_mode);
}
char *errstring;
const char *objname;
if (! _dl_catch_error (&errstring, &objname, &openaux))
{
/* The auxiliary object is actually there. Use it
as the first search element, even before MAP itself. */
preload (aux);
naux = 1;
}
} }
/* Start the search list with one element: MAP itself. */ /* Now we can allocate the array for the linker maps. */
head = (struct list *) alloca (sizeof (struct list)
* (naux + npreloads + 2));
/* Load the auxiliary objects, even before the object itself. */
if (map->l_info[AUXTAG])
{
/* There is at least one auxiliary library specified. We try to
load it, and if we can, use its symbols in preference to our
own. But if we can't load it, we just silently ignore it. */
const char *strtab
= ((void *) map->l_addr + map->l_info[DT_STRTAB]->d_un.d_ptr);
ElfW(Dyn) *d;
for (d = map->l_ld; d->d_tag != DT_NULL; ++d)
if (d->d_tag == DT_AUXILIARY)
{
struct link_map *aux;
void openaux (void)
{
aux = _dl_map_object (map, strtab + d->d_un.d_val,
(map->l_type == lt_executable
? lt_library : map->l_type),
trace_mode);
}
char *errstring;
const char *objname;
if (! _dl_catch_error (&errstring, &objname, openaux))
/* The auxiliary object is actually there. Use it as
the first search element, even before MAP itself. */
preload (aux);
}
}
/* Next load MAP itself. */
preload (map); preload (map);
/* Add the preloaded items after MAP but before any of its dependencies. */ /* Add the preloaded items after MAP but before any of its dependencies. */

View File

@ -26,11 +26,12 @@
static inline void __attribute__ ((unused)) static inline void __attribute__ ((unused))
elf_get_dynamic_info (ElfW(Dyn) *dyn, elf_get_dynamic_info (ElfW(Dyn) *dyn,
ElfW(Dyn) *info[DT_NUM + DT_PROCNUM + DT_EXTRANUM]) ElfW(Dyn) *info[DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM
+ DT_EXTRANUM])
{ {
unsigned int i; unsigned int i;
for (i = 0; i < DT_NUM + DT_PROCNUM + DT_EXTRANUM; ++i) for (i = 0; i < DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM + DT_EXTRANUM; ++i)
info[i] = NULL; info[i] = NULL;
if (! dyn) if (! dyn)
@ -43,8 +44,11 @@ elf_get_dynamic_info (ElfW(Dyn) *dyn,
else if (dyn->d_tag >= DT_LOPROC && else if (dyn->d_tag >= DT_LOPROC &&
dyn->d_tag < DT_LOPROC + DT_PROCNUM) dyn->d_tag < DT_LOPROC + DT_PROCNUM)
info[dyn->d_tag - DT_LOPROC + DT_NUM] = dyn; info[dyn->d_tag - DT_LOPROC + DT_NUM] = dyn;
else if ((Elf32_Word) DT_VERSIONTAGIDX (dyn->d_tag) < DT_VERSIONTAGNUM)
info[DT_VERSIONTAGIDX (dyn->d_tag) + DT_NUM + DT_PROCNUM] = dyn;
else if ((Elf32_Word) DT_EXTRATAGIDX (dyn->d_tag) < DT_EXTRANUM) else if ((Elf32_Word) DT_EXTRATAGIDX (dyn->d_tag) < DT_EXTRANUM)
info[DT_EXTRATAGIDX (dyn->d_tag) + DT_NUM + DT_PROCNUM] = dyn; info[DT_EXTRATAGIDX (dyn->d_tag) + DT_NUM + DT_PROCNUM
+ DT_VERSIONTAGNUM] = dyn;
else else
assert (! "bad dynamic tag"); assert (! "bad dynamic tag");
dyn++; dyn++;

View File

@ -232,6 +232,11 @@ typedef struct
#define SHT_SHLIB 10 /* Reserved */ #define SHT_SHLIB 10 /* Reserved */
#define SHT_DYNSYM 11 /* Dynamic linker symbol table */ #define SHT_DYNSYM 11 /* Dynamic linker symbol table */
#define SHT_NUM 12 /* Number of defined types. */ #define SHT_NUM 12 /* Number of defined types. */
#define SHT_LOSUNW 0x6ffffffd /* Sun-specific low bound. */
#define SHT_GNU_verdef 0x6ffffffd /* Version definition section. */
#define SHT_GNU_verneed 0x6ffffffe /* Version needs section. */
#define SHT_GNU_versym 0x6fffffff /* Version symbol table. */
#define SHT_HISUNW 0x6fffffff /* Sun-specific high bound. */
#define SHT_LOPROC 0x70000000 /* Start of processor-specific */ #define SHT_LOPROC 0x70000000 /* Start of processor-specific */
#define SHT_HIPROC 0x7fffffff /* End of processor-specific */ #define SHT_HIPROC 0x7fffffff /* End of processor-specific */
#define SHT_LOUSER 0x80000000 /* Start of application-specific */ #define SHT_LOUSER 0x80000000 /* Start of application-specific */
@ -464,6 +469,20 @@ typedef struct
#define DT_HIPROC 0x7fffffff /* End of processor-specific */ #define DT_HIPROC 0x7fffffff /* End of processor-specific */
#define DT_PROCNUM DT_MIPS_NUM /* Most used by any processor */ #define DT_PROCNUM DT_MIPS_NUM /* Most used by any processor */
/* The versioning entry types. The next are defined as part of the
GNU extension. */
#define DT_VERSYM 0x6ffffff0
/* These were chosen by Sun. */
#define DT_VERDEF 0x6ffffffc /* Address of version definition
table */
#define DT_VERDEFNUM 0x6ffffffd /* Number of version definitions */
#define DT_VERNEED 0x6ffffffe /* Address of table with needed
versions */
#define DT_VERNEEDNUM 0x6fffffff /* Number of needed versions */
#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */
#define DT_VERSIONTAGNUM 16
/* Sun added these machine-independent extensions in the "processor-specific" /* Sun added these machine-independent extensions in the "processor-specific"
range. Be compatible. */ range. Be compatible. */
#define DT_AUXILIARY 0x7ffffffd /* Shared object to load before self */ #define DT_AUXILIARY 0x7ffffffd /* Shared object to load before self */
@ -471,6 +490,71 @@ typedef struct
#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) #define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1)
#define DT_EXTRANUM 3 #define DT_EXTRANUM 3
/* Version definition sections. */
typedef struct
{
Elf32_Half vd_version; /* Version revision */
Elf32_Half vd_flags; /* Version information */
Elf32_Half vd_ndx; /* Version Index */
Elf32_Half vd_cnt; /* Number of associated aux entries */
Elf32_Word vd_hash; /* Version name hash value */
Elf32_Word vd_aux; /* Offset in bytes to verdaux array */
Elf32_Word vd_next; /* Offset in bytes to next verdef
entry */
} Elf32_Verdef;
/* Legal values for vd_version (version revision). */
#define VER_DEF_NONE 0 /* No version */
#define VER_DEF_CURRENT 1 /* Current version */
#define VER_DEF_NUM 2 /* Given version number */
/* Legal values for vd_flags (version information flags). */
#define VER_FLG_BASE 0x1 /* Version definition of file itself */
#define VER_FLG_WEAK 0x2 /* Weak version identifier */
/* Auxialiary version information. */
typedef struct
{
Elf32_Addr vda_name; /* Version or dependency names */
Elf32_Word vda_next; /* Offset in bytes to next verdaux
entry */
} Elf32_Verdaux;
/* Version dependency section. */
typedef struct
{
Elf32_Half vn_version; /* Version of structure */
Elf32_Half vn_cnt; /* Number of associated aux entries */
Elf32_Addr vn_file; /* Offset of filename for this
dependency */
Elf32_Word vn_aux; /* Offset in bytes to vernaux array */
Elf32_Word vn_next; /* Offset in bytes to next verneed
entry */
} Elf32_Verneed;
/* Legal values for vn_version (version revision). */
#define VER_NEED_NONE 0 /* No version */
#define VER_NEED_CURRENT 1 /* Current version */
#define VER_NEED_NUM 2 /* Given version number */
/* Auxiliary needed version information. */
typedef struct
{
Elf32_Word vna_hash; /* Hash value of dependency name */
Elf32_Half vna_flags; /* Dependency specific information */
Elf32_Half vna_other; /* Unused */
Elf32_Addr vna_name; /* Dependency name string offset */
Elf32_Word vna_next; /* Offset in bytes to next vernaux
entry */
} Elf32_Vernaux;
/* Legal values for vna_flags. */
#define VER_FLG_WEAK 0x2 /* Weak verison identifier */
/* Auxiliary vector. */ /* Auxiliary vector. */

View File

@ -99,9 +99,12 @@ struct link_map
[0,DT_NUM) are indexed by the processor-independent tags. [0,DT_NUM) are indexed by the processor-independent tags.
[DT_NUM,DT_NUM+DT_PROCNUM) are indexed by the tag minus DT_LOPROC. [DT_NUM,DT_NUM+DT_PROCNUM) are indexed by the tag minus DT_LOPROC.
[DT_NUM+DT_PROCNUM,DT_NUM+DT_PROCNUM+DT_EXTRANUM) are indexed [DT_NUM+DT_PROCNUM,DT_NUM+DT_PROCNUM+DT_EXTRANUM) are indexed
by DT_EXTRATAGIDX(tagvalue) (see <elf.h>). */ by DT_EXTRATAGIDX(tagvalue) and
[DT_NUM+DT_PROCNUM+DT_VERSIONTAGNUM,
DT_NUM+DT_PROCNUM+DT_VERSIONTAGNUM+DT_EXTRANUM)
are indexed by DT_EXTRATAGIDX(tagvalue) (see <elf.h>). */
ElfW(Dyn) *l_info[DT_NUM + DT_PROCNUM + DT_EXTRANUM]; ElfW(Dyn) *l_info[DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM + DT_EXTRANUM];
const ElfW(Phdr) *l_phdr; /* Pointer to program header table in core. */ const ElfW(Phdr) *l_phdr; /* Pointer to program header table in core. */
ElfW(Addr) l_entry; /* Entry point location. */ ElfW(Addr) l_entry; /* Entry point location. */
ElfW(Half) l_phnum; /* Number of program header entries. */ ElfW(Half) l_phnum; /* Number of program header entries. */

View File

@ -149,15 +149,6 @@ the executable file might be covered by the GNU General Public License. */
struct _IO_jump_t; struct _IO_FILE; struct _IO_jump_t; struct _IO_FILE;
/* Define the user-visible type, with user-friendly member names. */
typedef struct
{
_IO_ssize_t (*read) __P ((struct _IO_FILE *, void *, _IO_ssize_t));
_IO_ssize_t (*write) __P ((struct _IO_FILE *, const void *, _IO_ssize_t));
_IO_fpos_t (*seek) __P ((struct _IO_FILE *, _IO_off_t, int));
int (*close) __P ((struct _IO_FILE *));
} _IO_cookie_io_functions_t;
/* Handle lock. */ /* Handle lock. */
#ifdef _IO_MTSAFE_IO #ifdef _IO_MTSAFE_IO
#include <stdio-lock.h> #include <stdio-lock.h>
@ -236,6 +227,15 @@ extern struct _IO_FILE_plus _IO_stdin_, _IO_stdout_, _IO_stderr_;
#define _IO_stderr ((_IO_FILE*)(&_IO_stderr_)) #define _IO_stderr ((_IO_FILE*)(&_IO_stderr_))
/* Define the user-visible type, with user-friendly member names. */
typedef struct
{
_IO_ssize_t (*read) __P ((struct _IO_FILE *, void *, _IO_ssize_t));
_IO_ssize_t (*write) __P ((struct _IO_FILE *, const void *, _IO_ssize_t));
_IO_fpos_t (*seek) __P ((struct _IO_FILE *, _IO_off_t, int));
int (*close) __P ((struct _IO_FILE *));
} _IO_cookie_io_functions_t;
/* Special file type for fopencookie function. */ /* Special file type for fopencookie function. */
struct _IO_cookie_file { struct _IO_cookie_file {
struct _IO_FILE file; struct _IO_FILE file;

View File

@ -820,12 +820,12 @@ do { \
#if __STD_C #if __STD_C
Void_t * __default_morecore (ptrdiff_t); Void_t * __default_morecore (ptrdiff_t);
static Void_t *(*__morecore)(ptrdiff_t) = __default_morecore; Void_t *(*__morecore)(ptrdiff_t) = __default_morecore;
#else #else
Void_t * __default_morecore (); Void_t * __default_morecore ();
static Void_t *(*__morecore)() = __default_morecore; Void_t *(*__morecore)() = __default_morecore;
#endif #endif
@ -1615,6 +1615,7 @@ __malloc_ptr_t weak_variable (*__realloc_hook)
__MALLOC_P ((__malloc_ptr_t __ptr, size_t __size)) = realloc_hook_ini; __MALLOC_P ((__malloc_ptr_t __ptr, size_t __size)) = realloc_hook_ini;
__malloc_ptr_t weak_variable (*__memalign_hook) __malloc_ptr_t weak_variable (*__memalign_hook)
__MALLOC_P ((size_t __size, size_t __alignment)) = memalign_hook_ini; __MALLOC_P ((size_t __size, size_t __alignment)) = memalign_hook_ini;
void weak_variable (*__after_morecore_hook) __MALLOC_P ((void)) = NULL;
/* Activate a standard set of debugging hooks. */ /* Activate a standard set of debugging hooks. */
void void
@ -2215,6 +2216,10 @@ static void malloc_extend_top(ar_ptr, nb) arena *ar_ptr; INTERNAL_SIZE_T nb;
(brk < old_end && old_top != initial_top(&main_arena))) (brk < old_end && old_top != initial_top(&main_arena)))
return; return;
/* Call the `morecore' hook if necessary. */
if (__after_morecore_hook)
(*__after_morecore_hook) ();
sbrked_mem += sbrk_size; sbrked_mem += sbrk_size;
if (brk == old_end) { /* can just add bytes to current top */ if (brk == old_end) { /* can just add bytes to current top */
@ -2243,6 +2248,10 @@ static void malloc_extend_top(ar_ptr, nb) arena *ar_ptr; INTERNAL_SIZE_T nb;
new_brk = (char*)(MORECORE (correction)); new_brk = (char*)(MORECORE (correction));
if (new_brk == (char*)(MORECORE_FAILURE)) return; if (new_brk == (char*)(MORECORE_FAILURE)) return;
/* Call the `morecore' hook if necessary. */
if (__after_morecore_hook)
(*__after_morecore_hook) ();
sbrked_mem += correction; sbrked_mem += correction;
top(&main_arena) = (mchunkptr)brk; top(&main_arena) = (mchunkptr)brk;
@ -2914,8 +2923,10 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes;
(void)mutex_lock(&ar_ptr->mutex); (void)mutex_lock(&ar_ptr->mutex);
#endif #endif
#ifndef NO_THREADS
/* As in malloc(), remember this arena for the next allocation. */ /* As in malloc(), remember this arena for the next allocation. */
tsd_setspecific(arena_key, (Void_t *)ar_ptr); tsd_setspecific(arena_key, (Void_t *)ar_ptr);
#endif
newp = chunk_realloc(ar_ptr, oldp, oldsize, nb); newp = chunk_realloc(ar_ptr, oldp, oldsize, nb);
@ -3421,6 +3432,10 @@ main_trim(pad) size_t pad;
new_brk = (char*)(MORECORE (-extra)); new_brk = (char*)(MORECORE (-extra));
/* Call the `morecore' hook if necessary. */
if (__after_morecore_hook)
(*__after_morecore_hook) ();
if (new_brk == (char*)(MORECORE_FAILURE)) { /* sbrk failed? */ if (new_brk == (char*)(MORECORE_FAILURE)) { /* sbrk failed? */
/* Try to figure out what we have */ /* Try to figure out what we have */
current_brk = (char*)(MORECORE (0)); current_brk = (char*)(MORECORE (0));
@ -3703,7 +3718,9 @@ struct mallinfo mALLINFo()
struct mallinfo mi; struct mallinfo mi;
Void_t *vptr = NULL; Void_t *vptr = NULL;
#ifndef NO_THREADS
tsd_getspecific(arena_key, vptr); tsd_getspecific(arena_key, vptr);
#endif
malloc_update_mallinfo((vptr ? (arena*)vptr : &main_arena), &mi); malloc_update_mallinfo((vptr ? (arena*)vptr : &main_arena), &mi);
return mi; return mi;
} }

View File

@ -181,6 +181,7 @@ extern __malloc_ptr_t (*__realloc_hook) __MALLOC_P ((__malloc_ptr_t __ptr,
size_t __size)); size_t __size));
extern __malloc_ptr_t (*__memalign_hook) __MALLOC_P ((size_t __size, extern __malloc_ptr_t (*__memalign_hook) __MALLOC_P ((size_t __size,
size_t __alignment)); size_t __alignment));
extern void (*__after_morecore_hook) __MALLOC_P ((void));
/* Activate a standard set of debugging hooks. */ /* Activate a standard set of debugging hooks. */
extern void __malloc_check_init __MALLOC_P ((void)); extern void __malloc_check_init __MALLOC_P ((void));

View File

@ -5,23 +5,23 @@
* may copy or modify Sun RPC without charge, but are not authorized * may copy or modify Sun RPC without charge, but are not authorized
* to license or distribute it to anyone else except as part of a product or * to license or distribute it to anyone else except as part of a product or
* program developed by the user. * program developed by the user.
* *
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
* *
* Sun RPC is provided with no support and without any obligation on the * Sun RPC is provided with no support and without any obligation on the
* part of Sun Microsystems, Inc. to assist in its use, correction, * part of Sun Microsystems, Inc. to assist in its use, correction,
* modification or enhancement. * modification or enhancement.
* *
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
* OR ANY PART THEREOF. * OR ANY PART THEREOF.
* *
* In no event will Sun Microsystems, Inc. be liable for any lost revenue * In no event will Sun Microsystems, Inc. be liable for any lost revenue
* or profits or other special, indirect and consequential damages, even if * or profits or other special, indirect and consequential damages, even if
* Sun has been advised of the possibility of such damages. * Sun has been advised of the possibility of such damages.
* *
* Sun Microsystems, Inc. * Sun Microsystems, Inc.
* 2550 Garcia Avenue * 2550 Garcia Avenue
* Mountain View, California 94043 * Mountain View, California 94043
@ -51,13 +51,13 @@ enum ypstat {
YP_VERS = -8, YP_VERS = -8,
}; };
typedef enum ypstat ypstat; typedef enum ypstat ypstat;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypstat(XDR *, ypstat*); extern "C" bool_t xdr_ypstat(XDR *, ypstat*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypstat(XDR *, ypstat*); extern bool_t xdr_ypstat(XDR *, ypstat*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypstat(); bool_t xdr_ypstat();
#endif /* Old Style C */ #endif /* Old Style C */
enum ypxfrstat { enum ypxfrstat {
@ -79,69 +79,69 @@ enum ypxfrstat {
YPXFR_REFUSED = -14, YPXFR_REFUSED = -14,
}; };
typedef enum ypxfrstat ypxfrstat; typedef enum ypxfrstat ypxfrstat;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypxfrstat(XDR *, ypxfrstat*); extern "C" bool_t xdr_ypxfrstat(XDR *, ypxfrstat*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypxfrstat(XDR *, ypxfrstat*); extern bool_t xdr_ypxfrstat(XDR *, ypxfrstat*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypxfrstat(); bool_t xdr_ypxfrstat();
#endif /* Old Style C */ #endif /* Old Style C */
typedef char *domainname; typedef char *domainname;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_domainname(XDR *, domainname*); extern "C" bool_t xdr_domainname(XDR *, domainname*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_domainname(XDR *, domainname*); extern bool_t xdr_domainname(XDR *, domainname*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_domainname(); bool_t xdr_domainname();
#endif /* Old Style C */ #endif /* Old Style C */
typedef char *mapname; typedef char *mapname;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_mapname(XDR *, mapname*); extern "C" bool_t xdr_mapname(XDR *, mapname*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_mapname(XDR *, mapname*); extern bool_t xdr_mapname(XDR *, mapname*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_mapname(); bool_t xdr_mapname();
#endif /* Old Style C */ #endif /* Old Style C */
typedef char *peername; typedef char *peername;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_peername(XDR *, peername*); extern "C" bool_t xdr_peername(XDR *, peername*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_peername(XDR *, peername*); extern bool_t xdr_peername(XDR *, peername*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_peername(); bool_t xdr_peername();
#endif /* Old Style C */ #endif /* Old Style C */
typedef struct { typedef struct {
u_int keydat_len; u_int keydat_len;
char *keydat_val; char *keydat_val;
} keydat; } keydat;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_keydat(XDR *, keydat*); extern "C" bool_t xdr_keydat(XDR *, keydat*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_keydat(XDR *, keydat*); extern bool_t xdr_keydat(XDR *, keydat*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_keydat(); bool_t xdr_keydat();
#endif /* Old Style C */ #endif /* Old Style C */
typedef struct { typedef struct {
u_int valdat_len; u_int valdat_len;
char *valdat_val; char *valdat_val;
} valdat; } valdat;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_valdat(XDR *, valdat*); extern "C" bool_t xdr_valdat(XDR *, valdat*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_valdat(XDR *, valdat*); extern bool_t xdr_valdat(XDR *, valdat*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_valdat(); bool_t xdr_valdat();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypmap_parms { struct ypmap_parms {
@ -151,13 +151,13 @@ struct ypmap_parms {
peername peer; peername peer;
}; };
typedef struct ypmap_parms ypmap_parms; typedef struct ypmap_parms ypmap_parms;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypmap_parms(XDR *, ypmap_parms*); extern "C" bool_t xdr_ypmap_parms(XDR *, ypmap_parms*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypmap_parms(XDR *, ypmap_parms*); extern bool_t xdr_ypmap_parms(XDR *, ypmap_parms*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypmap_parms(); bool_t xdr_ypmap_parms();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypreq_key { struct ypreq_key {
@ -166,13 +166,13 @@ struct ypreq_key {
keydat key; keydat key;
}; };
typedef struct ypreq_key ypreq_key; typedef struct ypreq_key ypreq_key;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypreq_key(XDR *, ypreq_key*); extern "C" bool_t xdr_ypreq_key(XDR *, ypreq_key*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypreq_key(XDR *, ypreq_key*); extern bool_t xdr_ypreq_key(XDR *, ypreq_key*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypreq_key(); bool_t xdr_ypreq_key();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypreq_nokey { struct ypreq_nokey {
@ -180,13 +180,13 @@ struct ypreq_nokey {
mapname map; mapname map;
}; };
typedef struct ypreq_nokey ypreq_nokey; typedef struct ypreq_nokey ypreq_nokey;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypreq_nokey(XDR *, ypreq_nokey*); extern "C" bool_t xdr_ypreq_nokey(XDR *, ypreq_nokey*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypreq_nokey(XDR *, ypreq_nokey*); extern bool_t xdr_ypreq_nokey(XDR *, ypreq_nokey*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypreq_nokey(); bool_t xdr_ypreq_nokey();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypreq_xfr { struct ypreq_xfr {
@ -196,13 +196,13 @@ struct ypreq_xfr {
u_int port; u_int port;
}; };
typedef struct ypreq_xfr ypreq_xfr; typedef struct ypreq_xfr ypreq_xfr;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypreq_xfr(XDR *, ypreq_xfr*); extern "C" bool_t xdr_ypreq_xfr(XDR *, ypreq_xfr*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypreq_xfr(XDR *, ypreq_xfr*); extern bool_t xdr_ypreq_xfr(XDR *, ypreq_xfr*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypreq_xfr(); bool_t xdr_ypreq_xfr();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypresp_val { struct ypresp_val {
@ -210,28 +210,28 @@ struct ypresp_val {
valdat val; valdat val;
}; };
typedef struct ypresp_val ypresp_val; typedef struct ypresp_val ypresp_val;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypresp_val(XDR *, ypresp_val*); extern "C" bool_t xdr_ypresp_val(XDR *, ypresp_val*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypresp_val(XDR *, ypresp_val*); extern bool_t xdr_ypresp_val(XDR *, ypresp_val*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypresp_val(); bool_t xdr_ypresp_val();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypresp_key_val { struct ypresp_key_val {
ypstat stat; ypstat stat;
valdat val;
keydat key; keydat key;
valdat val;
}; };
typedef struct ypresp_key_val ypresp_key_val; typedef struct ypresp_key_val ypresp_key_val;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypresp_key_val(XDR *, ypresp_key_val*); extern "C" bool_t xdr_ypresp_key_val(XDR *, ypresp_key_val*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypresp_key_val(XDR *, ypresp_key_val*); extern bool_t xdr_ypresp_key_val(XDR *, ypresp_key_val*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypresp_key_val(); bool_t xdr_ypresp_key_val();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypresp_master { struct ypresp_master {
@ -239,13 +239,13 @@ struct ypresp_master {
peername peer; peername peer;
}; };
typedef struct ypresp_master ypresp_master; typedef struct ypresp_master ypresp_master;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypresp_master(XDR *, ypresp_master*); extern "C" bool_t xdr_ypresp_master(XDR *, ypresp_master*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypresp_master(XDR *, ypresp_master*); extern bool_t xdr_ypresp_master(XDR *, ypresp_master*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypresp_master(); bool_t xdr_ypresp_master();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypresp_order { struct ypresp_order {
@ -253,13 +253,13 @@ struct ypresp_order {
u_int ordernum; u_int ordernum;
}; };
typedef struct ypresp_order ypresp_order; typedef struct ypresp_order ypresp_order;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypresp_order(XDR *, ypresp_order*); extern "C" bool_t xdr_ypresp_order(XDR *, ypresp_order*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypresp_order(XDR *, ypresp_order*); extern bool_t xdr_ypresp_order(XDR *, ypresp_order*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypresp_order(); bool_t xdr_ypresp_order();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypresp_all { struct ypresp_all {
@ -269,13 +269,13 @@ struct ypresp_all {
} ypresp_all_u; } ypresp_all_u;
}; };
typedef struct ypresp_all ypresp_all; typedef struct ypresp_all ypresp_all;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypresp_all(XDR *, ypresp_all*); extern "C" bool_t xdr_ypresp_all(XDR *, ypresp_all*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypresp_all(XDR *, ypresp_all*); extern bool_t xdr_ypresp_all(XDR *, ypresp_all*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypresp_all(); bool_t xdr_ypresp_all();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypresp_xfr { struct ypresp_xfr {
@ -283,13 +283,13 @@ struct ypresp_xfr {
ypxfrstat xfrstat; ypxfrstat xfrstat;
}; };
typedef struct ypresp_xfr ypresp_xfr; typedef struct ypresp_xfr ypresp_xfr;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypresp_xfr(XDR *, ypresp_xfr*); extern "C" bool_t xdr_ypresp_xfr(XDR *, ypresp_xfr*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypresp_xfr(XDR *, ypresp_xfr*); extern bool_t xdr_ypresp_xfr(XDR *, ypresp_xfr*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypresp_xfr(); bool_t xdr_ypresp_xfr();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypmaplist { struct ypmaplist {
@ -297,13 +297,13 @@ struct ypmaplist {
struct ypmaplist *next; struct ypmaplist *next;
}; };
typedef struct ypmaplist ypmaplist; typedef struct ypmaplist ypmaplist;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypmaplist(XDR *, ypmaplist*); extern "C" bool_t xdr_ypmaplist(XDR *, ypmaplist*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypmaplist(XDR *, ypmaplist*); extern bool_t xdr_ypmaplist(XDR *, ypmaplist*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypmaplist(); bool_t xdr_ypmaplist();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypresp_maplist { struct ypresp_maplist {
@ -311,13 +311,13 @@ struct ypresp_maplist {
ypmaplist *maps; ypmaplist *maps;
}; };
typedef struct ypresp_maplist ypresp_maplist; typedef struct ypresp_maplist ypresp_maplist;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypresp_maplist(XDR *, ypresp_maplist*); extern "C" bool_t xdr_ypresp_maplist(XDR *, ypresp_maplist*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypresp_maplist(XDR *, ypresp_maplist*); extern bool_t xdr_ypresp_maplist(XDR *, ypresp_maplist*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypresp_maplist(); bool_t xdr_ypresp_maplist();
#endif /* Old Style C */ #endif /* Old Style C */
enum yppush_status { enum yppush_status {
@ -339,13 +339,13 @@ enum yppush_status {
YPPUSH_REFUSED = -14, YPPUSH_REFUSED = -14,
}; };
typedef enum yppush_status yppush_status; typedef enum yppush_status yppush_status;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_yppush_status(XDR *, yppush_status*); extern "C" bool_t xdr_yppush_status(XDR *, yppush_status*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_yppush_status(XDR *, yppush_status*); extern bool_t xdr_yppush_status(XDR *, yppush_status*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_yppush_status(); bool_t xdr_yppush_status();
#endif /* Old Style C */ #endif /* Old Style C */
struct yppushresp_xfr { struct yppushresp_xfr {
@ -353,13 +353,13 @@ struct yppushresp_xfr {
yppush_status status; yppush_status status;
}; };
typedef struct yppushresp_xfr yppushresp_xfr; typedef struct yppushresp_xfr yppushresp_xfr;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_yppushresp_xfr(XDR *, yppushresp_xfr*); extern "C" bool_t xdr_yppushresp_xfr(XDR *, yppushresp_xfr*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_yppushresp_xfr(XDR *, yppushresp_xfr*); extern bool_t xdr_yppushresp_xfr(XDR *, yppushresp_xfr*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_yppushresp_xfr(); bool_t xdr_yppushresp_xfr();
#endif /* Old Style C */ #endif /* Old Style C */
enum ypbind_resptype { enum ypbind_resptype {
@ -367,13 +367,13 @@ enum ypbind_resptype {
YPBIND_FAIL_VAL = 2, YPBIND_FAIL_VAL = 2,
}; };
typedef enum ypbind_resptype ypbind_resptype; typedef enum ypbind_resptype ypbind_resptype;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypbind_resptype(XDR *, ypbind_resptype*); extern "C" bool_t xdr_ypbind_resptype(XDR *, ypbind_resptype*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypbind_resptype(XDR *, ypbind_resptype*); extern bool_t xdr_ypbind_resptype(XDR *, ypbind_resptype*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypbind_resptype(); bool_t xdr_ypbind_resptype();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypbind_binding { struct ypbind_binding {
@ -381,13 +381,13 @@ struct ypbind_binding {
char ypbind_binding_port[2]; char ypbind_binding_port[2];
}; };
typedef struct ypbind_binding ypbind_binding; typedef struct ypbind_binding ypbind_binding;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypbind_binding(XDR *, ypbind_binding*); extern "C" bool_t xdr_ypbind_binding(XDR *, ypbind_binding*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypbind_binding(XDR *, ypbind_binding*); extern bool_t xdr_ypbind_binding(XDR *, ypbind_binding*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypbind_binding(); bool_t xdr_ypbind_binding();
#endif /* Old Style C */ #endif /* Old Style C */
struct ypbind_resp { struct ypbind_resp {
@ -398,13 +398,13 @@ struct ypbind_resp {
} ypbind_resp_u; } ypbind_resp_u;
}; };
typedef struct ypbind_resp ypbind_resp; typedef struct ypbind_resp ypbind_resp;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypbind_resp(XDR *, ypbind_resp*); extern "C" bool_t xdr_ypbind_resp(XDR *, ypbind_resp*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypbind_resp(XDR *, ypbind_resp*); extern bool_t xdr_ypbind_resp(XDR *, ypbind_resp*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypbind_resp(); bool_t xdr_ypbind_resp();
#endif /* Old Style C */ #endif /* Old Style C */
#define YPBIND_ERR_ERR 1 #define YPBIND_ERR_ERR 1
#define YPBIND_ERR_NOSERV 2 #define YPBIND_ERR_NOSERV 2
@ -416,13 +416,13 @@ struct ypbind_setdom {
u_int ypsetdom_vers; u_int ypsetdom_vers;
}; };
typedef struct ypbind_setdom ypbind_setdom; typedef struct ypbind_setdom ypbind_setdom;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" bool_t xdr_ypbind_setdom(XDR *, ypbind_setdom*); extern "C" bool_t xdr_ypbind_setdom(XDR *, ypbind_setdom*);
#elif __STDC__ #elif __STDC__
extern bool_t xdr_ypbind_setdom(XDR *, ypbind_setdom*); extern bool_t xdr_ypbind_setdom(XDR *, ypbind_setdom*);
#else /* Old Style C */ #else /* Old Style C */
bool_t xdr_ypbind_setdom(); bool_t xdr_ypbind_setdom();
#endif /* Old Style C */ #endif /* Old Style C */
#define YPPROG ((u_long)100004) #define YPPROG ((u_long)100004)
@ -504,7 +504,7 @@ extern ypresp_order * ypproc_order_2_svc(ypreq_nokey *, struct svc_req *);
extern ypresp_maplist * ypproc_maplist_2(domainname *, CLIENT *); extern ypresp_maplist * ypproc_maplist_2(domainname *, CLIENT *);
extern ypresp_maplist * ypproc_maplist_2_svc(domainname *, struct svc_req *); extern ypresp_maplist * ypproc_maplist_2_svc(domainname *, struct svc_req *);
#else /* Old Style C */ #else /* Old Style C */
#define YPPROC_NULL ((u_long)0) #define YPPROC_NULL ((u_long)0)
extern void * ypproc_null_2(); extern void * ypproc_null_2();
extern void * ypproc_null_2_svc(); extern void * ypproc_null_2_svc();
@ -541,7 +541,7 @@ extern ypresp_order * ypproc_order_2_svc();
#define YPPROC_MAPLIST ((u_long)11) #define YPPROC_MAPLIST ((u_long)11)
extern ypresp_maplist * ypproc_maplist_2(); extern ypresp_maplist * ypproc_maplist_2();
extern ypresp_maplist * ypproc_maplist_2_svc(); extern ypresp_maplist * ypproc_maplist_2_svc();
#endif /* Old Style C */ #endif /* Old Style C */
#define YPPUSH_XFRRESPPROG ((u_long)0x40000000) #define YPPUSH_XFRRESPPROG ((u_long)0x40000000)
#define YPPUSH_XFRRESPVERS ((u_long)1) #define YPPUSH_XFRRESPVERS ((u_long)1)
@ -562,14 +562,14 @@ extern void * yppushproc_null_1_svc(void *, struct svc_req *);
extern void * yppushproc_xfrresp_1(yppushresp_xfr *, CLIENT *); extern void * yppushproc_xfrresp_1(yppushresp_xfr *, CLIENT *);
extern void * yppushproc_xfrresp_1_svc(yppushresp_xfr *, struct svc_req *); extern void * yppushproc_xfrresp_1_svc(yppushresp_xfr *, struct svc_req *);
#else /* Old Style C */ #else /* Old Style C */
#define YPPUSHPROC_NULL ((u_long)0) #define YPPUSHPROC_NULL ((u_long)0)
extern void * yppushproc_null_1(); extern void * yppushproc_null_1();
extern void * yppushproc_null_1_svc(); extern void * yppushproc_null_1_svc();
#define YPPUSHPROC_XFRRESP ((u_long)1) #define YPPUSHPROC_XFRRESP ((u_long)1)
extern void * yppushproc_xfrresp_1(); extern void * yppushproc_xfrresp_1();
extern void * yppushproc_xfrresp_1_svc(); extern void * yppushproc_xfrresp_1_svc();
#endif /* Old Style C */ #endif /* Old Style C */
#define YPBINDPROG ((u_long)100007) #define YPBINDPROG ((u_long)100007)
#define YPBINDVERS ((u_long)2) #define YPBINDVERS ((u_long)2)
@ -596,7 +596,7 @@ extern ypbind_resp * ypbindproc_domain_2_svc(domainname *, struct svc_req *);
extern void * ypbindproc_setdom_2(ypbind_setdom *, CLIENT *); extern void * ypbindproc_setdom_2(ypbind_setdom *, CLIENT *);
extern void * ypbindproc_setdom_2_svc(ypbind_setdom *, struct svc_req *); extern void * ypbindproc_setdom_2_svc(ypbind_setdom *, struct svc_req *);
#else /* Old Style C */ #else /* Old Style C */
#define YPBINDPROC_NULL ((u_long)0) #define YPBINDPROC_NULL ((u_long)0)
extern void * ypbindproc_null_2(); extern void * ypbindproc_null_2();
extern void * ypbindproc_null_2_svc(); extern void * ypbindproc_null_2_svc();
@ -606,6 +606,6 @@ extern ypbind_resp * ypbindproc_domain_2_svc();
#define YPBINDPROC_SETDOM ((u_long)2) #define YPBINDPROC_SETDOM ((u_long)2)
extern void * ypbindproc_setdom_2(); extern void * ypbindproc_setdom_2();
extern void * ypbindproc_setdom_2_svc(); extern void * ypbindproc_setdom_2_svc();
#endif /* Old Style C */ #endif /* Old Style C */
#endif /* !__RPCSVC_YP_H__ */ #endif /* !__RPCSVC_YP_H__ */

View File

@ -7,23 +7,23 @@
* may copy or modify Sun RPC without charge, but are not authorized * may copy or modify Sun RPC without charge, but are not authorized
* to license or distribute it to anyone else except as part of a product or * to license or distribute it to anyone else except as part of a product or
* program developed by the user. * program developed by the user.
* *
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
* *
* Sun RPC is provided with no support and without any obligation on the * Sun RPC is provided with no support and without any obligation on the
* part of Sun Microsystems, Inc. to assist in its use, correction, * part of Sun Microsystems, Inc. to assist in its use, correction,
* modification or enhancement. * modification or enhancement.
* *
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
* OR ANY PART THEREOF. * OR ANY PART THEREOF.
* *
* In no event will Sun Microsystems, Inc. be liable for any lost revenue * In no event will Sun Microsystems, Inc. be liable for any lost revenue
* or profits or other special, indirect and consequential damages, even if * or profits or other special, indirect and consequential damages, even if
* Sun has been advised of the possibility of such damages. * Sun has been advised of the possibility of such damages.
* *
* Sun Microsystems, Inc. * Sun Microsystems, Inc.
* 2550 Garcia Avenue * 2550 Garcia Avenue
* Mountain View, California 94043 * Mountain View, California 94043
@ -82,7 +82,7 @@ typedef opaque valdat<YPMAXRECORD>;
struct ypmap_parms { struct ypmap_parms {
domainname domain; domainname domain;
mapname map; mapname map;
unsigned int ordernum; unsigned int ordernum;
peername peer; peername peer;
@ -95,10 +95,10 @@ struct ypreq_key {
}; };
struct ypreq_nokey { struct ypreq_nokey {
domainname domain; domainname domain;
mapname map; mapname map;
}; };
struct ypreq_xfr { struct ypreq_xfr {
ypmap_parms map_parms; ypmap_parms map_parms;
unsigned int transid; unsigned int transid;
@ -114,18 +114,13 @@ struct ypresp_val {
struct ypresp_key_val { struct ypresp_key_val {
ypstat stat; ypstat stat;
#ifdef STUPID_SUN_BUG
keydat key; keydat key;
valdat val; valdat val;
#else
valdat val;
keydat key;
#endif
}; };
struct ypresp_master { struct ypresp_master {
ypstat stat; ypstat stat;
peername peer; peername peer;
}; };
@ -184,31 +179,31 @@ struct yppushresp_xfr {
* Response structure and overall result status codes. Success and failure * Response structure and overall result status codes. Success and failure
* represent two separate response message types. * represent two separate response message types.
*/ */
enum ypbind_resptype { enum ypbind_resptype {
YPBIND_SUCC_VAL = 1, YPBIND_SUCC_VAL = 1,
YPBIND_FAIL_VAL = 2 YPBIND_FAIL_VAL = 2
}; };
struct ypbind_binding { struct ypbind_binding {
opaque ypbind_binding_addr[4]; /* In network order */ opaque ypbind_binding_addr[4]; /* In network order */
opaque ypbind_binding_port[2]; /* In network order */ opaque ypbind_binding_port[2]; /* In network order */
}; };
union ypbind_resp switch (ypbind_resptype ypbind_status) { union ypbind_resp switch (ypbind_resptype ypbind_status) {
case YPBIND_FAIL_VAL: case YPBIND_FAIL_VAL:
unsigned ypbind_error; unsigned ypbind_error;
case YPBIND_SUCC_VAL: case YPBIND_SUCC_VAL:
ypbind_binding ypbind_bindinfo; ypbind_binding ypbind_bindinfo;
}; };
/* Detailed failure reason codes for response field ypbind_error*/ /* Detailed failure reason codes for response field ypbind_error*/
const YPBIND_ERR_ERR = 1; /* Internal error */ const YPBIND_ERR_ERR = 1; /* Internal error */
const YPBIND_ERR_NOSERV = 2; /* No bound server for passed domain */ const YPBIND_ERR_NOSERV = 2; /* No bound server for passed domain */
const YPBIND_ERR_RESC = 3; /* System resource allocation failure */ const YPBIND_ERR_RESC = 3; /* System resource allocation failure */
/* /*
* Request data structure for ypbind "Set domain" procedure. * Request data structure for ypbind "Set domain" procedure.
*/ */
@ -224,11 +219,11 @@ struct ypbind_setdom {
*/ */
program YPPROG { program YPPROG {
version YPVERS { version YPVERS {
void void
YPPROC_NULL(void) = 0; YPPROC_NULL(void) = 0;
bool bool
YPPROC_DOMAIN(domainname) = 1; YPPROC_DOMAIN(domainname) = 1;
bool bool
YPPROC_DOMAIN_NONACK(domainname) = 2; YPPROC_DOMAIN_NONACK(domainname) = 2;
@ -236,10 +231,10 @@ program YPPROG {
ypresp_val ypresp_val
YPPROC_MATCH(ypreq_key) = 3; YPPROC_MATCH(ypreq_key) = 3;
ypresp_key_val ypresp_key_val
YPPROC_FIRST(ypreq_key) = 4; YPPROC_FIRST(ypreq_key) = 4;
ypresp_key_val ypresp_key_val
YPPROC_NEXT(ypreq_key) = 5; YPPROC_NEXT(ypreq_key) = 5;
ypresp_xfr ypresp_xfr
@ -257,7 +252,7 @@ program YPPROG {
ypresp_order ypresp_order
YPPROC_ORDER(ypreq_nokey) = 10; YPPROC_ORDER(ypreq_nokey) = 10;
ypresp_maplist ypresp_maplist
YPPROC_MAPLIST(domainname) = 11; YPPROC_MAPLIST(domainname) = 11;
} = 2; } = 2;
} = 100004; } = 100004;
@ -272,7 +267,7 @@ program YPPUSH_XFRRESPPROG {
YPPUSHPROC_NULL(void) = 0; YPPUSHPROC_NULL(void) = 0;
#ifdef STUPID_SUN_BUG #ifdef STUPID_SUN_BUG
yppushresp_xfr yppushresp_xfr
YPPUSHPROC_XFRRESP(void) = 1; YPPUSHPROC_XFRRESP(void) = 1;
#else #else
void void
@ -288,7 +283,7 @@ program YPBINDPROG {
version YPBINDVERS { version YPBINDVERS {
void void
YPBINDPROC_NULL(void) = 0; YPBINDPROC_NULL(void) = 0;
ypbind_resp ypbind_resp
YPBINDPROC_DOMAIN(domainname) = 1; YPBINDPROC_DOMAIN(domainname) = 1;
@ -296,5 +291,3 @@ program YPBINDPROG {
YPBINDPROC_SETDOM(ypbind_setdom) = 2; YPBINDPROC_SETDOM(ypbind_setdom) = 2;
} = 2; } = 2;
} = 100007; } = 100007;

430
po/es.po

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU libc 1.98\n" "Project-Id-Version: GNU libc 1.98\n"
"POT-Creation-Date: 1996-12-03 13:50+0100\n" "POT-Creation-Date: 1996-12-03 13:50+0100\n"
"PO-Revision-Date: 1996-12-12 22:46 -0500\n" "PO-Revision-Date: 1997-01-24 20:13 -0500\n"
"Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n" "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
"Language-Team: French <fr@li.org>\n" "Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -881,11 +881,11 @@ msgstr "Connexion par liens par noeuds multiples de relais tent
#: nis/ypclnt.c:659 #: nis/ypclnt.c:659
msgid "NIS client/server version mismatch - can't supply service" msgid "NIS client/server version mismatch - can't supply service"
msgstr "Non concrodance de la version client/serveur NIS - ne peut fournir le service." msgstr "Non concordance de la version client/serveur NIS - ne peut fournir le service."
#: nis/ypclnt.c:657 #: nis/ypclnt.c:657
msgid "NIS map data base is bad" msgid "NIS map data base is bad"
msgstr "La table de la base de données NIS est corrumpue." msgstr "La table de la base de données NIS est corrompue."
#: stdio-common/../sysdeps/gnu/errlist.c:746 #: stdio-common/../sysdeps/gnu/errlist.c:746
msgid "Name not unique on network" msgid "Name not unique on network"

View File

@ -4,7 +4,7 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: libc 1.94\n" "Project-Id-Version: libc 2.0\n"
"POT-Creation-Date: 1996-09-08 3:45\n" "POT-Creation-Date: 1996-09-08 3:45\n"
"PO-Revision-Date: 1996-09-17 14:30 MET DST\n" "PO-Revision-Date: 1996-09-17 14:30 MET DST\n"
"Last-Translator: Erick Branderhorst <branderh@debian.org>\n" "Last-Translator: Erick Branderhorst <branderh@debian.org>\n"
@ -25,23 +25,23 @@ msgstr " %s [-s udp|tcp]* [-o uitvoerbestand] [invoerbestand]\n"
#: sunrpc/rpcinfo.c:612 #: sunrpc/rpcinfo.c:612
msgid " rpcinfo -b prognum versnum\n" msgid " rpcinfo -b prognum versnum\n"
msgstr "" msgstr " rpcinfo -b programanummer versienummer\n"
#: sunrpc/rpcinfo.c:613 #: sunrpc/rpcinfo.c:613
msgid " rpcinfo -d prognum versnum\n" msgid " rpcinfo -d prognum versnum\n"
msgstr "" msgstr " rpcinfo -d programanummer versienummer\n"
#: sunrpc/rpcinfo.c:611 #: sunrpc/rpcinfo.c:611
msgid " rpcinfo -p [ host ]\n" msgid " rpcinfo -p [ host ]\n"
msgstr "" msgstr " rpcinfo -p [ host ]\n"
#: sunrpc/rpcinfo.c:610 #: sunrpc/rpcinfo.c:610
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n" msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr "" msgstr " rpcinfo [ -n poortnummer ] -t host programanummer [ versienummer ]\n"
#: sunrpc/rpcinfo.c:517 #: sunrpc/rpcinfo.c:517
msgid " program vers proto port\n" msgid " program vers proto port\n"
msgstr "" msgstr " program vers proto port\n"
#: time/zic.c:425 #: time/zic.c:425
#, c-format #, c-format
@ -967,7 +967,7 @@ msgstr "Numeriek resultaat is buiten domein"
#. TRANS properly on the GNU system, making this error code impossible.) #. TRANS properly on the GNU system, making this error code impossible.)
#: stdio-common/../sysdeps/gnu/errlist.c:502 #: stdio-common/../sysdeps/gnu/errlist.c:502
msgid "Object is remote" msgid "Object is remote"
msgstr "" msgstr "Object is niet lokaal"
#: time/zic.c:1940 #: time/zic.c:1940
msgid "Odd number of quotation marks" msgid "Odd number of quotation marks"
@ -1306,7 +1306,7 @@ msgstr "Gestopt (tty uitvoer)"
#: stdio-common/../sysdeps/gnu/errlist.c:778 #: stdio-common/../sysdeps/gnu/errlist.c:778
msgid "Streams pipe error" msgid "Streams pipe error"
msgstr "" msgstr "Stromen pijp fout"
#: stdio-common/../sysdeps/gnu/errlist.c:782 #: stdio-common/../sysdeps/gnu/errlist.c:782
msgid "Structure needs cleaning" msgid "Structure needs cleaning"
@ -1652,7 +1652,7 @@ msgstr "verwacht `from' na eerste argument (??)to `collating-element'"
#: locale/programs/ld-collate.c:1108 #: locale/programs/ld-collate.c:1108
msgid "" msgid ""
"`from' string in collation element declaration contains unknown character" "`from' string in collation element declaration contains unknown character"
msgstr "" msgstr "`from' string in vergelijkende element declaratie bevat onbekend karakter"
#: locale/programs/charmap.c:267 #: locale/programs/charmap.c:267
#, c-format #, c-format
@ -1734,7 +1734,7 @@ msgstr "kan niet invoegen in resultaat tabel"
#: locale/programs/ld-collate.c:1165 locale/programs/ld-collate.c:1207 #: locale/programs/ld-collate.c:1165 locale/programs/ld-collate.c:1207
#, c-format #, c-format
msgid "cannot insert new collating symbol definition: %s" msgid "cannot insert new collating symbol definition: %s"
msgstr "" msgstr "kan geen nieuw vergelijking symbool definitie invoegen: %s"
#: db/makedb.c:149 #: db/makedb.c:149
#, c-format #, c-format
@ -1763,7 +1763,7 @@ msgstr "kan uitvoerbestand `%s' niet openen voor categorie `%s'"
#: locale/programs/ld-collate.c:1359 #: locale/programs/ld-collate.c:1359
msgid "cannot process order specification" msgid "cannot process order specification"
msgstr "" msgstr "kan de gespecificeerde volgorde niet afhandelen"
#: locale/programs/locale.c:293 #: locale/programs/locale.c:293
#, c-format #, c-format
@ -2041,7 +2041,7 @@ msgstr "ongeldige codering gegeven"
#: locale/programs/linereader.c:546 #: locale/programs/linereader.c:546
msgid "illegal escape sequence at end of string" msgid "illegal escape sequence at end of string"
msgstr "" msgstr "ongeldige escape reeks aan het einde van string"
#: locale/programs/charset.c:101 #: locale/programs/charset.c:101
msgid "illegal names for character range" msgid "illegal names for character range"
@ -2128,15 +2128,15 @@ msgstr "ongeldige tijd van de dag"
#: time/zic.c:1319 #: time/zic.c:1319
msgid "invalid weekday name" msgid "invalid weekday name"
msgstr "ongeldig weekdagnaam" msgstr "ongeldig naam voor weekdag"
#: locale/programs/ld-collate.c:1411 #: locale/programs/ld-collate.c:1411
msgid "line after ellipsis must contain character definition" msgid "line after ellipsis must contain character definition"
msgstr "" msgstr "regel na ellipsis moet een karakter definitie bevatten"
#: locale/programs/ld-collate.c:1390 #: locale/programs/ld-collate.c:1390
msgid "line before ellipsis does not contain definition for character constant" msgid "line before ellipsis does not contain definition for character constant"
msgstr "" msgstr "regel voor ellipsis bevat geen konstante karakter definitie"
#: time/zic.c:795 #: time/zic.c:795
msgid "line too long" msgid "line too long"
@ -2157,7 +2157,7 @@ msgstr "geheugen clobbered voordat blok gereserveerd was (FIXME)"
#: malloc/mcheck.c:186 #: malloc/mcheck.c:186
msgid "memory clobbered past end of allocated block" msgid "memory clobbered past end of allocated block"
msgstr "" msgstr "geheugen `clobbered' na het einde van een gealloceerd blok"
#: locale/programs/ld-collate.c:167 locale/programs/ld-collate.c:173 #: locale/programs/ld-collate.c:167 locale/programs/ld-collate.c:173
#: locale/programs/ld-collate.c:177 locale/programs/ld-collate.c:1438 #: locale/programs/ld-collate.c:177 locale/programs/ld-collate.c:1438
@ -2186,7 +2186,7 @@ msgstr "geen array-of-pointer declaraties -- gebruik typedef"
#: locale/programs/ld-messages.c:95 locale/programs/ld-messages.c:116 #: locale/programs/ld-messages.c:95 locale/programs/ld-messages.c:116
#, c-format #, c-format
msgid "no correct regular expression for field `%s' in category `%s': %s" msgid "no correct regular expression for field `%s' in category `%s': %s"
msgstr "" msgstr "geen correct reguliere expressie voor veld `%s' in category `%s': %s"
#: time/zic.c:2060 #: time/zic.c:2060
msgid "no day in month matches rule" msgid "no day in month matches rule"
@ -2285,30 +2285,30 @@ msgstr "herhalend schrikkelseconde moment"
#: sunrpc/rpcinfo.c:659 #: sunrpc/rpcinfo.c:659
#, c-format #, c-format
msgid "rpcinfo: %s is unknown host\n" msgid "rpcinfo: %s is unknown host\n"
msgstr "" msgstr "rpcinfo: %s is onbekende host\n"
#: sunrpc/rpcinfo.c:626 #: sunrpc/rpcinfo.c:626
#, c-format #, c-format
msgid "rpcinfo: %s is unknown service\n" msgid "rpcinfo: %s is unknown service\n"
msgstr "" msgstr "rpcinfo: %s is onbekende service\n"
#: sunrpc/rpcinfo.c:600 #: sunrpc/rpcinfo.c:600
#, c-format #, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n" msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr "" msgstr "rpcinfo: Kan geen registratie verwijderen voor programma %s versie %s\n"
#: sunrpc/rpcinfo.c:576 #: sunrpc/rpcinfo.c:576
#, c-format #, c-format
msgid "rpcinfo: broadcast failed: %s\n" msgid "rpcinfo: broadcast failed: %s\n"
msgstr "" msgstr "rpcinfo: uitzending mislukt: %s\n"
#: sunrpc/rpcinfo.c:505 #: sunrpc/rpcinfo.c:505
msgid "rpcinfo: can't contact portmapper" msgid "rpcinfo: can't contact portmapper"
msgstr "" msgstr "rpcinfo: kan geen kontakt krijgen met portmapper"
#: sunrpc/rpcinfo.c:510 #: sunrpc/rpcinfo.c:510
msgid "rpcinfo: can't contact portmapper: " msgid "rpcinfo: can't contact portmapper: "
msgstr "" msgstr "rpcinfo: kan geen kontakt krijgen met portmapper: "
#: sunrpc/portmap.c:137 #: sunrpc/portmap.c:137
msgid "run_svc returned unexpectedly\n" msgid "run_svc returned unexpectedly\n"
@ -2320,11 +2320,11 @@ msgstr "zelfde regel naam in meerdere bestanden"
#: inet/rcmd.c:158 #: inet/rcmd.c:158
msgid "select: protocol failure in circuit setup\n" msgid "select: protocol failure in circuit setup\n"
msgstr "" msgstr "select: protocol mislukt in opstart circuit\n"
#: inet/rcmd.c:176 #: inet/rcmd.c:176
msgid "socket: protocol failure in circuit setup.\n" msgid "socket: protocol failure in circuit setup.\n"
msgstr "" msgstr "socket: protocol mislukt in opstart circuit.\n"
#: locale/programs/locfile.c:600 #: locale/programs/locfile.c:600
msgid "sorting order `forward' and `backward' are mutually exclusive" msgid "sorting order `forward' and `backward' are mutually exclusive"
@ -2349,15 +2349,15 @@ msgstr "beginjaar is groter dan eindejaar"
#: sunrpc/svc_tcp.c:199 sunrpc/svc_tcp.c:204 #: sunrpc/svc_tcp.c:199 sunrpc/svc_tcp.c:204
msgid "svc_tcp: makefd_xprt: out of memory\n" msgid "svc_tcp: makefd_xprt: out of memory\n"
msgstr "" msgstr "svc_tcp: makefd_xprt: geen geheugen meer\n"
#: sunrpc/svc_tcp.c:147 #: sunrpc/svc_tcp.c:147
msgid "svctcp_.c - cannot getsockname or listen" msgid "svctcp_.c - cannot getsockname or listen"
msgstr "" msgstr "svctcp_.c - `getsockname' of `listen' lukken niet"
#: sunrpc/svc_tcp.c:134 #: sunrpc/svc_tcp.c:134
msgid "svctcp_.c - udp socket creation problem" msgid "svctcp_.c - udp socket creation problem"
msgstr "" msgstr "svctcp_.c - udp socket aanmaak probleem"
#: sunrpc/svc_tcp.c:154 sunrpc/svc_tcp.c:161 #: sunrpc/svc_tcp.c:154 sunrpc/svc_tcp.c:161
msgid "svctcp_create: out of memory\n" msgid "svctcp_create: out of memory\n"
@ -2365,11 +2365,11 @@ msgstr "svctcp_create: geen geheugen meer beschikbaar\n"
#: sunrpc/svc_udp.c:119 #: sunrpc/svc_udp.c:119
msgid "svcudp_create - cannot getsockname" msgid "svcudp_create - cannot getsockname"
msgstr "" msgstr "svcudp_create - `getsockname' lukt niet"
#: sunrpc/svc_udp.c:107 #: sunrpc/svc_udp.c:107
msgid "svcudp_create: socket creation problem" msgid "svcudp_create: socket creation problem"
msgstr "" msgstr "svcudp_create: socket aanmaak probleem"
#: locale/programs/ld-collate.c:1190 #: locale/programs/ld-collate.c:1190
#, c-format #, c-format
@ -2377,6 +2377,8 @@ msgid ""
"symbol for multicharacter collating element `%.*s' duplicates element " "symbol for multicharacter collating element `%.*s' duplicates element "
"definition" "definition"
msgstr "" msgstr ""
"symbool voor multikarakter vergelijkings element `%.*s' dupliceerd\n"
"element definitie"
#: locale/programs/ld-collate.c:1063 #: locale/programs/ld-collate.c:1063
#, c-format #, c-format
@ -2384,6 +2386,8 @@ msgid ""
"symbol for multicharacter collating element `%.*s' duplicates other element " "symbol for multicharacter collating element `%.*s' duplicates other element "
"definition" "definition"
msgstr "" msgstr ""
"symbool voor multikarakter vergelijkings element `%.*s' dupliceert\n"
"andere element definities"
#: locale/programs/ld-collate.c:1199 #: locale/programs/ld-collate.c:1199
#, c-format #, c-format
@ -2391,6 +2395,8 @@ msgid ""
"symbol for multicharacter collating element `%.*s' duplicates other symbol " "symbol for multicharacter collating element `%.*s' duplicates other symbol "
"definition" "definition"
msgstr "" msgstr ""
"symbool voor multikarakter vergelijkings element `%.*s' dupliceert\n"
"andere symbool definitie"
#: locale/programs/ld-collate.c:1072 #: locale/programs/ld-collate.c:1072
#, c-format #, c-format
@ -2428,7 +2434,7 @@ msgstr "syntactische fout in karakter conversie definitie"
#: locale/programs/locfile.c:662 #: locale/programs/locfile.c:662
msgid "syntax error in collating order definition" msgid "syntax error in collating order definition"
msgstr "" msgstr "syntactische fout in collating volgorde definitie"
#: locale/programs/locfile.c:512 #: locale/programs/locfile.c:512
msgid "syntax error in collation definition" msgid "syntax error in collation definition"

View File

@ -121,6 +121,7 @@ defines := $(defines) -D_PATH_RPC='"$(sysconfdir)/rpc"'
# We use a stamp file to avoid unnessary recompilation each time rpcgen is # We use a stamp file to avoid unnessary recompilation each time rpcgen is
# relinked. # relinked.
$(objpfx)rpcsvc/%.h: $(objpfx)rpcsvc/%.stmp $(objpfx)rpcsvc/%.h: $(objpfx)rpcsvc/%.stmp
@:
$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)rpcgen $(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)rpcgen
$(make-target-directory) $(make-target-directory)
-@rm -f ${@:stmp=T} $@ -@rm -f ${@:stmp=T} $@
@ -132,6 +133,7 @@ $(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)rpcgen
# Generate the rpcsvc XDR functions with rpcgen. # Generate the rpcsvc XDR functions with rpcgen.
$(objpfx)x%.c: $(objpfx)x%.stmp $(objpfx)x%.c: $(objpfx)x%.stmp
@:
$(objpfx)x%.stmp: rpcsvc/%.x $(objpfx)rpcgen $(objpfx)x%.stmp: rpcsvc/%.x $(objpfx)rpcgen
-@rm -f ${@:stmp=T} $@ -@rm -f ${@:stmp=T} $@
$(rpcgen-cmd) -c $< -o ${@:stmp=T} $(rpcgen-cmd) -c $< -o ${@:stmp=T}

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996 Free Software Foundation, Inc. /* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
Contributed by Richard Henderson (rth@tamu.edu) Contributed by Richard Henderson (rth@tamu.edu)
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -321,9 +321,9 @@ $unaligned:
mskqh t2, t5, t2 # e0 : begin src byte validity mask mskqh t2, t5, t2 # e0 : begin src byte validity mask
cmpbge zero, t1, t7 # .. e1 : is there a zero? cmpbge zero, t1, t7 # .. e1 : is there a zero?
extql t2, a1, t2 # e0 : extql t2, a1, t2 # e0 :
or t7, t10, t6 # .. e1 : test for end-of-count too or t7, t10, t5 # .. e1 : test for end-of-count too
cmpbge zero, t2, t3 # e0 : cmpbge zero, t2, t3 # e0 :
cmoveq a2, t6, t7 # .. e1 : cmoveq a2, t5, t7 # .. e1 :
andnot t7, t3, t7 # e0 : andnot t7, t3, t7 # e0 :
beq t7, $u_head # .. e1 (zdb) beq t7, $u_head # .. e1 (zdb)

View File

@ -1,5 +1,5 @@
/* Inline math functions for i387. /* Inline math functions for i387.
Copyright (C) 1995, 1996 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by John C. Bowman <bowman@ipp-garching.mpg.de>, 1995. Contributed by John C. Bowman <bowman@ipp-garching.mpg.de>, 1995.
@ -373,13 +373,14 @@ ceil (double __x)
/* Optimized versions for some non-standardized functions. */ /* Optimized versions for some non-standardized functions. */
#ifdef __USE_MISC #ifdef __USE_MISC
__MATH_INLINE double __hypot (double __x, double __y); __MATH_INLINE double hypot (double __x, double __y);
__MATH_INLINE double __MATH_INLINE double
hypot (double __x, double __y) hypot (double __x, double __y)
{ {
return sqrt (__x * __x + __y * __y); return sqrt (__x * __x + __y * __y);
} }
__MATH_INLINE double log1p (double __x);
__MATH_INLINE double __MATH_INLINE double
log1p (double __x) log1p (double __x)
{ {
@ -397,7 +398,7 @@ log1p (double __x)
return __value; return __value;
} }
__MATH_INLINE double __asinh (double __x); __MATH_INLINE double asinh (double __x);
__MATH_INLINE double __MATH_INLINE double
asinh (double __x) asinh (double __x)
{ {
@ -407,14 +408,14 @@ asinh (double __x)
* __sgn1 (__x)); * __sgn1 (__x));
} }
__MATH_INLINE double __acosh (double __x); __MATH_INLINE double acosh (double __x);
__MATH_INLINE double __MATH_INLINE double
acosh (double __x) acosh (double __x)
{ {
return log (__x + sqrt (__x - 1.0) * sqrt (__x + 1.0)); return log (__x + sqrt (__x - 1.0) * sqrt (__x + 1.0));
} }
__MATH_INLINE double __atanh (double __x); __MATH_INLINE double atanh (double __x);
__MATH_INLINE double __MATH_INLINE double
atanh (double __x) atanh (double __x)
{ {
@ -423,7 +424,7 @@ atanh (double __x)
return -0.5 * __log1p (-(__y + __y) / (1.0 + __y)) * __sgn1 (__x); return -0.5 * __log1p (-(__y + __y) / (1.0 + __y)) * __sgn1 (__x);
} }
__MATH_INLINE double __coshm1 (double __x); __MATH_INLINE double coshm1 (double __x);
__MATH_INLINE double __MATH_INLINE double
coshm1 (double __x) coshm1 (double __x)
{ {
@ -432,14 +433,14 @@ coshm1 (double __x)
return 0.5 * (__exm1 / (__exm1 + 1.0)) * __exm1; return 0.5 * (__exm1 / (__exm1 + 1.0)) * __exm1;
} }
__MATH_INLINE double __acosh1p (double __x); __MATH_INLINE double acosh1p (double __x);
__MATH_INLINE double __MATH_INLINE double
acosh1p (double __x) acosh1p (double __x)
{ {
return __log1p (__x + sqrt (__x) * sqrt (__x + 2.0)); return __log1p (__x + sqrt (__x) * sqrt (__x + 2.0));
} }
__MATH_INLINE double __logb (double __x); __MATH_INLINE double logb (double __x);
__MATH_INLINE double __MATH_INLINE double
logb (double __x) logb (double __x)
{ {
@ -451,7 +452,7 @@ logb (double __x)
return __value; return __value;
} }
__MATH_INLINE double __drem (double __x, double __y); __MATH_INLINE double drem (double __x, double __y);
__MATH_INLINE double __MATH_INLINE double
drem (double __x, double __y) drem (double __x, double __y)
{ {
@ -466,7 +467,7 @@ drem (double __x, double __y)
return __value; return __value;
} }
__MATH_INLINE void __sincos (double __x, double *__sinx, double *__cosx); __MATH_INLINE void sincos (double __x, double *__sinx, double *__cosx);
__MATH_INLINE void __MATH_INLINE void
sincos (double __x, double *__sinx, double *__cosx) sincos (double __x, double *__sinx, double *__cosx)
{ {
@ -479,14 +480,14 @@ sincos (double __x, double *__sinx, double *__cosx)
*__cosx = __cosr; *__cosx = __cosr;
} }
__MATH_INLINE double __sgn (double __x); __MATH_INLINE double sgn (double __x);
__MATH_INLINE double __MATH_INLINE double
sgn (double __x) sgn (double __x)
{ {
return (__x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0)); return (__x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0));
} }
__MATH_INLINE double __pow2 (double __x); __MATH_INLINE double pow2 (double __x);
__MATH_INLINE double __MATH_INLINE double
pow2 (double __x) pow2 (double __x)
{ {

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1992, 1995, 1996 Free Software Foundation, Inc. /* Copyright (C) 1992, 1995, 1996, 1997 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
@ -32,8 +32,8 @@
struct stat struct stat
{ {
short int st_dev; /* Device. */ unsigned short int st_dev; /* Device. */
unsigned short __pad1; unsigned short int __pad1;
unsigned long int st_ino; /* File serial number. */ unsigned long int st_ino; /* File serial number. */
unsigned short int st_mode; /* File mode. */ unsigned short int st_mode; /* File mode. */
unsigned short int st_nlink; /* Link count. */ unsigned short int st_nlink; /* Link count. */

View File

@ -35,11 +35,7 @@ routines := offtime asctime clock ctime ctime_r difftime \
strptime strptime
others := ap zdump zic others := ap zdump zic
tests := test_time clocktest test-tz tests := test_time clocktest
# Before the test-tz test can be run we need the data to be installed.
tests: install-test-data
tzfiles := africa antarctica asia australasia europe northamerica \ tzfiles := africa antarctica asia australasia europe northamerica \
southamerica etcetera factory systemv backward \ southamerica etcetera factory systemv backward \
@ -56,6 +52,15 @@ all: # Make this the default target; it will be defined in Rules.
include ../Makeconfig # Get objpfx defined so we can use it below. include ../Makeconfig # Get objpfx defined so we can use it below.
ifeq (no,$(cross-compiling))
# We can run the test-tz test only if we can install the test data using
# zic. This isn't possible when cross-compiling.
tests += test-tz
# Before the test-tz test can be run we need the data to be installed.
tests: install-test-data
endif
# z.* use this variable. # z.* use this variable.
define nl define nl
@ -158,6 +163,7 @@ CFLAGS-zic.c = -Wno-strict-prototypes -DNOID $(tz-cflags)
CFLAGS-ialloc.c = -Wno-strict-prototypes -DNOID CFLAGS-ialloc.c = -Wno-strict-prototypes -DNOID
CFLAGS-scheck.c = -Wno-strict-prototypes -DNOID CFLAGS-scheck.c = -Wno-strict-prototypes -DNOID
CFLAGS-tzfile.c = $(tz-cflags) CFLAGS-tzfile.c = $(tz-cflags)
CFLAGS-tzset.c = $(tz-cflags)
# We have to make sure the data for testing the tz functions is available. # We have to make sure the data for testing the tz functions is available.
.PHONY: install-test-data .PHONY: install-test-data

View File

@ -112,17 +112,19 @@ __tzfile_read (const char *file)
else if (*file == '\0') else if (*file == '\0')
/* User specified the empty string; use UTC explicitly. */ /* User specified the empty string; use UTC explicitly. */
file = "Universal"; file = "Universal";
else
/* We must not allow to read an arbitrary file in a setuid program. {
So we fail for any file which is not in the directory hierachy /* We must not allow to read an arbitrary file in a setuid
starting at TZDIR. */ program. So we fail for any file which is not in the
if (__libc_enable_secure directory hierachy starting at TZDIR. */
&& ((*file == '/' if (__libc_enable_secure
&& memcmp (file, default_tzdir, sizeof (default_tzdir) - 1) != 0) && ((*file == '/'
|| strstr (file, "../") != NULL)) && memcmp (file, default_tzdir, sizeof (default_tzdir) - 1))
/* This test a certainly a bit too restrictive but it should catch all || strstr (file, "../") != NULL))
critical case. */ /* This test a certainly a bit too restrictive but it should
return; catch all critical case. */
return;
}
if (*file != '/') if (*file != '/')
{ {

View File

@ -94,6 +94,12 @@ __tzset_internal (always)
/* Examine the TZ environment variable. */ /* Examine the TZ environment variable. */
tz = getenv ("TZ"); tz = getenv ("TZ");
if (tz == NULL)
/* No user specification; use the site-wide default. */
tz = TZDEFAULT;
else if (*tz == '\0')
/* User specified the empty string; use UTC explicitly. */
tz = "Universal";
/* A leading colon means "implementation defined syntax". /* A leading colon means "implementation defined syntax".
We ignore the colon and always use the same algorithm: We ignore the colon and always use the same algorithm:
@ -108,10 +114,10 @@ __tzset_internal (always)
/* Free old storage. */ /* Free old storage. */
if (tz_rules[0].name != NULL && *tz_rules[0].name != '\0') if (tz_rules[0].name != NULL && *tz_rules[0].name != '\0')
free((void *) tz_rules[0].name); free ((void *) tz_rules[0].name);
if (tz_rules[1].name != NULL && *tz_rules[1].name != '\0' && if (tz_rules[1].name != NULL && *tz_rules[1].name != '\0' &&
tz_rules[1].name != tz_rules[0].name) tz_rules[1].name != tz_rules[0].name)
free((void *) tz_rules[1].name); free ((void *) tz_rules[1].name);
tz_rules[0].name = NULL; tz_rules[0].name = NULL;
tz_rules[1].name = NULL; tz_rules[1].name = NULL;
@ -163,7 +169,7 @@ __tzset_internal (always)
return; return;
} }
if (sscanf(tz, "%[^0-9,+-]", tz_rules[0].name) != 1 || if (sscanf (tz, "%[^0-9,+-]", tz_rules[0].name) != 1 ||
(l = strlen(tz_rules[0].name)) < 3) (l = strlen(tz_rules[0].name)) < 3)
{ {
free (tz_rules[0].name); free (tz_rules[0].name);
@ -180,7 +186,7 @@ __tzset_internal (always)
tz += l; tz += l;
/* Figure out the standard offset from UTC. */ /* Figure out the standard offset from UTC. */
if (*tz == '\0' || (*tz != '+' && *tz != '-' && !isdigit(*tz))) if (*tz == '\0' || (*tz != '+' && *tz != '-' && !isdigit (*tz)))
return; return;
if (*tz == '-' || *tz == '+') if (*tz == '-' || *tz == '+')