1998-11-16  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/opendir.c: Use o_directory_works differently.  Treat
	zero value as uninitialized so that variable can go into .bss.

	* dirent/opendir-tst1.c: Print error strings to stdout.

	* sysdeps/unix/sysv/linux/mmap64.c: New file.  Empty.
	* sysdeps/unix/sysv/linux/syscalls.list: Add mmap with mmap64 alias.
	* sysdeps/unix/sysv/linux/arm/mmap.S: Add mmap64 alias.
	* sysdeps/unix/sysv/linux/i386/mmap.S: Likewise.
	* sysdeps/unix/sysv/linux/m68k/mmap.S: Likewise.

1998-11-16  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* time/tzfile.c (__tzfile_read): Check that types[i].isdst is in
	range.

1998-11-16  Ulrich Drepper  <drepper@cygnus.com>

	* libio/bits/stdio.h (fread_unlocked): Do handle zero size and number.
	(fwrite_unlocked): Likewise.

1998-11-16  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* libio/bits/stdio.h (fread_unlocked): Don't evaluate non-constant
	twice.  Don't bother handling zero size.
	(frwite_unlocked): Likewise.

1998-11-15  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* configure.in: Fix regex for makeinfo version string.

1998-11-15  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* sunrpc/rpc_sample.c (write_sample_server): Avoid -Wparentheses
	warning.
	* sunrpc/rpc_svcout.c (write_program): Likewise.

1998-11-15  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* time/Makefile (CFLAGS-test_time.c): Add -Wno-format.

1998-11-16  Ulrich Drepper  <drepper@cygnus.com

	* misc/sys/mman.h: Pretty print prototypes.

1998-11-15  Ulrich Drepper  <drepper@cygnus.com

	* misc/error.c (error): Don't use result of strerror_r call directly
	since at least DEC Unix has a wrong return type.
	Patch by Johan Danielsson <joda@pdc.kth.se>.

1998-11-16  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
This commit is contained in:
Ulrich Drepper 1998-11-16 12:02:08 +00:00
parent be1d9d95b1
commit 8b7fb5883b
32 changed files with 182 additions and 114 deletions

View File

@ -1,4 +1,57 @@
Mon Nov 16 11:17:31 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
1998-11-16 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/opendir.c: Use o_directory_works differently. Treat
zero value as uninitialized so that variable can go into .bss.
* dirent/opendir-tst1.c: Print error strings to stdout.
* sysdeps/unix/sysv/linux/mmap64.c: New file. Empty.
* sysdeps/unix/sysv/linux/syscalls.list: Add mmap with mmap64 alias.
* sysdeps/unix/sysv/linux/arm/mmap.S: Add mmap64 alias.
* sysdeps/unix/sysv/linux/i386/mmap.S: Likewise.
* sysdeps/unix/sysv/linux/m68k/mmap.S: Likewise.
1998-11-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* time/tzfile.c (__tzfile_read): Check that types[i].isdst is in
range.
1998-11-16 Ulrich Drepper <drepper@cygnus.com>
* libio/bits/stdio.h (fread_unlocked): Do handle zero size and number.
(fwrite_unlocked): Likewise.
1998-11-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* libio/bits/stdio.h (fread_unlocked): Don't evaluate non-constant
twice. Don't bother handling zero size.
(frwite_unlocked): Likewise.
1998-11-15 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* configure.in: Fix regex for makeinfo version string.
1998-11-15 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* sunrpc/rpc_sample.c (write_sample_server): Avoid -Wparentheses
warning.
* sunrpc/rpc_svcout.c (write_program): Likewise.
1998-11-15 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* time/Makefile (CFLAGS-test_time.c): Add -Wno-format.
1998-11-16 Ulrich Drepper <drepper@cygnus.com
* misc/sys/mman.h: Pretty print prototypes.
1998-11-15 Ulrich Drepper <drepper@cygnus.com
* misc/error.c (error): Don't use result of strerror_r call directly
since at least DEC Unix has a wrong return type.
Patch by Johan Danielsson <joda@pdc.kth.se>.
1998-11-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* sysdeps/unix/sysv/linux/m68k/sysdep.h (INLINE_SYSCALL): Undo
last change.

View File

@ -450,7 +450,7 @@ AC_CHECK_PROG_VER(MSGFMT, msgfmt gmsgfmt, --version,
[GNU gettext.* \([0-9]*\.[0-9.]*\)],
[0.[1-9][0-9].* | [1-9].*], MSGFMT=: aux_missing=t)
AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
[GNU texinfo \([0-9][0-9.]*\)],
[GNU texinfo.* \([0-9][0-9.]*\)],
[3.1[1-9] | 3.[2-9][0-9]], MAKEINFO=: aux_missing=t)
if test -n "$critic_missing"; then

View File

@ -41,14 +41,14 @@ real_test (void)
if (dirp != NULL)
{
/* Oh, oh, how can this work? */
fputs ("`opendir' succeeded on a FIFO???\n", stderr);
fputs ("`opendir' succeeded on a FIFO???\n", stdout);
closedir (dirp);
return 1;
}
if (errno != ENOTDIR)
{
fprintf (stderr, "`opendir' return error `%s' instead of `%s'\n",
fprintf (stdout, "`opendir' return error `%s' instead of `%s'\n",
strerror (errno), strerror (ENOTDIR));
return 1;
}

View File

@ -127,48 +127,41 @@ ferror_unlocked (FILE *__stream) __THROW
#if defined __USE_MISC && defined __GNUC__ && defined __OPTIMIZE__
/* Perform some simple optimizations. */
# define fread_unlocked(ptr, size, n, stream) \
(__extension__ ((((__builtin_constant_p (size) \
&& ((size) == 0 || __builtin_constant_p (n))) \
|| (__builtin_constant_p (n) && (n) == 0)) \
&& (size_t) ((size) * (n)) <= 8) \
(__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) \
&& (size_t) ((size) * (n)) <= 8 && (size) != 0) \
? ({ char *__ptr = (char *) (ptr); \
FILE *__stream = (stream); \
size_t __size = (size); \
size_t __n = (n); \
size_t __readres = __n; \
size_t __cnt = __size * __n + 1; \
while (--__cnt > 0) \
size_t __cnt; \
for (__cnt = (size) * (n); __cnt > 0; --__cnt) \
{ \
int __c = _IO_getc_unlocked (__stream); \
if (__c == EOF) \
{ \
__readres = (__size * __n - __cnt) / __size; \
break; \
} \
break; \
*__ptr++ = __c; \
} \
__readres; }) \
: fread_unlocked (ptr, size, n, stream)))
((size_t) ((size) * (n)) - __cnt) / (size); }) \
: (((__builtin_constant_p (size) && (size) == 0) \
|| (__builtin_constant_p (n) && (n) == 0)) \
/* Evaluate all parameters once. */ \
? ((void) (ptr), (void) (stream), (void) (size), \
(void) n, 0) \
: fread_unlocked (ptr, size, n, stream))))
# define fwrite_unlocked(ptr, size, n, stream) \
(__extension__ ((((__builtin_constant_p (size) \
&& ((size) == 0 || __builtin_constant_p (n))) \
|| (__builtin_constant_p (n) && (n) == 0)) \
&& (size_t) ((size) * (n)) <= 8) \
(__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) \
&& (size_t) ((size) * (n)) <= 8 && (size) != 0) \
? ({ const char *__ptr = (const char *) (ptr); \
FILE *__stream = (stream); \
size_t __size = (size); \
size_t __n = (n); \
size_t __writeres = __n; \
size_t __cnt = __size * __n + 1; \
while (--__cnt > 0) \
size_t __cnt; \
for (__cnt = (size) * (n); __cnt > 0; --__cnt) \
if (_IO_putc_unlocked (*__ptr++, __stream) == EOF) \
{ \
__writeres = (__size * __n - __cnt) / __size; \
break; \
} \
__writeres; }) \
: fwrite_unlocked (ptr, size, n, stream)))
break; \
((size_t) ((size) * (n)) - __cnt) / (size); }) \
: (((__builtin_constant_p (size) && (size) == 0) \
|| (__builtin_constant_p (n) && (n) == 0)) \
/* Evaluate all parameters once. */ \
? ((void) (ptr), (void) (stream), (void) (size), n) \
: fwrite_unlocked (ptr, size, n, stream))))
#endif
/* Define helper macro. */

View File

@ -1,3 +1,7 @@
1998-11-15 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* linuxthreads.texi: Fix punctuation after xref.
1998-11-10 H.J. Lu <hjl@gnu.org>
* sysdeps/unix/sysv/linux/bits/local_lim.h: Undefine NR_OPEN

View File

@ -47,7 +47,7 @@ latter case is equivalent to calling @code{pthread_exit} with the result
returned by @var{start_routine} as exit code.
The @var{attr} argument specifies thread attributes to be applied to the
new thread. @xref{Thread Attributes} for details. The @var{attr}
new thread. @xref{Thread Attributes}, for details. The @var{attr}
argument can also be @code{NULL}, in which case default attributes are
used: the created thread is joinable (not detached) and has an ordinary
(not realtime) scheduling policy.

View File

@ -239,7 +239,7 @@ exceptions happened.
Alternatively, you can enable @dfn{traps} for exceptions. In that case,
when an exception is raised, your program will receive the @code{SIGFPE}
signal. The default action for this signal is to terminate the
program. @xref{Signal Handling} for how you can change the effect of
program. @xref{Signal Handling}, for how you can change the effect of
the signal.
@findex matherr
@ -851,7 +851,7 @@ sqrt (creal (@var{z}) * creal (@var{z}) + cimag (@var{z}) * cimag (@var{z}))
This function should always be used instead of the direct formula
because it takes special care to avoid losing precision. It may also
take advantage of hardware support for this operation. See @code{hypot}
in @xref{Exponents and Logarithms}.
in @ref{Exponents and Logarithms}.
@end deftypefun
@node Normalization Functions

View File

@ -3,10 +3,9 @@
@chapter File System Interface
This chapter describes the GNU C library's functions for manipulating
files. Unlike the input and output functions described in
@ref{I/O on Streams} and @ref{Low-Level I/O}, these
functions are concerned with operating on the files themselves, rather
than on their contents.
files. Unlike the input and output functions (@pxref{I/O on Streams};
@pxref{Low-Level I/O}), these functions are concerned with operating
on the files themselves, rather than on their contents.
Among the facilities described in this chapter are functions for
examining or modifying directories, functions for renaming and deleting
@ -396,7 +395,7 @@ the current working directory:
The order in which files appear in a directory tends to be fairly
random. A more useful program would sort the entries (perhaps by
alphabetizing them) before printing them; see
@ref{Scanning Directory Content} and @ref{Array Sort Function}.
@ref{Scanning Directory Content}, and @ref{Array Sort Function}.
@node Random Access Directory

View File

@ -528,7 +528,7 @@ old-fashioned variadic facility is called @file{varargs.h}.
Using @file{varargs.h} is almost the same as using @file{stdarg.h}.
There is no difference in how you call a variadic function;
@xref{Calling Variadics}. The only difference is in how you define
see @ref{Calling Variadics}. The only difference is in how you define
them. First of all, you must use old-style non-prototype syntax, like
this:
@ -572,7 +572,7 @@ function.
@end deftypefn
The other argument macros, @code{va_arg} and @code{va_end}, are the same
in @file{varargs.h} as in @file{stdarg.h}; see @ref{Argument Macros} for
in @file{varargs.h} as in @file{stdarg.h}; see @ref{Argument Macros}, for
details.
It does not work to include both @file{varargs.h} and @file{stdarg.h} in

View File

@ -3625,4 +3625,4 @@ unknown device.
Most IOCTLs are OS-specific and/or only used in special system utilities,
and are thus beyond the scope of this document. For an example of the use
of an IOCTL, @xref{Out-of-Band Data}.
of an IOCTL, see @ref{Out-of-Band Data}.

View File

@ -140,7 +140,7 @@ and @code{strxfrm}); see @ref{Collation Functions}.
@item LC_CTYPE
This category applies to classification and conversion of characters,
and to multibyte and wide characters;
see @ref{Character Handling} and @ref{Extended Characters}.
see @ref{Character Handling}, and @ref{Extended Characters}.
@comment locale.h
@comment ISO
@ -163,8 +163,8 @@ This category applies to formatting date and time values; see
@comment XOPEN
@item LC_MESSAGES
This category applies to selecting the language used in the user
interface for message translation (@ref{The Uniforum approach} and
@ref{Message catalogs a la X/Open}).
interface for message translation (@pxref{The Uniforum approach};
@pxref{Message catalogs a la X/Open}).
@comment locale.h
@comment ISO

View File

@ -896,7 +896,7 @@ Allocate a block of @var{size} bytes, starting on an address that is a
multiple of @var{boundary}. @xref{Aligned Memory Blocks}.
@item int mallopt (int @var{param}, int @var{value})
Adjust a tunable parameter. @xref{Malloc Tunable Parameters}
Adjust a tunable parameter. @xref{Malloc Tunable Parameters}.
@item int mcheck (void (*@var{abortfn}) (void))
Tell @code{malloc} to perform occasional consistency checks on

View File

@ -279,8 +279,8 @@ functions if no supporting functionality is available. Since each
set/message number tuple must be unique the programmer must keep lists
of the messages at the same time the code is written. And the work
between several people working on the same project must be coordinated.
In @ref{Common Usage} we will see some how these problems can be relaxed
a bit.
We will see some how these problems can be relaxed a bit (@pxref{Common
Usage}).
@deftypefun int catclose (nl_catd @var{catalog_desc})
The @code{catclose} function can be used to free the resources
@ -817,8 +817,8 @@ be used.
Please note that above we wrote ``message catalogs'' (plural). This is
a speciality of the GNU implementation of these functions and we will
say more about this in section @xref{Locating gettext catalog} when we
talk about the ways message catalogs are selected.
say more about this when we talk about the ways message catalogs are
selected (@pxref{Locating gettext catalog}).
The @code{gettext} function does not modify the value of the global
@var{errno} variable. This is necessary to make it possible to write

View File

@ -393,7 +393,7 @@ Instead of the using the using the normal functions for accessing the
filesystem the @code{glob} implementation uses the user-supplied
functions specified in the structure pointed to by @var{pglob}
parameter. For more information about the functions refer to the
sections about directory handling @ref{Accessing Directories} and
sections about directory handling see @ref{Accessing Directories}, and
@ref{Reading Attributes}.
@comment glob.h

View File

@ -429,7 +429,7 @@ extended or searched.
The @code{tsearch} function searches in the tree pointed to by
@code{*@var{rootp}} for an element matching @var{key}. The function
pointed to by @var{compar} is used to determine whether two elements
match. @xref{Comparison Functions} for a specification of the functions
match. @xref{Comparison Functions}, for a specification of the functions
which can be used for the @var{compar} parameter.
If the tree does not contain a matching entry the @var{key} value will

View File

@ -978,7 +978,7 @@ the signal @var{signum}.
The first argument, @var{signum}, identifies the signal whose behavior
you want to control, and should be a signal number. The proper way to
specify a signal number is with one of the symbolic signal names
described in @ref{Standard Signals}---don't use an explicit number, because
(@pxref{Standard Signals})---don't use an explicit number, because
the numerical code for a given kind of signal may vary from operating
system to operating system.

View File

@ -103,7 +103,7 @@ the options do not take arguments. Thus, @samp{-abc} is equivalent to
@item
Option names are single alphanumeric characters (as for @code{isalnum};
see @ref{Classification of Characters}).
@pxref{Classification of Characters}).
@item
Certain options require an argument. For example, the @samp{-o} command
@ -376,8 +376,8 @@ value is nonzero.
You can deal directly with the underlying representation of environment
objects to add more variables to the environment (for example, to
communicate with another program you are about to execute; see
@ref{Executing a File}).
communicate with another program you are about to execute;
@pxref{Executing a File}).
@comment unistd.h
@comment POSIX.1
@ -784,7 +784,7 @@ following things happen:
@item
All open file descriptors in the process are closed. @xref{Low-Level I/O}.
Note that streams are not flushed automatically when the process
terminates; @xref{I/O on Streams}.
terminates; see @ref{I/O on Streams}.
@item
The low-order 8 bits of the return status code are saved to be reported

View File

@ -3749,7 +3749,7 @@ buffer (for this, try @code{open_memstream}, below). The buffer is
freed when the stream is open.
The argument @var{opentype} is the same as in @code{fopen}
(@xref{Opening Streams}). If the @var{opentype} specifies
(@pxref{Opening Streams}). If the @var{opentype} specifies
append mode, then the initial file position is set to the first null
character in the buffer. Otherwise the initial file position is at the
beginning of the buffer.
@ -4342,8 +4342,8 @@ We see the different fields of the message and how the extra glue (the
colons and the @code{TO FIX} string) are printed. But only one of the
three calls to @code{fmtmsg} produced output. The first call does not
print anything because the @var{label} parameter is not in the correct
form. As specified in @ref{Printing Formatted Messages} the string must
contain two fields, separated by a colon. The third @code{fmtmsg} call
form. The string must contain two fields, separated by a colon
(@pxref{Printing Formatted Messages}). The third @code{fmtmsg} call
produced no output since the class with the numeric value @code{6} is
not defined. Although a class with numeric value @code{5} is also not
defined by default, the call the @code{addseverity} introduces it and

View File

@ -675,7 +675,7 @@ does so. @xref{Time Zone Functions}.
@deftypefun {char *} ctime_r (const time_t *@var{time}, char *@var{buffer})
This function is similar to @code{ctime}, only that it places the result
in the string pointed to by @var{buffer}. It is equivalent to (written
using gcc extensions, @xref{Statement Exprs,,,gcc,Porting and Using gcc}.):
using gcc extensions, @pxref{Statement Exprs,,,gcc,Porting and Using gcc}):
@smallexample
(@{ struct tm tm; asctime_r (localtime_r (time, &tm), buf); @})

View File

@ -778,7 +778,7 @@ store a user name.
These functions let your program identify positively the user who is
running or the user who logged in this session. (These can differ when
setuid programs are involved; @xref{Process Persona}.) The user cannot
setuid programs are involved; see @ref{Process Persona}.) The user cannot
do anything to fool these functions.
For most purposes, it is more useful to use the environment variable
@ -1843,10 +1843,10 @@ The members of this group are:
@subsection Netgroup Data
@cindex Netgroup
Sometimes it is useful group users according to other criteria like the
ones used in the @xref{Group Database}. E.g., it is useful to associate
a certain group of users with a certain machine. On the other hand
grouping of host names is not supported so far.
Sometimes it is useful to group users according to other criteria
(@pxref{Group Database}). E.g., it is useful to associate a certain
group of users with a certain machine. On the other hand grouping of
host names is not supported so far.
In Sun Microsystems SunOS appeared a new kind of database, the netgroup
database. It allows to group hosts, users, and domain freely, giving

View File

@ -157,7 +157,10 @@ error (status, errnum, message, va_alist)
{
#if defined HAVE_STRERROR_R || defined _LIBC
char errbuf[1024];
fprintf (stderr, ": %s", __strerror_r (errnum, errbuf, sizeof errbuf));
/* Don't use __strerror_r's return value because on some systems
(at least DEC UNIX 4.0[A-D]) strerror_r returns `int'. */
__strerror_r (errnum, errbuf, sizeof errbuf);
fprintf (stderr, ": %s", errbuf);
#else
fprintf (stderr, ": %s", strerror (errnum));
#endif

View File

@ -42,15 +42,15 @@ __BEGIN_DECLS
#ifndef __USE_FILE_OFFSET64
extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
int __flags, int __fd, __off_t __offset));
int __flags, int __fd, __off_t __offset));
#else
extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
int __flags, int __fd, __off_t __offset))
int __flags, int __fd, __off_t __offset))
__asm__ ("mmap64");
#endif
#ifdef __USE_LARGEFILE64
extern __ptr_t mmap64 __P ((__ptr_t __addr, size_t __len, int __prot,
int __flags, int __fd, __off64_t __offset));
int __flags, int __fd, __off64_t __offset));
#endif
/* Deallocate any mapping for the region starting at ADDR and extending LEN
@ -94,7 +94,7 @@ extern int munlockall __P ((void));
NEW_LEN. If MAY_MOVE is MREMAP_MAYMOVE the returned address may
differ from ADDR. */
extern __ptr_t mremap __P ((__ptr_t __addr, size_t __old_len,
size_t __new_len, int __may_move));
size_t __new_len, int __may_move));
#endif
__END_DECLS

View File

@ -252,10 +252,12 @@ write_sample_server (definition * def)
fprintf (fout, "\n\t/*\n\t * insert server code here\n\t */\n\n");
if (!mtflag)
if(!streq(proc->res_type, "void"))
f_print(fout, "\treturn &result;\n}\n");
else /* cast back to void * */
f_print(fout, "\treturn (void *) &result;\n}\n");
{
if (!streq(proc->res_type, "void"))
f_print(fout, "\treturn &result;\n}\n");
else /* cast back to void * */
f_print(fout, "\treturn (void *) &result;\n}\n");
}
else
f_print(fout, "\treturn retval;\n}\n");
}

View File

@ -602,12 +602,14 @@ write_program (const definition * def, const char *storage)
f_print (fout, "\t}\n");
if (!mtflag)
if (Cflag)
f_print (fout, "\t%s = (*%s)((char *)&%s, %s);\n",
RESULT, ROUTINE, ARG, RQSTP);
else
f_print (fout, "\t%s = (*%s)(&%s, %s);\n",
RESULT, ROUTINE, ARG, RQSTP);
{
if (Cflag)
f_print (fout, "\t%s = (*%s)((char *)&%s, %s);\n",
RESULT, ROUTINE, ARG, RQSTP);
else
f_print (fout, "\t%s = (*%s)(&%s, %s);\n",
RESULT, ROUTINE, ARG, RQSTP);
}
else
if (Cflag)
f_print(fout, "\t%s = (bool_t) (*%s)((char *)&%s, (void *)&%s, %s);\n",

View File

@ -29,37 +29,37 @@
#include <dirstream.h>
/* opendir() must not accidentally open something other than a directory.
Some OS's have kernel support for that, some don't. In the worst
case we have to stat() before the open() AND fstat() after.
We have to test at runtime for kernel support since libc may have
been compiled with different headers to the kernel it's running on.
This test can't be done reliably in the general case. We'll use
/dev/null, which if it's not a device lots of stuff will break, as
a guinea pig. It may be missing in chroot environments, so we
make sure to fail safe. */
/* opendir() must not accidentally open something other than a directory.
Some OS's have kernel support for that, some don't. In the worst
case we have to stat() before the open() AND fstat() after.
We have to test at runtime for kernel support since libc may have
been compiled with different headers to the kernel it's running on.
This test can't be done reliably in the general case. We'll use
/dev/null, which if it's not a device lots of stuff will break, as
a guinea pig. It may be missing in chroot environments, so we
make sure to fail safe. */
#ifdef O_DIRECTORY
static int o_directory_works = -1;
static int o_directory_works;
static void
tryopen_o_directory (void)
{
int serrno = errno;
int x = __open ("/dev/null", O_RDONLY|O_NDELAY|O_DIRECTORY);
if (x >= 0)
{
__close (x);
o_directory_works = 0;
}
else if (errno != ENOTDIR)
o_directory_works = 0;
else
o_directory_works = 1;
__set_errno (serrno);
}
tryopen_o_directory (void)
{
int serrno = errno;
int x = __open ("/dev/null", O_RDONLY|O_NDELAY|O_DIRECTORY);
if (x >= 0)
{
__close (x);
o_directory_works = -1;
}
else if (errno != ENOTDIR)
o_directory_works = -1;
else
o_directory_works = 1;
__set_errno (serrno);
}
# define EXTRA_FLAGS O_DIRECTORY
#else
# define EXTRA_FLAGS 0
@ -86,11 +86,11 @@ __opendir (const char *name)
#ifdef O_DIRECTORY
/* Test whether O_DIRECTORY works. */
if (o_directory_works == -1)
if (o_directory_works == 0)
tryopen_o_directory ();
/* We can skip the expensive `stat' call if O_DIRECTORY works. */
if (o_directory_works == 0)
if (o_directory_works < 0)
#endif
{
/* We first have to check whether the name is for a directory. We

View File

@ -37,3 +37,4 @@ ENTRY (__mmap)
PSEUDO_END (__mmap)
weak_alias (__mmap, mmap)
weak_alias (__mmap, mmap64)

View File

@ -46,3 +46,4 @@ L(pseudo_end):
PSEUDO_END (__mmap)
weak_alias (__mmap, mmap)
weak_alias (__mmap, mmap64)

View File

@ -41,3 +41,4 @@ ENTRY (__mmap)
PSEUDO_END (__mmap)
weak_alias (__mmap, mmap)
weak_alias (__mmap, mmap64)

View File

@ -0,0 +1,3 @@
/* At least for now mmap64 is the same as mmap on all platforms.
When/If the 32 bit platforms get a >32 bit VFS we'll have to
change it for these platforms. */

View File

@ -24,6 +24,7 @@ klogctl EXTRA syslog 3 klogctl
lchown - lchown 3 __lchown lchown
mlock EXTRA mlock 2 __mlock mlock
mlockall EXTRA mlockall 1 __mlockall mlockall
mmap - mmap 6 __mmap mmap mmap64
mount EXTRA mount 5 __mount mount
mremap EXTRA mremap 4 __mremap mremap
munlock EXTRA munlock 2 __munlock munlock

View File

@ -40,3 +40,6 @@ tz-cflags = -DTZDIR='"$(zonedir)"' \
CFLAGS-tzfile.c = $(tz-cflags)
CFLAGS-tzset.c = $(tz-cflags)
# Don't warn about Y2k problem in strftime format string.
CFLAGS-test_time.c = -Wno-format

View File

@ -230,6 +230,8 @@ __tzfile_read (const char *file)
|| fread_unlocked (&types[i].isdst, 1, 1, f) != 1
|| fread_unlocked (&types[i].idx, 1, 1, f) != 1)
goto lose;
if (types[i].isdst > 1)
goto lose;
if (types[i].idx >= chars) /* Bogus index in data file. */
goto lose;
types[i].offset = (long int) decode (x);