Skip to content

Commit

Permalink
Update.
Browse files Browse the repository at this point in the history
1997-10-31 23:16  Ulrich Drepper  <drepper@cygnus.com>

	* posix/glob.c (glob): If calling glob_in_dir for a list which was
	generated by a glob call disable GLOB_ERR since there might be
	non-directories in the list (PR203).

	* posix/glob.h (GLOB_ONLYDIR): New flag.
	(__GLOB_FLAGS): Add GLOB_ONLYDIR.
	* posix/glob.c: Define HAVE_D_TYPE if _DIRENT_HAVE_D_TYPE is defined.
	(glob): Add GLOB_ONLYDIR to recursive call to match dirname.
	(glob_in_dir) [HAVE_D_TYPE]: While reading directory entries test
	whether they are directories if GLOB_ONLYDIR flag is given.
	* manual/pattern.texi: Document GLOB_ONLYDIR.

	* misc/Makefile (tests): Add tst-fdset.

	* sysdeps/i386/bits/select.h: Rewrite asm macros to be cleaner.

	* sysdeps/unix/sysv/linux/Dist: Add xstatconv.c.
	* sysdeps/unix/sysv/linux/alpha/Dist: Likewise.

	* time/strptime.c (strptime_internal): In %y format, regard years
	>= 69 as of twentieth century, all other as of twenty-first.

	* time/tzset.c: Correct typo and little optimization.

1997-10-31 16:01  Ulrich Drepper  <drepper@cygnus.com>

	* inet/getnetgrent.c: Allocate buffer dynamically if needed.
	Suggested by Joe Keane <jgk@jgk.org>.

1997-10-31  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* io/ftw.h: Declare __ftw64_func_t and __nftw64_func_t only when
	__USE_FILE_OFFSET64 || __USE_LARGEFILE64 is true.

1997-10-30 05:47  Ulrich Drepper  <drepper@cygnus.com>

	* misc/mntent.c: Don't use statically allocated buffer.  Allocate
	it dynamically if necessary.
	* misc/efgcvt.c: Likewise.
	Patch by Joe Keane <jgk@jgk.org>.

	* misc/mntent.c: Allow freeing of allocated buffer in
	__libc_subfreeres.
	* misc/efgcvt.c: Likewise.

	* misc/efgcvt.c: Call correct reentrant functions.
	Use better values for MAXDIG.
	* misc/qefgcvt.c: Use better values for MAXDIG.

1997-10-29 18:48   Richard Henderson  <rth@cygnus.com>

	* sysdeps/unix/sysv/linux/Makefile [io]: Add xstatconv.
	* sysdeps/unix/sysv/linux/alpha/xstatconv.c: New file.  Convert
	between kernel_stat and the userland version indicated.
	* sysdeps/unix/sysv/linux/xstatconv.c: Likewise.
	* sysdeps/unix/sysv/linux/bits/stat.h: Define _STAT_VER_KERNEL.

	* sysdeps/unix/sysv/linux/fxstat.c: Defer to __xstat_conv.  Alias
	to __*xstat64 if requested.
	* sysdeps/unix/sysv/linux/lxstat.c: Likewise.
	* sysdeps/unix/sysv/linux/xstat.c: Likewise.

	* sysdeps/unix/sysv/linux/alpha/bits/stat.h: Add struct stat64.
	Increment _STAT_VER, and make struct stat the same.
	* sysdeps/unix/sysv/linux/alpha/bits/types.h: Add __ino64_t, and
	__off64_t.  Reorganize.
	* sysdeps/unix/sysv/linux/alpha/kernel_stat.h: Add struct glibc2_stat
	for backward compatibility.  Define XSTAT_IS_XSTAT64.

	* sysdeps/unix/sysv/linux/alpha/fxstat64.c: Empty file.
	* sysdeps/unix/sysv/linux/alpha/lxstat64.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/xstat64.c: Likewise.

	* sysdeps/unix/sysv/linux/alpha/bits/dirent.h (struct dirent): For
	consistency, force d_ino to use ino_t and supply padding.

1997-10-29 18:47  Richard Henderson  <rth@cygnus.com>

	* libio/iofopen.c: Correct weak_alias.
  • Loading branch information
Ulrich Drepper committed Oct 31, 1997
1 parent fe4635f commit 1cab544
Show file tree
Hide file tree
Showing 32 changed files with 711 additions and 259 deletions.
15 changes: 1 addition & 14 deletions BUGS
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
List of known bugs (certainly very incomplete)
----------------------------------------------

Time-stamp: <1997-10-25T06:32:15+0200 drepper>
Time-stamp: <1997-10-31T16:49:39+0100 drepper>

This following list contains those bugs which I'm aware of. Please
make sure that bugs you report are not listed here. If you can fix one
Expand Down Expand Up @@ -36,12 +36,6 @@ Severity: [ *] to [***]
flag was given.
[PR libc/72]

[ *] On Linux, the <linux/posix_types.h> is not clean enough to satisfy
the C++ namespace rules. Declaring `struct fd_set' also makes
`fd_set' available in the global namespace which conflicts with
the definition of `fd_set' in glibc.
[PR libc/79]

[ *] On Linux, there should be a way to prevent defining the symbol
NGROUPS_MAX in the <linux/limits.h> header file. In glibc it
is defined in <posix1_lim.h> which must not make the other
Expand Down Expand Up @@ -69,13 +63,6 @@ Severity: [ *] to [***]
with gcc. This seems to be a bug in gcc 2.7.2.x (egcs doesn't
have this bug).
[PR libc/245]

[ *] gethostbyname returns HOST_NOT_FOUND if the nameserver is
unreachable and nsswitch.conf contains a line with:
hosts: files dns
If the only method is dns gethostbyname return
TRY_AGAIN. gethostbyname should return in both cases TRY_AGAIN.
[PR libc/244]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ulrich Drepper
drepper@cygnus.com
82 changes: 82 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,85 @@
1997-10-31 23:16 Ulrich Drepper <drepper@cygnus.com>

* posix/glob.c (glob): If calling glob_in_dir for a list which was
generated by a glob call disable GLOB_ERR since there might be
non-directories in the list (PR203).

* posix/glob.h (GLOB_ONLYDIR): New flag.
(__GLOB_FLAGS): Add GLOB_ONLYDIR.
* posix/glob.c: Define HAVE_D_TYPE if _DIRENT_HAVE_D_TYPE is defined.
(glob): Add GLOB_ONLYDIR to recursive call to match dirname.
(glob_in_dir) [HAVE_D_TYPE]: While reading directory entries test
whether they are directories if GLOB_ONLYDIR flag is given.
* manual/pattern.texi: Document GLOB_ONLYDIR.

* misc/Makefile (tests): Add tst-fdset.

* sysdeps/i386/bits/select.h: Rewrite asm macros to be cleaner.

* sysdeps/unix/sysv/linux/Dist: Add xstatconv.c.
* sysdeps/unix/sysv/linux/alpha/Dist: Likewise.

* time/strptime.c (strptime_internal): In %y format, regard years
>= 69 as of twentieth century, all other as of twenty-first.

* time/tzset.c: Correct typo and little optimization.

1997-10-31 16:01 Ulrich Drepper <drepper@cygnus.com>

* inet/getnetgrent.c: Allocate buffer dynamically if needed.
Suggested by Joe Keane <jgk@jgk.org>.

1997-10-31 Andreas Jaeger <aj@arthur.rhein-neckar.de>

* io/ftw.h: Declare __ftw64_func_t and __nftw64_func_t only when
__USE_FILE_OFFSET64 || __USE_LARGEFILE64 is true.

1997-10-30 05:47 Ulrich Drepper <drepper@cygnus.com>

* misc/mntent.c: Don't use statically allocated buffer. Allocate
it dynamically if necessary.
* misc/efgcvt.c: Likewise.
Patch by Joe Keane <jgk@jgk.org>.

* misc/mntent.c: Allow freeing of allocated buffer in
__libc_subfreeres.
* misc/efgcvt.c: Likewise.

* misc/efgcvt.c: Call correct reentrant functions.
Use better values for MAXDIG.
* misc/qefgcvt.c: Use better values for MAXDIG.

1997-10-29 18:48 Richard Henderson <rth@cygnus.com>

* sysdeps/unix/sysv/linux/Makefile [io]: Add xstatconv.
* sysdeps/unix/sysv/linux/alpha/xstatconv.c: New file. Convert
between kernel_stat and the userland version indicated.
* sysdeps/unix/sysv/linux/xstatconv.c: Likewise.
* sysdeps/unix/sysv/linux/bits/stat.h: Define _STAT_VER_KERNEL.

* sysdeps/unix/sysv/linux/fxstat.c: Defer to __xstat_conv. Alias
to __*xstat64 if requested.
* sysdeps/unix/sysv/linux/lxstat.c: Likewise.
* sysdeps/unix/sysv/linux/xstat.c: Likewise.

* sysdeps/unix/sysv/linux/alpha/bits/stat.h: Add struct stat64.
Increment _STAT_VER, and make struct stat the same.
* sysdeps/unix/sysv/linux/alpha/bits/types.h: Add __ino64_t, and
__off64_t. Reorganize.
* sysdeps/unix/sysv/linux/alpha/kernel_stat.h: Add struct glibc2_stat
for backward compatibility. Define XSTAT_IS_XSTAT64.

* sysdeps/unix/sysv/linux/alpha/fxstat64.c: Empty file.
* sysdeps/unix/sysv/linux/alpha/lxstat64.c: Likewise.
* sysdeps/unix/sysv/linux/alpha/xstat64.c: Likewise.

* sysdeps/unix/sysv/linux/alpha/bits/dirent.h (struct dirent): For
consistency, force d_ino to use ino_t and supply padding.

1997-10-29 18:47 Richard Henderson <rth@cygnus.com>

* libio/iofopen.c: Correct weak_alias.

1997-10-29 Andreas Jaeger <aj@arthur.rhein-neckar.de>

* Makerules (install): Correct last patch.
Expand Down
21 changes: 21 additions & 0 deletions FAQ
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,10 @@ please let me know.

[Q28] ``After upgrading to a glibc 2.1 with symbol versioning I get
errors about undefined symbols. What went wrong?''

[Q29] ``I don't include any kernel header myself but still the
compiler complains about type redeclarations of types in the
kernel headers.''

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[Q1] ``What systems does the GNU C Library run on?''
Expand All @@ -116,6 +120,8 @@ in the future are:
m68k-*-linux-gnu Linux-2.0 on Motorola 680x0
alpha-*-linux-gnu Linux-2.0 on DEC Alpha
powerpc-*-linux-gnu Linux and MkLinux on PowerPC systems
sparc-*-linux-gnu Linux-2.0 on SPARC
sparc64-*-linux-gnu Linux-2.0 on UltraSPARC

Other Linux platforms are also on the way to be supported but I need
some success reports first.
Expand Down Expand Up @@ -755,6 +761,21 @@ the price you might have to pay once for quite a number of advantages
with symbol versioning.


~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[Q29] ``I don't include any kernel header myself but still the
compiler complains about type redeclarations of types in the
kernel headers.''

[A29] {UD} The kernel headers before Linux 2.1.61 don't work correctly with
glibc since they pollute the name space in a not acceptable way. Compiling
C programs is possible in most cases but especially C++ programs have (due
to the change of the name lookups for `struct's) problem. One prominent
example is `struct fd_set'.

There might be some more problems left but 2.1.61 fixes some of the known
ones. See the BUGS file for other known problems.


~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

Answers were given by:
Expand Down
41 changes: 38 additions & 3 deletions inet/getnetgrent.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997 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
Expand All @@ -16,13 +16,48 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */

#include <errno.h>
#include <netdb.h>
#include <stdlib.h>
#include <bits/libc-lock.h>

/* Statis buffer for return value. We allocate it when needed. */
static char *buffer;
/* All three strings should fit in a block of 1kB size. */
#define BUFSIZE 1024



static void
allocate (void)
{
buffer = (char *) malloc (BUFSIZE);
}

int
getnetgrent (char **hostp, char **userp, char **domainp)
{
static char buffer[1024]; /* All three strings shouldn't use 1kB. */
__libc_once_define (static, once);
__libc_once (once, allocate);

if (buffer == NULL)
{
__set_errno (ENOMEM);
return -1;
}

return __getnetgrent_r (hostp, userp, domainp, buffer, sizeof (buffer));
return __getnetgrent_r (hostp, userp, domainp, buffer, BUFSIZE);
}


/* Make sure the memory is freed if the programs ends while in
memory-debugging mode and something actually was allocated. */
static void
__attribute__ ((unused))
free_mem (void)
{
if (buffer != NULL)
free (buffer);
}

text_set_element (__libc_subfreeres, free_mem);
4 changes: 4 additions & 0 deletions io/ftw.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,16 +88,20 @@ struct FTW
/* Convenient types for callback functions. */
typedef int (*__ftw_func_t) __P ((__const char *__filename,
__const struct stat *__status, int __flag));
#if defined __USE_LARGEFILE64 || defined __USE_FILE_OFFSET64
typedef int (*__ftw64_func_t) __P ((__const char *__filename,
__const struct stat64 *__status,
int __flag));
#endif
#ifdef __USE_XOPEN_EXTENDED
typedef int (*__nftw_func_t) __P ((__const char *__filename,
__const struct stat *__status, int __flag,
struct FTW *__info));
# if defined __USE_LARGEFILE64 || defined __USE_FILE_OFFSET64
typedef int (*__nftw64_func_t) __P ((__const char *__filename,
__const struct stat64 *__status,
int __flag, struct FTW *__info));
# endif
#endif

/* Call a function on every element in a directory tree. */
Expand Down
4 changes: 2 additions & 2 deletions libio/iofopen.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ default_symbol_version (_IO_new_fopen, _IO_fopen, GLIBC_2.1);
default_symbol_version (__new_fopen, fopen, GLIBC_2.1);
#else
# ifdef weak_alias
weak_symbol (_IO_new_fopen, _IO_fopen)
weak_symbol (_IO_new_fopen, fopen)
weak_alias (_IO_new_fopen, _IO_fopen)
weak_alias (_IO_new_fopen, fopen)
# endif
#endif
15 changes: 15 additions & 0 deletions manual/pattern.texi
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,21 @@ glob ("~homer/bin/*", GLOB_TILDE, NULL, &result)
@end smallexample

This functionality is equivalent to what is available in C-shells.

@comment glob.h
@comment GNU
@item GLOB_ONLYDIR
If this flag is used the globbing function takes this as a
@strong{hint} that the caller is only interested in directories
matching the pattern. If the information about the type of the file
is easily available non-directories will be rejected but no extra
work will be done to determine the information for each file. I.e.,
the caller must still be able to filter directories out.

This functionality is only available witht eh GNU @code{glob}
implementation. It is mainly used internally to increase the
performance but might be useful for a user as well and therefore is
documented here.
@end table

Calling @code{glob} will in most cases allocate resources which are used
Expand Down
2 changes: 1 addition & 1 deletion misc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ install-lib := libbsd-compat.a libg.a
non-lib.a := libbsd-compat.a
gpl2lgpl := error.c error.h

tests := tst-dirname tst-tsearch
tests := tst-dirname tst-tsearch tst-fdset

include ../Rules

Expand Down
75 changes: 65 additions & 10 deletions misc/efgcvt.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,40 +20,80 @@
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
#include <bits/libc-lock.h>

#ifndef FLOAT_TYPE
#define FLOAT_TYPE double
#define FUNC_PREFIX
#define FLOAT_FMT_FLAG
#define MAXDIG (DBL_DIG + DBL_MAX_10_EXP)
# define FLOAT_TYPE double
# define FUNC_PREFIX
# define FLOAT_FMT_FLAG
/* Actually we have to write (DBL_DIG + log10 (DBL_MAX_10_EXP)) but we
don't have log10 available in the preprocessor. */
# define MAXDIG (DBL_DIG + 3)
#endif

#define APPEND(a, b) APPEND2 (a, b)
#define APPEND2(a, b) a##b


#define FCVT_BUFFER APPEND (FUNC_PREFIX, fcvt_buffer)
#define ECVT_BUFFER APPEND (FUNC_PREFIX, ecvt_buffer)


static char *FCVT_BUFFER;
static char *ECVT_BUFFER;


static void
APPEND (FUNC_PREFIX, fcvt_allocate) (void)
{
FCVT_BUFFER = (char *) malloc (MAXDIG);
}

char *
APPEND (FUNC_PREFIX, fcvt) (value, ndigit, decpt, sign)
FLOAT_TYPE value;
int ndigit, *decpt, *sign;
{
static char buf[MAXDIG];
__libc_once_define (static, once);
__libc_once (once, APPEND (FUNC_PREFIX, fcvt_allocate));

(void) fcvt_r (value, ndigit, decpt, sign, buf, sizeof buf);
if (FCVT_BUFFER == NULL)
/* If no core is available we don't have a chance to run the
program successfully and so returning NULL is an acceptable
result. */
return NULL;

return buf;
(void) APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign,
FCVT_BUFFER, MAXDIG);

return FCVT_BUFFER;
}


static void
APPEND (FUNC_PREFIX, ecvt_allocate) (void)
{
ECVT_BUFFER = (char *) malloc (MAXDIG);
}

char *
APPEND (FUNC_PREFIX, ecvt) (value, ndigit, decpt, sign)
FLOAT_TYPE value;
int ndigit, *decpt, *sign;
{
static char buf[MAXDIG];
__libc_once_define (static, once);
__libc_once (once, APPEND (FUNC_PREFIX, ecvt_allocate));

(void) ecvt_r (value, ndigit, decpt, sign, buf, sizeof buf);
if (ECVT_BUFFER == NULL)
/* If no core is available we don't have a chance to run the
program successfully and so returning NULL is an acceptable
result. */
return NULL;

return buf;
(void) APPEND (FUNC_PREFIX, ecvt_r) (value, ndigit, decpt, sign,
ECVT_BUFFER, MAXDIG);

return ECVT_BUFFER;
}

char *
Expand All @@ -65,3 +105,18 @@ APPEND (FUNC_PREFIX, gcvt) (value, ndigit, buf)
sprintf (buf, "%.*" FLOAT_FMT_FLAG "g", ndigit, value);
return buf;
}


/* Make sure the memory is freed if the programs ends while in
memory-debugging mode and something actually was allocated. */
static void
__attribute__ ((unused))
free_mem (void)
{
if (FCVT_BUFFER != NULL)
free (FCVT_BUFFER);
if (ECVT_BUFFER != NULL)
free (ECVT_BUFFER);
}

text_set_element (__libc_subfreeres, free_mem);
Loading

0 comments on commit 1cab544

Please sign in to comment.