+1997-10-15 06:56 Ulrich Drepper <drepper@cygnus.com>
+
+ * Rules: Remove ruls to magically install <subdir>.h headers.
+ Reported by Mark Kettenis <kettenis@phys.uva.nl>.
+
+ * glibcbug.in: Fix @gnu.ai.mit.edu -> @gnu.org.
+ * version.c: Likewise.
+ * catgets/gencat.c: Likewise.
+ * db2/makedb.c: Likewise.
+ * locale/programs/locale.c: Likewise.
+ * locale/programs/localedef.c: Likewise.
+
+ * libc.map: Move _IO_list_all back to GLIBC_2.0.
+
+ * elf/rtld.c: Provide name of running program to _dl_new_object.
+
+ * Rules: Implement shared-only-sources.
+ * include/libc-symbols.h: Define default_symbol_version.
+ * libio/Makefile (shared-only-sources): Define.
+ * libio/freopen.c: Define as default version.
+ * libio/iofopen.c: Likewise.
+ * libio/genops.c: Define _IO_list_all here.
+ * libio/stdfiles.c: Create linked list with public names.
+ * libio/oldstdfiles.c: Likewise.
+
+ * stdio-common/printf.c: Optimize.
+ * stdio-common/scanf.c: Optimize.
+
+ * sysdeps/generic/setfpucw.c: Include #include <...> not "...".
+
+ * sysdeps/i386/i486/bits/string.h: Add optimized versions of index and
+ rindex.
+
+1997-10-14 Andreas Jaeger <aj@arthur.rhein-neckar.de>
+
+ * manual/arith.texi: Spelling fixes.
+ * manual/conf.texi: Likewise.
+ * manual/creature.texi: Likewise.
+ * manual/filesys.texi: Likewise.
+ * manual/intro.texi: Likewise.
+ * manual/llio.texi: Likewise.
+ * manual/math.texi: Likewise.
+ * manual/message.texi: Likewise.
+ * manual/pattern.texi: Likewise.
+ * manual/search.texi: Likewise.
+ * manual/signal.texi: Likewise.
+ * manual/socket.texi: Likewise.
+ * manual/startup.texi: Likewise.
+ * manual/stdio.texi: Likewise.
+ * manual/string.texi: Likewise.
+ * manual/time.texi: Likewise.
+ * manual/users.texi: Likewise.
+
+1997-10-13 05:25 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/generic/sys/mman.h: Use __ptr_t instead of __caddr_t.
+ * sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
+ * sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
+ * sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
+ * sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
+ * sysdeps/unix/sysv/linux/sys/mman.h: Likewise.
+ * sysdeps/mach/hurd/mmap.c: Likewise.
+ * sysdeps/generic/mmap.c: Likewise.
+ * sysdeps/unix/bsd/sun/sunos4/mmap.c: Likewise.
+ * sysdeps/mach/munmap.c: Likewise.
+ * sysdeps/generic/munmap.c: Likewise.
+ * sysdeps/mach/mprotect.c: Likewise.
+ * sysdeps/generic/mprotect.c: Likewise.
+ * sysdeps/generic/msync.c: Likewise.
+ * sysdeps/generic/madvise.c: Likewise.
+
+ * sysdeps/unix/sysv/linux/madvise.c: Include stub version from generic
+ subdir.
+
+1997-10-12 20:27 Zack Weinberg <zack@rabi.phys.columbia.edu>
+
+ * sysdeps/stub (all files): Moved to sysdeps/generic.
+ * all files using stub_warning: Include <stub-tag.h>.
+ * include/stub-tag.h: New file, marks stubs in .d files.
+ * Makerules: Look for stub-tag.h, not sysdeps/stub, when building
+ <gnu/stubs.h>.
+ * configure.in: Don't add sysdeps/stub to $sysnames.
+ * sysdeps/unix/Makefile: Look for generic headers, not stub
+ headers.
+ * sysdeps/generic/Makefile: Likewise.
+ * manual/maint.texi: Delete references to sysdeps/stub.
+ * INSTALL: Rebuilt.
+ * configure: Rebuilt.
+
1997-10-13 03:14 Ulrich Drepper <drepper@cygnus.com>
* libc.map: Move _IO_fopen, fopen, _IO_stdin_, _IO_stdout_,
Here are some options that you should specify (if appropriate) when
you run `configure':
-`--with-gnu-ld'
- Use this option if you plan to use GNU `ld' to link programs with
- the GNU C Library. (We strongly recommend that you do.) This
- option enables use of features that exist only in GNU `ld'; so if
- you configure for GNU `ld' you must use GNU `ld' *every time* you
- link with the GNU C Library, and when building it.
-
-`--with-gnu-as'
- Use this option if you plan to use the GNU assembler, `gas', when
- building the GNU C Library. On some systems, the library may not
- build properly if you do *not* use `gas'.
-
-`--with-gnu-binutils'
- This option implies both `--with-gnu-ld' and `--with-gnu-as'. On
- systems where GNU tools are the system tools, there is no need to
- specify this option. These include GNU, GNU/Linux, and free BSD
- systems.
+`--with-binutils=DIRECTORY'
+ Use the binutils (assembler and linker) in `DIRECTORY', not the
+ ones the C compiler would default to. You could use this option if
+ the default binutils on your system cannot deal with all the
+ constructs in the GNU C library. (`configure' will detect the
+ problem and suppress these constructs, so the library will still
+ be usable, but functionality may be lost--for example, you can not
+ build a shared libc with old binutils.)
`--without-fp'
`--nfp'
Use this option if your computer lacks hardware floating-point
- support.
+ support and your operating system does not emulate an FPU.
`--prefix=DIRECTORY'
Install machine-independent data files in subdirectories of
`configparms' should *not* be an edited copy of `Makeconfig'; specify
only the parameters that you want to override. To see how to set these
parameters, find the section of `Makeconfig' that says "These are the
-configuration variables." Then for each parameter that you want to
+configuration variables." Then for each parameter that you want to
change, copy the definition from `Makeconfig' to your new `configparms'
file, and change the value as appropriate for your system.
iX86-ANYTHING-linux
m68k-ANYTHING-linux
powerpc-ANYTHING-linux
+ sparc64-ANYTHING-linux
Former releases of this library (version 1.09.1 and perhaps earlier
versions) used to run on the following configurations:
So the final list is `unix/bsd/vax unix/bsd unix/inet unix posix'.
- `sysdeps' has two "special" subdirectories, called `generic' and
-`stub'. These two are always implicitly appended to the list of
-subdirectories (in that order), so you needn't put them in an `Implies'
-file, and you should not create any subdirectories under them intended
-to be new specific categories. `generic' is for things that can be
-implemented in machine-independent C, using only other
-machine-independent functions in the C library. `stub' is for "stub"
-versions of functions which cannot be implemented on a particular
-machine or operating system. The stub functions always return an
+ `sysdeps' has a "special" subdirectory called `generic'. It is
+always implicitly appended to the list of subdirectories, so you
+needn't put it in an `Implies' file, and you should not create any
+subdirectories under it intended to be new specific categories.
+`generic' serves two purposes. First, the makefiles do not bother to
+look for a system-dependent version of a file that's not in `generic'.
+This means that any system-dependent source file must have an analogue
+in `generic', even if the routines defined by that file are not
+implemented on other platforms. Second. the `generic' version of a
+system-dependent file is used if the makefiles do not find a version
+specific to the system you're compiling for.
+
+ If it is possible to implement the routines in a `generic' file in
+machine-independent C, using only other machine-independent functions in
+the C library, then you should do so. Otherwise, make them stubs. A
+"stub" function is a function which cannot be implemented on a
+particular machine or operating system. Stub functions always return an
error, and set `errno' to `ENOSYS' (Function not implemented). *Note
-Error Reporting::.
-
- A source file is known to be system-dependent by its having a
-version in `generic' or `stub'; every generally-available function whose
-implementation is system-dependent in should have either a generic or
-stub implementation (there is no point in having both). Some rare
-functions are only useful on specific systems and aren't defined at all
-on others; these do not appear anywhere in the system-independent
-source code or makefiles (including the `generic' and `stub'
-directories), only in the system-dependent `Makefile' in the specific
-system's subdirectory.
+Error Reporting::. If you define a stub function, you must place the
+statement `stub_warning(FUNCTION)', where FUNCTION is the name of your
+function, after its definition; also, you must include the file
+`<stub-tag.h>' into your file. This causes the function to be listed
+in the installed `<gnu/stubs.h>', and makes GNU ld warn when the
+function is used.
+
+ Some rare functions are only useful on specific systems and aren't
+defined at all on others; these do not appear anywhere in the
+system-independent source code or makefiles (including the `generic'
+and `stub' directories), only in the system-dependent `Makefile' in the
+specific system's subdirectory.
If you come across a file that is in one of the main source
directories (`string', `stdio', etc.), and you want to write a machine-
hierarchy that are not for particular machine architectures.
`generic'
-`stub'
- As described above (*note Porting::.), these are the two
- subdirectories that every configuration implicitly uses after all
- others.
+ As described above (*note Porting::.), this is the subdirectory
+ that every configuration implicitly uses after all others.
`ieee754'
This directory is for code using the IEEE 754 floating-point
extensions that they make and grant Carnegie Mellon the
rights to redistribute these changes.
+ * The code for the database library `libdb' comes from the 2.3
+ release of Berkeley DB. That code is under the same copyright as
+ 4.4 BSD and also:
+
+ Copyright (C) 1990, 1993, 1994, 1995, 1996, 1997
+ Sleepycat Software. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the
+ following conditions are met:
+
+ 1. Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. Redistributions in any form must be accompanied by
+ information on how to obtain complete source code for
+ the DB software and any accompanying software that uses
+ the DB software. The source code must either be
+ included in the distribution or be available for no more
+ than the cost of distribution plus a nominal fee, and
+ must be freely redistributable under reasonable
+ conditions. For an executable file, complete source
+ code means the source code for all modules it contains.
+ It does not mean source code for modules or files that
+ typically accompany the operating system on which the
+ executable file runs, e.g., standard library modules or
+ system header files.
+
+ THIS SOFTWARE IS PROVIDED BY SLEEPYCAT SOFTWARE "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ SLEEPYCAT SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGE.
+
+ Portions copyright (C) 1995, 1996
+ The President and Fellows of Harvard University.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the
+ following conditions are met:
+ 1. Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ 3. All advertising materials mentioning features or use of
+ this software must display the following acknowledgement:
+ This product includes software developed by
+ Harvard University and its contributors.
+
+ 4. Neither the name of the University nor the names of its
+ contributors may be used to endorse or promote products
+ derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY HARVARD AND ITS CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ SHALL HARVARD OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ OF SUCH DAMAGE.
+
+ For a license to use, redistribute or sell DB software under
+ conditions other than those described above, or to purchase
+ support for this software, please contact Sleepycat Software
+ at
+
+ Sleepycat Software
+ 394 E. Riding Dr.
+ Carlisle, MA 01741
+ USA
+ +1-508-287-4781
+
+ or <db@sleepycat.com>.
+
+
\f
# Produce a file `stub-$(subdir)' which contains `#define __stub_FUNCTION'
# for each function which is a stub. We grovel over all the .d files
-# looking for references to source files in sysdeps/stub. Then we grovel
-# over each referenced source file to see what stub function it defines.
+# looking for references to <stub-tag.h>. Then we grovel over each
+# referenced source file to see what stub function it defines.
.PHONY: stubs # The parent Makefile calls this target.
stubs: $(common-objpfx)stub-$(subdir)
-s = $(sysdep_dir)/stub
+s = $(sysdep_dir)/generic
$(common-objpfx)stub-$(subdir): $(+depfiles)
# Use /dev/null since `...` might expand to empty.
(s=`cd $s; /bin/pwd`; \
$(patsubst %/,cd %;,$(objpfx)) \
sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \
- `sed -n 's@^.*$s/\([a-z0-9_-]*\.c\).*$$@'"$$s"/'\1@p' \
+ `sed -n -e '\@: $s@{; s@^.*: $s/\([a-z0-9_./-]*\.c\).*$$@'"$$s"'/\1@; h; }' \
+ -e '/stub-tag\.h/{; g; p; }' \
$(patsubst $(objpfx)%,%,$^) /dev/null` \
/dev/null) > $@T
mv -f $@T $@
common-generated :=
endif
-ifeq "$(strip $(headers))" ""
-ifneq "$(wildcard $(subdir).h)" ""
-override headers := $(subdir).h
-endif
-endif
-
include ../Makerules
.PHONY: subdir_lib
$(common-objpfx)empty.os: $(common-objpfx)empty.c $(before-compile)
$(compile-command.c)
endif
+
+ifdef shared-only-routines
+# If we have versioned code we don't need the old versions in any of the
+# static libraries.
+define o-iterator-doit
+$(shared-only-routines:%=$(objpfx)%.$o): %.$o: $(common-objpfx)empty.$o
+ rm -f $$@
+ ln $$< $$@
+
+$(common-objpfx)empty.$o: $(common-objpfx)empty.c $(before-compile)
+ $$(compile-command.c)
+endef
+object-suffixes-left := $(filter-out .os,$(object-suffixes))
+include $(o-iterator)
+endif
case ARGP_KEY_HELP_EXTRA:
/* We print some extra information. */
return strdup (gettext ("\
-Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n"));
+Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
default:
break;
}
done
# Add the default directories.
-sysnames="$names sysdeps/generic sysdeps/stub"
+sysnames="$names sysdeps/generic"
# The other names were emitted during the scan.
-echo "$ac_t""sysdeps/generic sysdeps/stub" 1>&6
+echo "$ac_t""sysdeps/generic" 1>&6
### Locate tools.
done
# Add the default directories.
-sysnames="$names sysdeps/generic sysdeps/stub"
+sysnames="$names sysdeps/generic"
AC_SUBST(sysnames)
# The other names were emitted during the scan.
-AC_MSG_RESULT(sysdeps/generic sysdeps/stub)
+AC_MSG_RESULT(sysdeps/generic)
### Locate tools.
case ARGP_KEY_HELP_EXTRA:
/* We print some extra information. */
return strdup (gettext ("\
-Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n"));
+Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
default:
break;
}
{
/* Create a link_map for the executable itself.
This will be what dlopen on "" returns. */
- main_map = _dl_new_object ((char *) "", "", lt_executable);
+ main_map = _dl_new_object (_dl_argv[0] ?: (char *) "<main program>",
+ "", lt_executable);
if (main_map == NULL)
_dl_sysdep_fatal ("cannot allocate memory for link map\n", NULL);
main_map->l_phdr = phdr;
# these variables are filled in by configure
#
VERSION="@VERSION@"
-BUGGLIBC="bugs@gnu.ai.mit.edu"
+BUGGLIBC="bugs@gnu.org"
ADDONS="@subdirs@"
PATH=/bin:/usr/bin:/usr/local/bin:$PATH
#if DO_VERSIONING
# define symbol_version(real, name, version) \
__asm__ (".symver " #real "," #name "@" #version)
+# define default_symbol_version(real, name, version) \
+ __asm__ (".symver " #real "," #name "@@" #version)
#else
# define symbol_version(real, name, version)
+# define default_symbol_version(real, name, version)
#endif
#endif /* libc-symbols.h */
--- /dev/null
+/* This header is included into every file that declares a stub function.
+ * The build process looks for this header in .d files to decide whether
+ * or not it needs to scan the corresponding .c file for entries to add to
+ * <gnu/stubs.h>.
+ */
xdrrec_endofrecord; xdrrec_eof; xdrrec_skiprecord; xdrstdio_create;
xencrypt; xprt_register; xprt_unregister;
+ _IO_list_all;
+
local:
*;
};
GLIBC_2.1 {
global:
- _IO_fopen; fopen; _IO_stdin_; _IO_stdout_; _IO_stderr_; _IO_list_all;
+ _IO_fopen; fopen; _IO_stdin_; _IO_stdout_; _IO_stderr_;
freopen;
-} GLIBC_2.0;
\ No newline at end of file
+} GLIBC_2.0;
aux += oldfileops oldstdfiles
endif
+shared-only-routines = oldiofopen oldfreopen oldfileops oldstdfiles
+
distribute := iolibio.h libioP.h strfile.h Banner
include ../Rules
return result;
}
-symbol_version (__new_freopen, freopen, GLIBC_2.1);
+default_symbol_version (__new_freopen, freopen, GLIBC_2.1);
_IO_unbuffer_all ();
}
+_IO_FILE *_IO_list_all = &_IO_stderr_.plus.file;
+
void
_IO_init_marker (marker, fp)
struct _IO_marker *marker;
#ifdef DO_VERSIONING
strong_alias (_IO_new_fopen, __new_fopen)
-symbol_version (_IO_new_fopen, _IO_fopen, GLIBC_2.1);
-symbol_version (__new_fopen, fopen, GLIBC_2.1);
+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)
#endif
DEF_STDFILE(_IO_old_stdin_, _IO_stdin_, 0, 0, _IO_NO_WRITES);
-DEF_STDFILE(_IO_old_stdout_, _IO_stdout_, 1, &_IO_old_stdin_.file,
+DEF_STDFILE(_IO_old_stdout_, _IO_stdout_, 1, &_IO_stdin_.plus.file,
_IO_NO_READS);
-DEF_STDFILE(_IO_old_stderr_, _IO_stderr_, 2, &_IO_old_stdout_.file,
+DEF_STDFILE(_IO_old_stderr_, _IO_stderr_, 2, &_IO_stdout_.plus.file,
_IO_NO_READS+_IO_UNBUFFERED);
-_IO_FILE *_IO_old_list_all = &_IO_old_stderr_.file;
+#if 0
+_IO_FILE *_IO_old_list_all = &_IO_stderr_.plus.file;
symbol_version (_IO_old_list_all, _IO_list_all,);
+#endif
static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
struct _IO_FILE_complete INAME \
= {{FILEBUF_LITERAL(CHAIN, FLAGS, FD), &_IO_file_jumps},}; \
- symbol_version (INAME, NAME, GLIBC_2.1)
+ default_symbol_version (INAME, NAME, GLIBC_2.1)
#else
#define DEF_STDFILE(INAME, FD, CHAIN, FLAGS) \
struct _IO_FILE_complete INAME \
= {{FILEBUF_LITERAL(CHAIN, FLAGS, FD), &_IO_file_jumps},}; \
- symbol_version (INAME, NAME, GLIBC_2.1)
+ default_symbol_version (INAME, NAME, GLIBC_2.1)
#endif
DEF_STDFILE(_IO_new_stdin_, _IO_stdin_, 0, 0, _IO_NO_WRITES);
-DEF_STDFILE(_IO_new_stdout_, _IO_stdout_, 1, &_IO_new_stdin_.plus.file,
+DEF_STDFILE(_IO_new_stdout_, _IO_stdout_, 1, &_IO_stdin_.plus.file,
_IO_NO_READS);
-DEF_STDFILE(_IO_new_stderr_, _IO_stderr_, 2, &_IO_new_stdout_.plus.file,
+DEF_STDFILE(_IO_new_stderr_, _IO_stderr_, 2, &_IO_stdout_.plus.file,
_IO_NO_READS+_IO_UNBUFFERED);
-_IO_FILE *_IO_new_list_all = &_IO_new_stderr_.plus.file;
-symbol_version (_IO_new_list_all, _IO_list_all, GLIBC_2.1);
+#if 0
+_IO_FILE *_IO_new_list_all = &_IO_stderr_.plus.file;
+default_symbol_version (_IO_new_list_all, _IO_list_all, GLIBC_2.1);
+#endif
case ARGP_KEY_HELP_EXTRA:
/* We print some extra information. */
return strdup (gettext ("\
-Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n"));
+Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
default:
break;
}
locale files : %s\n\
%s"),
CHARMAP_PATH, LOCALE_PATH, gettext ("\
-Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n"));
+Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
return cp;
default:
break;
* Not a Number:: Making NaNs and testing for NaNs.
* Imaginary Unit:: Constructing complex Numbers.
* Predicates on Floats:: Testing for infinity and for NaNs.
-* Floating-Point Classes:: Classifiy floating-point numbers.
+* Floating-Point Classes:: Classify floating-point numbers.
* Operations on Complex:: Projections, Conjugates, and Decomposing.
* Absolute Value:: Absolute value functions.
* Normalization Functions:: Hacks for radix-2 representations.
@comment math.h
@comment ISO
@deftypevr Macro float_t INFINITY
-A expression representing the inifite value. @code{INFINITY} values are
+A expression representing the infinite value. @code{INFINITY} values are
produce by mathematical operations like @code{1.0 / 0.0}. It is
possible to continue the computations with this value since the basic
operations as well as the mathematical library functions are prepared to
handle values like this.
-Beside @code{INFINITY} also the value @code{-INIFITY} is representable
+Beside @code{INFINITY} also the value @code{-INFINITY} is representable
and it is handled differently if needed. It is possible to test a
variables for infinite value using a simple comparison but the
recommended way is to use the the @code{isinf} function.
@pindex complex.h
To construct complex numbers it is necessary have a way to express the
imaginary part of the numbers. In mathematics one uses the symbol ``i''
-to mark a number as imaginary. For convenienve the @file{complex.h}
+to mark a number as imaginary. For convenience the @file{complex.h}
header defines two macros which allow to use a similar easy notation.
@deftypevr Macro float_t _Imaginary_I
@end smallexample
@noindent
-to avoid the macro expansion. Using the macro has two big adavantages:
+to avoid the macro expansion. Using the macro has two big advantages:
it is more portable and one does not have to choose the right function
among @code{isnan}, @code{isnanf}, and @code{isnanl}.
@end deftypefn
@cindex decompose complex numbers
This section lists functions performing some of the simple mathematical
-operations on complex numbers. Using any of the function requries that
+operations on complex numbers. Using any of the function requires that
the C compiler understands the @code{complex} keyword, introduced to the
C language in the @w{ISO C 9X} standard.
@deftypefunx {complex long double} cprojl (complex long double @var{z})
Return the projection of the complex value @var{z} on the Riemann
sphere. Values with a infinite complex part (even if the real part
-is NaN) are projected to positive infinte on the real axis. If the real part is infinite, the result is equivalent to
+is NaN) are projected to positive infinite on the real axis. If the real part is infinite, the result is equivalent to
@smallexample
INFINITY + I * copysign (0.0, cimag (z))
This is not the same as @code{x < 0.0} since in some floating-point
formats (e.g., @w{IEEE 754}) the zero value is optionally signed. The
comparison @code{-0.0 < 0.0} will not be true while @code{signbit
-(-0.0)} will return a nonzeri value.
+(-0.0)} will return a nonzero value.
@end deftypefun
@node Rounding and Remainders
@comment math.h
@comment ISO
@deftypefun double modf (double @var{value}, double *@var{integer-part})
-@deftypefunx float modff (flaot @var{value}, float *@var{integer-part})
+@deftypefunx float modff (float @var{value}, float *@var{integer-part})
@deftypefunx {long double} modfl (long double @var{value}, long double *@var{integer-part})
These functions break the argument @var{value} into an integer part and a
fractional part (between @code{-1} and @code{1}, exclusive). Their sum
If the input string is @code{"nan"} or
@code{"nan(@var{n-char-sequence})"} the return value of @code{strtod} is
the representation of the NaN (not a number) value (if the
-flaoting-point formats supports this. The form with the
+floating-point formats supports this. The form with the
@var{n-char-sequence} enables in an implementation specific way to
specify the form of the NaN value. When using the @w{IEEE 754}
floating-point format, the NaN value can have a lot of forms since only
@comment unistd.h
@comment Unix98
@item _CS_LFS_CFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
the C compiler if a source is compiled using the
@code{_LARGEFILE_SOURCE} feature select macro; @pxref{Feature Test Macros}.
@comment unistd.h
@comment Unix98
@item _CS_LFS_LDFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
the linker if a source is compiled using the
@code{_LARGEFILE_SOURCE} feature select macro; @pxref{Feature Test Macros}.
@comment unistd.h
@comment Unix98
@item _CS_LFS_LIBS
-The returned string specifies which additionals libraries must be linked
+The returned string specifies which additional libraries must be linked
to the application if a source is compiled using the
@code{_LARGEFILE_SOURCE} feature select macro; @pxref{Feature Test Macros}.
@comment unistd.h
@comment Unix98
@item _CS_LFS_LINTFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
the the lint tool if a source is compiled using the
@code{_LARGEFILE_SOURCE} feature select macro; @pxref{Feature Test Macros}.
@comment unistd.h
@comment Unix98
@item _CS_LFS64_CFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
the C compiler if a source is compiled using the
@code{_LARGEFILE64_SOURCE} feature select macro; @pxref{Feature Test Macros}.
@comment unistd.h
@comment Unix98
@item _CS_LFS64_LDFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
the linker if a source is compiled using the
@code{_LARGEFILE64_SOURCE} feature select macro; @pxref{Feature Test Macros}.
@comment unistd.h
@comment Unix98
@item _CS_LFS64_LIBS
-The returned string specifies which additionals libraries must be linked
+The returned string specifies which additional libraries must be linked
to the application if a source is compiled using the
@code{_LARGEFILE64_SOURCE} feature select macro; @pxref{Feature Test Macros}.
@comment unistd.h
@comment Unix98
@item _CS_LFS64_LINTFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
the the lint tool if a source is compiled using the
@code{_LARGEFILE64_SOURCE} feature select macro; @pxref{Feature Test Macros}.
@end table
@comment X/Open
@defvr Macro _LARGEFILE_SOURCE
If this macro is defined some extra functions are available which
-rectify a few shortcomings in all previous standards. More concreten
+rectify a few shortcomings in all previous standards. More concrete
the functions @code{fseeko} and @code{ftello} are available. Without
these functions the difference between the @w{ISO C} interface
(@code{fseek}, @code{ftell}) and the low-level POSIX interface
* Accessing Directories:: Finding out what files a directory
contains.
* Working on Directory Trees:: Apply actions to all files or a selectable
- subset of a directory hierachy.
+ subset of a directory hierarchy.
* Hard Links:: Adding alternate names to a file.
* Symbolic Links:: A file that ``points to'' a file name.
* Deleting Files:: How to delete a file, and what that means.
@node Working on Directory Trees
@section Working on Directory Trees
-@cindex directory hierachy
-@cindex hierachy, directory
+@cindex directory hierarchy
+@cindex hierarchy, directory
@cindex tree, directory
The functions to handle files in directories described so far allowed to
retrieve all the information in small pieces or process all files in a
directory (see @code{scandir}). Sometimes it is useful to process whole
-hierachies of directories and the contained files. The X/Open
+hierarchies of directories and the contained files. The X/Open
specification define two functions to do this. The simpler form is
derived from an early definition in @w{System V} systems and therefore
this function is available on SVID derived systems. The prototypes and
@deftp {Data Type} {struct FTW}
The contained information helps to interpret the name parameter and
gives some information about current state of the traversal of the
-directory hierachy.
+directory hierarchy.
@table @code
@item int base
many file descriptors the @code{ftw} function is allowed to consume.
The more descriptors can be used the faster the function can run. For
each level of directories at most one descriptor is used so that for
-very deep directory hierachies the limit on open file descriptors for
+very deep directory hierarchies the limit on open file descriptors for
the process or the system can be exceeded. Beside this the limit on
file descriptors is counted together for all threads in a multi-threaded
program and therefore it is always good too limit the maximal number of
While traversing the directory symbolic links are not followed. I.e.,
if this flag is given symbolic links are reported using the
@code{FTW_SL} value for the type parameter to the callback function.
-Please note that if this flag is used the appearence of @code{FTW_SL} in
+Please note that if this flag is used the appearance of @code{FTW_SL} in
a callback function does not mean the referenced file does not exist.
To indicate this the extra value @code{FTW_SLN} exists.
@item FTW_MOUNT
This macro returns nonzero if the file is a socket. @xref{Sockets}.
@end deftypefn
-An alterate non-POSIX method of testing the file type is supported for
+An alternate non-POSIX method of testing the file type is supported for
compatibility with BSD. The mode can be bitwise ANDed with
@code{S_IFMT} to extract the file type code, and compared to the
appropriate type code constant. For example,
pages of the file will be cached in the client's memory, so it is a
waste of the server's memory to cache them a second time. In this use
the sticky bit also says that the filesystem may fail to record the
-file's modification time onto disk reliably (the idea being that noone
+file's modification time onto disk reliably (the idea being that no-one
cares for a swap file).
@end table
guaranteed.
@strong{Warning:} Writing explicit numbers for file permissions is bad
-practice. It is not only nonportable, it also requires everyone who
+practice. It is not only non-portable, it also requires everyone who
reads your program to remember what the bits mean. To make your
program clean, use the symbolic names.
@cindex file access time
@cindex file modification time
@cindex file attribute modification time
-Each file has three timestamps associated with it: its access time,
+Each file has three time stamps associated with it: its access time,
its modification time, and its attribute modification time. These
correspond to the @code{st_atime}, @code{st_mtime}, and @code{st_ctime}
members of the @code{stat} structure; see @ref{File Attributes}.
Reading from a file updates its access time attribute, and writing
updates its modification time. When a file is created, all three
-timestamps for that file are set to the current time. In addition, the
+time stamps for that file are set to the current time. In addition, the
attribute change time and modification time fields of the directory that
contains the new entry are updated.
Changing attributes of a file (for example, with @code{chmod}) updates
its attribute change time field.
-You can also change some of the timestamps of a file explicitly using
+You can also change some of the time stamps of a file explicitly using
the @code{utime} function---all except the attribute change time. You
need to include the header file @file{utime.h} to use this facility.
@pindex utime.h
of the @code{utimbuf} structure pointed at by @var{times}.
The attribute modification time for the file is set to the current time
-in either case (since changing the timestamps is itself a modification
+in either case (since changing the time stamps is itself a modification
of the file attributes).
The @code{utime} function returns @code{0} if successful and @code{-1}
@table @code
@item EACCES
There is a permission problem in the case where a null pointer was
-passed as the @var{times} argument. In order to update the timestamp on
+passed as the @var{times} argument. In order to update the time stamp on
the file, you must either be the owner of the file, have write
permission on the file, or be a privileged user.
The purpose of this manual is to tell you how to use the facilities
of the GNU library. We have mentioned which features belong to which
-standards to help you identify things that are potentially nonportable
+standards to help you identify things that are potentially non-portable
to other systems. But the emphasis in this manual is not on strict
portability.
@var{length} in size before nothing is done. The file must be writable
by the user to perform this operation.
-The return value is zero is everything wnet ok. Otherwise the return
+The return value is zero is everything went ok. Otherwise the return
value is @math{-1} and the global variable @var{errno} is set to:
@table @code
@item EACCES
Sometimes it is not even necessary to write all data associated with a
file descriptor. E.g., in database files which do not change in size it
is enough to write all the file content data to the device.
-Metainformation like the modification time etc. are not that important
+Meta-information like the modification time etc. are not that important
and leaving such information uncommitted does not prevent a successful
recovering of the file in case of a problem.
@comment unistd.h
@comment POSIX
@deftypefun int fdatasync (int @var{fildes})
-When a call to the @code{fdatasync} function returns it is maed sure
+When a call to the @code{fdatasync} function returns it is made sure
that all of the file data is written to the device. For all pending I/O
-operations the parts guaranteeing data integrety finished.
+operations the parts guaranteeing data integrity finished.
Not all systems implement the @code{fdatasync} operation. On systems
missing this functionality @code{fdatasync} is emulated by a call to
@noindent
So the final list is @file{unix/bsd/vax unix/bsd unix/inet unix posix}.
-@file{sysdeps} has two ``special'' subdirectories, called @file{generic}
-and @file{stub}. These two are always implicitly appended to the list
-of subdirectories (in that order), so you needn't put them in an
-@file{Implies} file, and you should not create any subdirectories under
-them intended to be new specific categories. @file{generic} is for
-things that can be implemented in machine-independent C, using only
-other machine-independent functions in the C library. @file{stub} is
-for @dfn{stub} versions of functions which cannot be implemented on a
-particular machine or operating system. The stub functions always
-return an error, and set @code{errno} to @code{ENOSYS} (Function not
-implemented). @xref{Error Reporting}.
-
-A source file is known to be system-dependent by its having a version in
-@file{generic} or @file{stub}; every generally-available function whose
-implementation is system-dependent in should have either a generic or
-stub implementation (there is no point in having both). Some rare functions
-are only useful on specific systems and aren't defined at all on others;
-these do not appear anywhere in the system-independent source code or makefiles
-(including the @file{generic} and @file{stub} directories), only in the
+@file{sysdeps} has a ``special'' subdirectory called @file{generic}. It
+is always implicitly appended to the list of subdirectories, so you
+needn't put it in an @file{Implies} file, and you should not create any
+subdirectories under it intended to be new specific categories.
+@file{generic} serves two purposes. First, the makefiles do not bother
+to look for a system-dependent version of a file that's not in
+@file{generic}. This means that any system-dependent source file must
+have an analogue in @file{generic}, even if the routines defined by that
+file are not implemented on other platforms. Second. the @file{generic}
+version of a system-dependent file is used if the makefiles do not find
+a version specific to the system you're compiling for.
+
+If it is possible to implement the routines in a @file{generic} file in
+machine-independent C, using only other machine-independent functions in
+the C library, then you should do so. Otherwise, make them stubs. A
+@dfn{stub} function is a function which cannot be implemented on a
+particular machine or operating system. Stub functions always return an
+error, and set @code{errno} to @code{ENOSYS} (Function not implemented).
+@xref{Error Reporting}. If you define a stub function, you must place
+the statement @code{stub_warning(@var{function})}, where @var{function}
+is the name of your function, after its definition; also, you must
+include the file @code{<stub-tag.h>} into your file. This causes the
+function to be listed in the installed @code{<gnu/stubs.h>}, and
+makes GNU ld warn when the function is used.
+
+Some rare functions are only useful on specific systems and aren't
+defined at all on others; these do not appear anywhere in the
+system-independent source code or makefiles (including the
+@file{generic} and @file{stub} directories), only in the
system-dependent @file{Makefile} in the specific system's subdirectory.
If you come across a file that is in one of the main source directories
@table @file
@item generic
-@itemx stub
-As described above (@pxref{Porting}), these are the two subdirectories
+As described above (@pxref{Porting}), this is the subdirectory
that every configuration implicitly uses after all others.
@item ieee754
of the operation is taken as a quiet NaN.
@item Division by Zero
-This exception is raised if the devisor is zero and the dividend is a
+This exception is raised if the divisor is zero and the dividend is a
finite nonzero number. If no trap occurs the result is either
@math{+@infinity{}} or @math{-@infinity{}}, depending on the
signs of the operands.
It is sometimes necessary so save the complete status of the
floating-point unit for a certain time to perform some completely
different actions. Beside the status of the exception flags, the
-control word for the exceptions and the rounding mode can be safed.
+control word for the exceptions and the rounding mode can be saved.
The file @file{fenv.h} defines the type @code{fenv_t}. The layout of a
variable of this type is implementation defined but the variable is able
@cindex Optimization
If an application uses many floating point function it is often the case
-that the costs for the function calls itseld are not neglectable.
+that the costs for the function calls itselfs are not neglectable.
Modern processor implementation often can execute the operation itself
very fast but the call means a disturbance of the control flow.
the range of @code{-1} to @code{1}.
This function is a GNU extension. It should be used whenever both sine
-and cosine are needed but in protable applications there should be a
+and cosine are needed but in portable applications there should be a
fallback method for systems without this function.
@end deftypefun
@comment math.h
@comment ISO
@deftypefun double log (double @var{x})
-@deftypefunx float logf (floatdouble @var{x})
+@deftypefunx float logf (float @var{x})
@deftypefunx {long double} logl (long double @var{x})
These functions return the natural logarithm of @var{x}. @code{exp (log
(@var{x}))} equals @var{x}, exactly in mathematics and approximately in
@cindex complex logarithm functions
@w{ISO C 9X} defines variants of some of the exponentiation and
-logarithm functions. As for the other functions handlung complex
+logarithm functions. As for the other functions handling complex
numbers these functions are perhaps better optimized and provide better
error checking than a direct use of the formulas of the mathematical
definition.
plus two other sets derived from BSD and SVID. We recommend you use the
standard ones, @code{rand} and @code{srand} if only a small number of
random bits are required. The SVID functions provide an interface which
-allows better randon number generator algorithms and they return up to
+allows better random number generator algorithms and they return up to
48 random bits in one calls and they also return random floating-point
numbers if wanted. The SVID function might not be available on some BSD
derived systems but since they are required in the XPG they are
The range of values returned is from @code{0} to @code{RAND_MAX}.
@strong{Please note:} Historically this function returned a @code{long
-int} value. But with the appearence of 64bit machines this could lead
+int} value. But with the appearance of 64bit machines this could lead
to severe compatibility problems and therefore the type now explicitly
limits the return value to 32bit.
@end deftypefun
a previous call to @var{initstate} or @var{setstate}.
The return value is the previous value of the state information array.
-You can use thise value later as an argument to @code{setstate} to
+You can use this value later as an argument to @code{setstate} to
restore that state.
@end deftypefun
@deftypefun void srand48 (long int @var{seedval}))
The @code{srand48} function sets the most significant 32 bits of the
state internal state of the random number generator to the least
-significant 32 bits of the @var{seedval} parameter. The lower 16 bts
-are initilialized to the value @code{0x330E}. Even if the @code{long
+significant 32 bits of the @var{seedval} parameter. The lower 16 bits
+are initialized to the value @code{0x330E}. Even if the @code{long
int} type contains more the 32 bits only the lower 32 bits are used.
Due to this limitation the initialization of the state using this
-function of not very useful. But it makes it easy to use a constrcut
+function of not very useful. But it makes it easy to use a construct
like @code{srand48 (time (0))}.
A side-effect of this function is that the values @code{a} and @code{c}
state if all threads use the functions which take a pointer to an array
containing the state. The random numbers are computed following the
same loop but if the state in the array is different all threads will
-get an individuual random number generator.
+get an individual random number generator.
The user supplied buffer must be of type @code{struct drand48_data}.
This type should be regarded as opaque and no member should be used
@deftypefun int erand48_r (unsigned short int @var{xsubi}[3], struct drand48_data *@var{buffer}, double *@var{result})
The @code{erand48_r} function works like the @code{erand48} and it takes
an argument @var{buffer} which describes the random number generator.
-The state of the random number genertor is taken from the @code{xsubi}
+The state of the random number generator is taken from the @code{xsubi}
array, the parameters for the congruential formula from the global
random number generator data. The random number is return in the
variable pointed to by @var{result}.
@end smallexample
@noindent
-Using any of the reetrant functions of this family now will
+Using any of the reentrant functions of this family now will
automatically initialize the random number generator to the default
values for the state and the parameters of the congruential formula.
@deftypefun int srand48_r (long int @var{seedval}, struct drand48_data *@var{buffer})
The description of the random number generator represented by the
information in @var{buffer} is initialized similar to what the function
-@code{srand48} does. The state is initialized from the paramter
-@var{seedval} and the paameters for the congruential formula are
+@code{srand48} does. The state is initialized from the parameter
+@var{seedval} and the parameters for the congruential formula are
initialized to the default values.
If the return value is non-negative the function call succeeded.
The GNU C Library provides two different sets of functions to support
message translation. The problem is that neither of the interfaces is
officially defined by the POSIX standard. The @code{catgets} family of
-functions is defined in the X/Open standard but this is drived from
-industry decisions and therefore not necessarily is based on reasinable
+functions is defined in the X/Open standard but this is derived from
+industry decisions and therefore not necessarily based on reasonable
decisions.
As mentioned above the message catalog handling provides easy
to find whatever catalog the user wants. This is separated from what
the programmer had in mind.
-All the types, constants and funtions for the @code{catgets} functions
+All the types, constants and functions for the @code{catgets} functions
are defined/declared in the @file{nl_types.h} header file.
@menu
the program influence the decision. It is up to the user to decide
about the language to use and sometimes it is useful to use alternate
catalog files. All this can be specified by the user by setting some
-enviroment variables.
+environment variables.
The first problem is to find out where all the message catalogs are
stored. Every program could have its own place to keep all the
@item %l
(This is the lowercase ell.) This format element is substituted with the
-language element of the locale name. The string decsribing the selected
+language element of the locale name. The string describing the selected
locale is expected to have the form
@code{@var{lang}[_@var{terr}[.@var{codeset}]]} and this format uses the
first part @var{lang}.
@cindex LC_MESSAGES environment variable
@cindex LANG environment variable
Otherwise the values of environment variables from the standard
-environemtn are examined (@pxref{Standard Environment}). Which
+environment are examined (@pxref{Standard Environment}). Which
variables are examined is decided by the @var{flag} parameter of
@code{catopen}. If the value is @code{NL_CAT_LOCALE} (which is defined
in @file{nl_types.h}) then the @code{catopen} function examines the
@item EBADF
The catalog does not exist.
@item ENOMSG
-The set/message touple does not name an existing element in the
+The set/message ttuple does not name an existing element in the
message catalog.
@end table
It is somewhat uncomfortable to write a program using the @code{catgets}
functions if no supporting functionality is available. Since each
-set/message number touple must be unique the programmer must keep lists
+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
store the result in a message catalog file which can be read by the
@code{catopen} function is to write all the message text to the
translator and let her/him translate them all. I.e., we must have a
-file with entries which associate the set/message touple with a specific
+file with entries which associate the set/message tuple with a specific
translation. This file format is specified in the X/Open standard and
is as follows:
By default no quoting character is used. In this mode strings are
terminated with the first unescaped line break. If there is a
@code{$quote} sequence present newline need not be escaped. Instead a
-string is terminated with the first unescaped appearence of the quote
+string is terminated with the first unescaped appearance of the quote
character.
A common usage of this feature would be to set the quote character to
-@code{"}. Then any appearence of the @code{"} in the strings must
+@code{"}. Then any appearance of the @code{"} in the strings must
be escaped using the backslash (i.e., @code{\"} must be written).
@item
two " Message with ID \"two\", which gets the value 2 assigned"
$set SetTwo
-$ Since the last set got the nubmer 1 assigned this set has number 2.
+$ Since the last set got the number 1 assigned this set has number 2.
4000 "The numbers can be arbitrary, they need not start at one."
@end smallexample
message with the identifier @code{two} would loose its leading whitespace.
@item
Mixing numbered messages with message having symbolic names is no
-problem and the numering happens automatically.
+problem and the numbering happens automatically.
@end itemize
parser the file and handle syntactic errors gracefully. This is not so
easy and the whole process is pretty slow. Therefore the @code{catgets}
functions expect the data in another more compact and ready-to-use file
-format. There is a special programm @code{gencat} which is explained in
+format. There is a special program @code{gencat} which is explained in
detail in the next section.
Files in this other format are not human readable. To be easy to use by
Details about the binary file format are not important to know since
these files are always created by the @code{gencat} program. The
sources of the GNU C Library also provide the sources for the
-@code{gencat} program and so the interested reader can look throught
+@code{gencat} program and so the interested reader can look through
these source files to learn about the file format.
The @code{gencat} program works by concatenating all input files and
then @strong{merge} the resulting collection of message sets with a
-possiblity existing output file. This is done by removing all messages
-with set/message number touples matching any of the generated messages
+possibly existing output file. This is done by removing all messages
+with set/message number tuples matching any of the generated messages
from the output file and then adding all the new messages. To
regenerate a catalog file while ignoring the old contents therefore
requires to remove the output file if it exists. If the output is
Since the X/Open format of the message catalog files does not allow
symbol names we have to work with numbers all the time. When we start
-writing a program we have to replace all appearences of translatable
-strings with someting like
+writing a program we have to replace all appearances of translatable
+strings with something like
@smallexample
catgets (catdesc, set, msg, "string")
In a bigger program several programmers usually work at the same time on
the program and so coordinating the number allocation is crucial.
-Though no two different strings must be indexed by the same touple of
-numbers it is highly desireable to reuse the numbers for equal strings
+Though no two different strings must be indexed by the same tuple of
+numbers it is highly desirable to reuse the numbers for equal strings
with equal translations (please note that there might be strings which
are equal in one language but have different translations due to
difference contexts).
Only the user of the program might see wrong messages printed. In the
worst cases the messages are so irritating that they cannot be
recognized as wrong. Think about the translations for @code{"true"} and
-@code{"false"} being exchanged. This could result in a desaster.
+@code{"false"} being exchanged. This could result in a disaster.
@subsubsection Using symbolic names
Here the @var{errno} value is used in the @code{printf} function while
processing the @code{%m} format element and if the @code{gettext}
function would change this value (it is called before @code{printf} is
-called) we wouls get a wrong message.
+called) we would get a wrong message.
So there is no easy way to detect a missing message catalog beside
comparing the argument string with the result. But it is normally the
@code{gettext} since the default value for the domain name is used.
As for @code{gettext} the return value type is @code{char *} which is an
-anachronism. The returned string must never be modfied.
+anachronism. The returned string must never be modified.
@end deftypefun
@deftypefun {char *} dcgettext (const char *@var{domainname}, const char *@var{msgid}, int @var{category})
dealing with messages here and any other choice can only be irritating.
As for @code{gettext} the return value type is @code{char *} which is an
-anachronism. The returned string must never be modfied.
+anachronism. The returned string must never be modified.
@end deftypefun
When using the three functions above in a program it is a frequent case
deterministic.
Exactly this is what the optimizations implemented in the
-@file{libintl.h} header will use. Whenver a program is compiler with
+@file{libintl.h} header will use. Whenever a program is compiler with
the GNU C compiler, optimization is selected and the @var{msgid}
argument to @code{gettext}, @code{dgettext} or @code{dcgettext} is a
constant string the actual function call will only be done the first
@node Locating gettext catalog
@subsubsection How to determine which catalog to be used
-The functions to retrieve the translations for a given mesage have a
+The functions to retrieve the translations for a given message have a
remarkable simple interface. But to provide the user of the program
still the opportunity to select exactly the translation s/he wants and
also to provide the programmer the possibility to influence the way to
should be able to define an precedence order of languages.
@end itemize
-We can devide the configuration actions in two parts: the one is
+We can divide the configuration actions in two parts: the one is
performed by the programmer, the other by the user. We will start with
the functions the programmer can use since the user configuration will
be based on this.
@var{domainname} parameter of these functions is not the null pointer.
Before the first call to @code{textdomain} the default domain is
-@code{messages}. This is the name specified in the fpsecification of
+@code{messages}. This is the name specified in the specification of
the @code{gettext} API. This name is as good as any other name. No
program should ever really use a domain with this name since this can
only lead to problems.
The @code{bindtextdomain} function can be used to specify the directly
which contains the message catalogs for domain @var{domainname} for the
different languages. To be correct, this is the directory where the
-hierachy of directories is expected. Details are explained below.
+hierarchy of directories is expected. Details are explained below.
For the programmer it is important to note that the translations which
-come with the program have be placed in a directory hierachy starting
+come with the program have be placed in a directory hierarchy starting
at, say, @file{/foo/bar}. Then the program should make a
@code{bindtextdomain} call to bind the domain for the current program to
this directory. So it is made sure the catalogs are found. A correctly
variable.
The @code{bindtextdomain} function can be used several times and if the
-@var{domainname} argument is different the previously boundd domains
+@var{domainname} argument is different the previously bounded domains
will not be overwritten.
If the program which wish to use @code{bindtextdomain} at some point of
the message domain that is currently handled the @code{dir_name}
component is the exactly the value which was given to the function as
the second parameter. I.e., @code{bindtextdomain} allows to overwrite
-the only system depdendent and fixed value to make it possible to
+the only system dependent and fixed value to make it possible to
address file everywhere in the filesystem.
The @var{category} is the name of the locale category which was selected
@code{audience}/@code{modifier}
@end enumerate
-From the last entry one can see that the meaning of the @code{modifer}
+From the last entry one can see that the meaning of the @code{modifier}
field in the X/Open format and the @code{audience} format have the same
meaning. Beside one can see that the @code{language} field for obvious
reasons never will be dropped.
Other programs help to manage development cycle when new messages appear
in the source files or when a new translation of the messages appear.
-here it should only be noted that using all the tools in GNu gettext it
+here it should only be noted that using all the tools in GNU gettext it
is possible to @emph{completely} automize the handling of message
catalog. Beside marking the translatable string in the source code and
generating the translations the developers do not have anything to do
@node More Flags for Globbing
@subsection More Flags for Globbing
-Beside the flags descibed in the last section, the GNU implementation of
+Beside the flags described in the last section, the GNU implementation of
@code{glob} allows a few more flags which are also defined in the
@file{glob.h} file. Some of the extensions implement functionality
which is available in modern shell implementations.
expression is completely contained in the outer brace expression (if
there is one).
-The string between the mathing braces is separated into single
+The string between the matching braces is separated into single
expressions by splitting at @code{,} (comma) characters. The commas
themself are discarded. Please note what we said above about recursive
brace expressions. The commas used to separate the subexpressions must
information.
The weakest aspect of this function is that there can be at most one
-hashing table used throught the whole program. The table is allocated
+hashing table used through the whole program. The table is allocated
in local memory out of control of the programmer. As an extension the
GNU C library provides an additional set of functions with an reentrant
interface which provide a similar interface but which allow to keep
It is important to remember that the elements contained in the hashing
table at the time @code{hdestroy} is called are @emph{not} freed by this
function. It is the responsibility of the program code to free those
-strings (if necessary at all). Freeing all the element memory iss not
+strings (if necessary at all). Freeing all the element memory is not
possible without extra, separately kept information since there is no
function to iterate through all available elements in the hashing table.
If it is really necessary to free a table and all elements the
programmer has to keep a list of all table elements and before calling
@code{hdestroy} s/he has to free all element's data using this list.
-This is a very unpleasent mechanism and it also shows that this kind of
+This is a very unpleasant mechanism and it also shows that this kind of
hashing tables is mainly meant for tables which are created once and
used until the end of the program run.
@end deftypefun
@comment search.h
@comment GNU
@deftypefun int hcreate_r (size_t @var{nel}, struct hsearch_data *@var{htab})
-The @code{hcreate_r} function intializes the object pointed to by
+The @code{hcreate_r} function initializes the object pointed to by
@var{htab} to contain a hashing table with at least @var{nel} elements.
So this function is equivalent to the @code{hcreate} function except
that the initialized data structure is controlled by the user.
@deftypefun int hsearch_r (ENTRY @var{item}, ACTION @var{action}, ENTRY **@var{retval}, struct hsearch_data *@var{htab})
The @code{hsearch_r} function is equivalent to @code{hsearch}. The
meaning of the first two arguments is identical. But instead of
-operating on a single global hashing table the functio works on the
+operating on a single global hashing table the function works on the
table described by the object pointed to by @var{htab} (which is
initialized by a call to @code{hcreate_r}).
never exceeded even for input data which cause problems for simple
binary tree implementations.
-The functions desribed in the chapter are all described in the @w{System
+The functions described in the chapter are all described in the @w{System
V} and X/Open specifications and are therefore quite portable.
In contrast to the @code{hsearch} functions the @code{tsearch} functions
@deftypefun {void *} tsearch (const void *@var{key}, void **@var{rootp}, comparison_fn_t @var{compar})
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 wether two elements
+pointed to by @var{compar} is used to determine whether two elements
match. @xref{Comparison Functions} for a specification of the functions
which can be used for the @var{compar} parameter.
`leaf' or `internal node'. For each leaf node the function is called
exactly once, for each internal node it is called three times: before
the first child is processed, after the first child is processed and
-after both childs are processed. This makes it possible to handle all
+after both children are processed. This makes it possible to handle all
three methods of tree traversal (or even a combination of them).
@table @code
called three times, setting the @var{value} parameter or @var{action} to
the appropriate value. The @var{level} argument for the @var{action}
function is computed while descending the tree with increasing the value
-by one for the escend to a child, starting with the value @math{0} for
+by one for the descend to a child, starting with the value @math{0} for
the root node.
Since the functions used for the @var{action} parameter to @code{twalk}
the past.
Here is an example of a handler for @code{SIGCHLD} that compensates for
-the fact that the number of signals recieved may not equal the number of
+the fact that the number of signals received may not equal the number of
child processes generate them. It assumes that the program keeps track
of all the child processes with a chain of structures as follows:
numbers which identify that computer among all those on the Internet.
Users typically write IPv4 numeric host addresses as sequences of four
numbers, separated by periods, as in @samp{128.52.46.32}, and IPv6
-numeric host addresses as sequences of up to eight numbers seperated by
+numeric host addresses as sequences of up to eight numbers separated by
colons, as in @samp{5f03:1200:836f:c100::1}.
Each computer also has one or more @dfn{host names}, which are strings
@cindex LC_MESSAGES environment variable
This specifies what locale to use for printing messages and to parse
-reponses.
+responses.
@item LC_MONETARY
@cindex LC_MONETARY environment variable
@deftypefun int fcloseall (void)
This function causes all open streams of the process to be closed and
the connection to corresponding files to be broken. All buffered data
-is written and any buffered inputis discarded. The @code{fcloseall}
+is written and any buffered input is discarded. The @code{fcloseall}
function returns a value of @code{0} if all the files were closed
successfully, and @code{EOF} if an error was detected.
@item
An optional specification of the parameter used for this format.
Normally the parameters to the @code{printf} function a assigned to the
-formats in the order of appearence in the format string. But in some
+formats in the order of appearance in the format string. But in some
situations (such as message translation) this is not desirable and this
extension allows to specify and explicit parameter to be used.
@w{[@code{-}]@code{0x}@var{h}@code{.}@var{hhh}@code{p}[@code{+}|@code{-}]@var{dd}}.
At the left of the decimal-point character exactly one digit is print.
This character is only @code{0} is the number is denormalized.
-Otherwise the value is unspecifed; it is implemention dependent how many
+Otherwise the value is unspecified; it is implemention dependent how many
bits are used. The number of hexadecimal digits on the right side of
the decimal-point character is equal to the precision. If the precision
is zero it is determined to be large enough to provide an exact
@end smallexample
Here we register the functions to print numbers as powers of 1000 since
-the format character @code{'B'} is an upper-case characeter. If we
+the format character @code{'B'} is an upper-case character. If we
would additionally use @code{'b'} in a line like
@smallexample
@code{fseeko} uses the correct type @code{off_t} for the @var{offset}
parameter.
-For this reasonit is a good idea to prefer @code{ftello} whenever it is
+For this reason it is a good idea to prefer @code{ftello} whenever it is
available since its functionality is (if different at all) closer the
underlying definition.
@comment ISO
@deftypefun void rewind (FILE *@var{stream})
The @code{rewind} function positions the stream @var{stream} at the
-begining of the file. It is equivalent to calling @code{fseek} or
+beginning of the file. It is equivalent to calling @code{fseek} or
@code{fseeko} on the @var{stream} with an @var{offset} argument of
@code{0L} and a @var{whence} argument of @code{SEEK_SET}, except that
the return value is discarded and the error indicator for the stream is
@table @code
@item cookie_read_function_t *read
This is the function that reads data from the cookie. If the value is a
-null pointer instead of a function, then read operations on ths stream
+null pointer instead of a function, then read operations on this stream
always return @code{EOF}.
@item cookie_write_function_t *write
Display the message on the system console.
@end vtable
-The errorneous piece of the system can be signalled by exactly one of the
+The erroneous piece of the system can be signalled by exactly one of the
following values which also is bitwise ORed with the
@var{classification} parameter to @code{fmtmsg}:
@vtable @code
@item MM_APPL
-The errorneous condition is detected by the application.
+The erroneous condition is detected by the application.
@item MM_UTIL
-The errorneous condition is detected by a utility.
+The erroneous condition is detected by a utility.
@item MM_OPSYS
-The errorneous condition is detected by the operating system.
+The erroneous condition is detected by the operating system.
@end vtable
A last component of @var{classification} can signal the results of this
identifies the source of the message. The string should consist of two
colon separated parts where the first part has not more than 10 and the
second part not more the 14 characters. The @var{text} parameter
-descries the condition of the error, the @var{action} parameter possible
+describes the condition of the error, the @var{action} parameter possible
steps to recover from the error and the @var{tag} parameter is a
reference to the online documentation where more information can be
found. It should contain the @var{label} value and a unique
string @var{s} is this length is smaller than @var{maxlen}. Otherwise
it returns @var{maxlen}. Therefore this function is equivalent to
@code{(strlen (@var{s}) < n ? strlen (@var{s}) : @var{maxlen})} but it
-is more efficent.
+is more efficient.
@smallexample
char string[32] = "hello, world";
@comment GNU
@deftypefun {void *} mempcpy (void *@var{to}, const void *@var{from}, size_t @var{size})
The @code{mempcpy} function is nearly identical to the @code{memcpy}
-function. It copies @var{size} byts from the object beginning at
+function. It copies @var{size} bytes from the object beginning at
@code{from} into the object pointed to by @var{to}. But instead of
returning the value of @code{to} it returns a pointer to the byte
following the last written byte in the object beginning at @var{to}.
ignored. How uppercase and lowercase character are related is
determined by the currently selected locale. In the standard @code{"C"}
locale the characters @"A and @"a do not match but in a locale which
-regards this characters as parts of the alphabeth they do match.
+regards this characters as parts of the alphabet they do match.
@code{strcasecmp} is derived from BSD.
@end deftypefun
function. In fact, if @var{s1} and @var{s2} contain no digits,
@code{strverscmp} behaves like @code{strcmp}.
-Basically, we compare strings normaly (character by character), until
+Basically, we compare strings normally (character by character), until
we find a digit in each string - then we enter a special comparison
mode, where each sequence of digit is taken as a whole. If we reach the
end of these two parts without noticing a difference, we return to the
standard comparison mode. There are two types of numeric parts:
-"integral" and "fractionnal" (these laters begins with a '0'). The types
+"integral" and "fractional" (those begin with a '0'). The types
of the numeric parts affect the way we sort them:
@itemize @bullet
integral/integral: we compare values as you would expect.
@item
-fractionnal/integral: the fractionnal part is less than the integral one.
+fractional/integral: the fractional part is less than the integral one.
Again, no surprise.
@item
-fractionnal/fractionnal: the things become a bit more complex.
-if the common prefix contains only leading zeroes, the longest part is less
-than the other one; else the comparison behaves normaly.
+fractional/fractional: the things become a bit more complex.
+If the common prefix contains only leading zeroes, the longest part is less
+than the other one; else the comparison behaves normally.
@end itemize
@smallexample
strverscmp ("item#99", "item#100")
@result{} <0 /* @r{same prefix, but 99 < 100.} */
strverscmp ("alpha1", "alpha001")
- @result{} >0 /* @r{fractionnal part inferior to integral one.} */
+ @result{} >0 /* @r{fractional part inferior to integral one.} */
strverscmp ("part1_f012", "part1_f01")
- @result{} >0 /* @r{two fractionnal parts.} */
+ @result{} >0 /* @r{two fractional parts.} */
strverscmp ("foo.009", "foo.0")
@result{} <0 /* @r{idem, but with leading zeroes only.} */
@end smallexample
-This function is especially usefull when dealing with filename sorting,
+This function is especially useful when dealing with filename sorting,
because filenames frequently hold indices/version numbers.
@code{strverscmp} is a GNU extension.
@{
size_t length = strlen (array[i]) * 2;
char *transformed;
- size_t transformed_lenght;
+ size_t transformed_length;
temp_array[i].input = array[i];
@end deftypefun
As for the @code{localtime} function we have the problem that the result
-is placed ina static variable. POSIX.1c also provides a replacement for
+is placed in a static variable. POSIX.1c also provides a replacement for
@code{gmtime}.
@comment time.h
abbreviation even when it is not the latest one.
Though the strings are declared as @code{char *} the user must stay away
-from modifying these strings. Modying the strings will almost certainly
+from modifying these strings. Modifying the strings will almost certainly
lead to trouble.
@end deftypevar
@subsection Netgroup Data
@cindex Netgroup
-Sometimes it is useful group users according to other criterias like the
+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.
-/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 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
int done;
va_start (arg, format);
- done = vprintf (format, arg);
+ done = vfprintf (stdout, format, arg);
va_end (arg);
return done;
#include <stdarg.h>
#include <stdio.h>
-/* The function `vscanf' is not defined in ISO C. Therefore we must
- use the protected form here. In stdio it is called `__vscanf' and
- in libio `_IO_vscanf'. */
-#ifdef USE_IN_LIBIO
-# include <libioP.h>
-# define VSCANF _IO_vscanf
-#else
-# define VSCANF __vscanf
-#endif
/* Read formatted input from stdin according to the format string FORMAT. */
/* VARARGS1 */
int done;
va_start (arg, format);
- done = VSCANF (format, arg);
+#ifdef USE_IN_LIBIO
+ done = _IO_vfscanf (stdin, format, arg, NULL);
+#else
+ done = vfscanf (stdin, format, arg);
+#endif
va_end (arg);
return done;
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
-ifeq (,$(filter-out $(sysdep_dir)/stub/bits $(common-objpfx)/bits,\
+ifeq (,$(filter-out $(sysdep_dir)/generic/bits $(common-objpfx)/bits,\
$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/endian.h))))))
$(common-objpfx)bytesex.h: $(common-objpfx)det_endian
}
stub_warning (longjmp)
+#include <stub-tag.h>
}
stub_warning (_exit)
+#include <stub-tag.h>
stub_warning (accept)
+#include <stub-tag.h>
stub_warning (access)
weak_alias (__access, access)
+#include <stub-tag.h>
}
stub_warning (acct)
+#include <stub-tag.h>
stub_warning (adjtime)
weak_alias (__adjtime, adjtime)
+#include <stub-tag.h>
stub_warning (alarm)
+#include <stub-tag.h>
stub_warning (bind)
+#include <stub-tag.h>
--- /dev/null
+/* Directory entry structure `struct dirent'. Stub version.
+ Copyright (C) 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+struct dirent
+ {
+ char d_name[1]; /* Variable length. */
+ int d_fileno;
+ };
--- /dev/null
+/* This file specifies the native word size of the machine, which indicates
+ the ELF file class used for executables and shared objects on this
+ machine. */
+
+#define __ELF_NATIVE_CLASS ??
+
+/* This file goes in sysdeps/wordsize-?? and sysdeps/MACHINE/Implies lists
+ wordsize-?? for MACHINE's wordsize. */
--- /dev/null
+/* This file should define __BYTE_ORDER as appropriate for the machine
+ in question. See string/endian.h for how to define it.
+
+ If only the stub bits/endian.h applies to a particular configuration,
+ bytesex.h is generated by running a program on the host machine.
+ So if cross-compiling to a machine with a different byte order,
+ the bits/endian.h file for that machine must exist. */
+
+#error Machine byte order unknown.
--- /dev/null
+/* Copyright (C) 1991, 1994, 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
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* This file defines the `errno' constants. */
+
+#if !defined(__Emath_defined) && (defined(_ERRNO_H) || defined(__need_Emath))
+#undef __need_Emath
+#define __Emath_defined 1
+
+#define EDOM 1
+#define ERANGE 2
+#endif
+
+#ifdef _ERRNO_H
+#define ENOSYS 3
+#define EINVAL 4
+#define ESPIPE 5
+#define EBADF 6
+#define ENOMEM 7
+#define EACCES 8
+#define ENFILE 9
+#define EMFILE 10
+#endif
+
+#define __set_errno(val) errno = (val)
--- /dev/null
+/* O_*, F_*, FD_* bit values for stub configuration.
+ Copyright (C) 1991, 1992, 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
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* These values should be changed as appropriate for your system. */
+
+#ifndef _FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
+
+
+/* File access modes for `open' and `fcntl'. */
+#define O_RDONLY 0 /* Open read-only. */
+#define O_WRONLY 1 /* Open write-only. */
+#define O_RDWR 2 /* Open read/write. */
+
+
+/* Bits OR'd into the second argument to open. */
+#define O_CREAT 0x0200 /* Create file if it doesn't exist. */
+#define O_EXCL 0x0800 /* Fail if file already exists. */
+#define O_TRUNC 0x0400 /* Truncate file to zero length. */
+#define O_NOCTTY 0x0100 /* Don't assign a controlling terminal. */
+
+/* File status flags for `open' and `fcntl'. */
+#define O_APPEND 0x0008 /* Writes append to the file. */
+#define O_NONBLOCK 0x0004 /* Non-blocking I/O. */
+
+#ifdef __USE_BSD
+#define O_NDELAY O_NONBLOCK
+#endif
+
+/* Mask for file access modes. This is system-dependent in case
+ some system ever wants to define some other flavor of access. */
+#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
+
+/* Values for the second argument to `fcntl'. */
+#define F_DUPFD 0 /* Duplicate file descriptor. */
+#define F_GETFD 1 /* Get file descriptor flags. */
+#define F_SETFD 2 /* Set file descriptor flags. */
+#define F_GETFL 3 /* Get file status flags. */
+#define F_SETFL 4 /* Set file status flags. */
+#ifdef __USE_BSD
+#define F_GETOWN 5 /* Get owner (receiver of SIGIO). */
+#define F_SETOWN 6 /* Set owner (receiver of SIGIO). */
+#endif
+#define F_GETLK 7 /* Get record locking info. */
+#define F_SETLK 8 /* Set record locking info. */
+#define F_SETLKW 9 /* Set record locking info, wait. */
+
+/* File descriptor flags used with F_GETFD and F_SETFD. */
+#define FD_CLOEXEC 1 /* Close on exec. */
+
+
+#include <bits/types.h>
+
+/* The structure describing an advisory lock. This is the type of the third
+ argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests. */
+struct flock
+ {
+ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
+ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
+ __off_t l_start; /* Offset where the lock begins. */
+ __off_t l_len; /* Size of the locked area; zero means until EOF. */
+ __pid_t l_pid; /* Process holding the lock. */
+ };
+
+/* Values for the `l_type' field of a `struct flock'. */
+#define F_RDLCK 1 /* Read lock. */
+#define F_WRLCK 2 /* Write lock. */
+#define F_UNLCK 3 /* Remove lock. */
--- /dev/null
+/* Copyright (C) 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
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _FENV_H
+#error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
+#endif
+
+
+/* Here should be the exception be defined:
+ FE_INVALID
+ FE_DIVBYZERO
+ FE_OVERFLOW
+ FE_UNDERFLOW
+ FE_INEXACT
+ We define no macro which signals no exception is supported. */
+
+#define FE_ALL_EXCEPT 0
+
+
+/* Here should the rounding modes be defined:
+ FE_TONEAREST
+ FE_DOWNWARD
+ FE_UPWARD
+ FE_TOWARDSZERO
+ We define no macro which signals no rounding mode is selectable. */
+
+
+/* Type representing exception flags.
+ XXX Probably we should also include the signal handler here. */
+typedef struct
+ {
+ unsigned int flags;
+ }
+fexcept_t;
+
+
+/* Type representing floating-point environment. */
+typedef struct
+ {
+ fexcept_t excepts;
+ /* XXX I don't know what else we should save. */
+ }
+fenv_t;
+
+/* If the default argument is used we use this value. */
+#define FE_DFL_ENV ((fenv_t *) -1l)
--- /dev/null
+/* Stub `HUGE_VAL' constant.
+ Used by <stdlib.h> and <math.h> functions for overflow.
+ Copyright (C) 1992, 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _MATH_H
+#error "Never use <bits/huge_val.h> directly; include <math.h> instead."
+#endif
+
+
+#define HUGE_VAL 1e37
--- /dev/null
+/* This space intentionally left blank. */
--- /dev/null
+/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_IPC_BUF_H
+
+#define _SYS_IPC_BUF_H 1
+#include <features.h>
+
+#include <sys/types.h>
+
+/* Mode bits for `msgget', `semget', and `shmget'. */
+#define IPC_CREAT 01000 /* create key if key does not exist */
+#define IPC_EXCL 02000 /* fail if key exists */
+#define IPC_NOWAIT 04000 /* return error on wait */
+
+/* Control commands for `msgctl', `semctl', and `shmctl'. */
+#define IPC_RMID 0 /* remove identifier */
+#define IPC_SET 1 /* set `ipc_perm' options */
+#define IPC_STAT 2 /* get `ipc_perm' options */
+
+
+__BEGIN_DECLS
+
+/* Special key values. */
+#define IPC_PRIVATE ((key_t) 0) /* private key */
+
+
+/* Data structure used to pass permission information to IPC operations. */
+struct ipc_perm
+{
+ __uid_t uid; /* owner's user ID */
+ __gid_t gid; /* owner's group ID */
+ __uid_t cuid; /* creator's user ID */
+ __gid_t cgid; /* creator's group ID */
+ __mode_t mode; /* read/write permission */
+};
+
+__END_DECLS
+
+#endif /* _SYS_IPC_BUF_H */
--- /dev/null
+/* libc-internal interface for mutex locks. Stub version.
+ 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
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _BITS_LIBC_LOCK_H
+#define _BITS_LIBC_LOCK_H 1
+
+
+/* Define a lock variable NAME with storage class CLASS. The lock must be
+ initialized with __libc_lock_init before it can be used (or define it
+ with __libc_lock_define_initialized, below). Use `extern' for CLASS to
+ declare a lock defined in another module. In public structure
+ definitions you must use a pointer to the lock structure (i.e., NAME
+ begins with a `*'), because its storage size will not be known outside
+ of libc. */
+#define __libc_lock_define(CLASS,NAME)
+
+/* Define an initialized lock variable NAME with storage class CLASS. */
+#define __libc_lock_define_initialized(CLASS,NAME)
+
+/* Define an initialized recursive lock variable NAME with storage
+ class CLASS. */
+#define __libc_lock_define_initialized_recursive(CLASS,NAME)
+
+/* Initialize the named lock variable, leaving it in a consistent, unlocked
+ state. */
+#define __libc_lock_init(NAME)
+
+/* Same as last but this time we initialize a recursive mutex. */
+#define __libc_lock_init_recursive(NAME)
+
+/* Finalize the named lock variable, which must be locked. It cannot be
+ used again until __libc_lock_init is called again on it. This must be
+ called on a lock variable before the containing storage is reused. */
+#define __libc_lock_fini(NAME)
+
+/* Finalize recursive named lock. */
+#define __libc_lock_fini_recursive(NAME)
+
+/* Lock the named lock variable. */
+#define __libc_lock_lock(NAME)
+
+/* Lock the recursive named lock variable. */
+#define __libc_lock_lock_recursive(NAME)
+
+/* Try to lock the named lock variable. */
+#define __libc_lock_trylock(NAME) 0
+
+/* Try to lock the recursive named lock variable. */
+#define __libc_lock_trylock_recursive(NAME) 0
+
+/* Unlock the named lock variable. */
+#define __libc_lock_unlock(NAME)
+
+/* Unlock the recursive named lock variable. */
+#define __libc_lock_unlock_recursive(NAME)
+
+
+/* Define once control variable. */
+#define __libc_once_define(CLASS, NAME) CLASS int NAME = 0
+
+/* Call handler iff the first call. */
+#define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
+ do { \
+ if ((ONCE_CONTROL) == 0) { \
+ INIT_FUNCTION (); \
+ (ONCE_CONTROL) = 1; \
+ } \
+ } while (0)
+
+
+/* Start critical region with cleanup. */
+#define __libc_cleanup_region_start(FCT, ARG)
+
+/* End critical region with cleanup. */
+#define __libc_cleanup_region_end(DOIT)
+
+
+/* We need portable names for some of the functions. */
+#define __libc_mutex_unlock
+
+/* Type for key of thread specific data. */
+typedef int __libc_key_t;
+
+/* Create key for thread specific data. */
+#define __libc_key_create(KEY,DEST) -1
+
+/* Set thread-specific data associated with KEY to VAL. */
+#define __libc_setspecific(KEY,VAL) -1
+
+/* Get thread-specific data associated with KEY. */
+#define __libc_getspecific(KEY) 0
+
+#endif /* bits/libc-lock.h */
--- /dev/null
+/* This file should define the implementation-specific limits described
+ in posix[12]_lim.h. If there are no useful values to give a limit,
+ don't define it. */
--- /dev/null
+/* This file should provide inline versions of math functions.
+
+ Surround GCC-specific parts with #ifdef __GNUC__, and use `extern __inline'.
+
+ This file should define __MATH_INLINES if functions are actually defined as
+ inlines. */
+
+#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
+
+/* Here goes the real code. */
+
+#endif
--- /dev/null
+/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_MSG_H
+#error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
+#endif
+
+
+#include <features.h>
+#include <sys/types.h>
+
+/* Define options for message queue functions. */
+#define MSG_NOERROR 010000 /* no error if message is too big */
+
+__BEGIN_DECLS
+
+/* Structure of record for one message inside the kernel.
+ The type `struct __msg' is opaque. */
+struct msqid_ds
+{
+ struct ipc_perm msg_perm; /* structure describing operation permission */
+ __time_t msg_stime; /* time of last msgsnd command */
+ __time_t msg_rtime; /* time of last msgrcv command */
+ __time_t msg_ctime; /* time of last change */
+ unsigned short int msg_qnum; /* number of messages currently on queue */
+ unsigned short int msg_qbytes;/* max number of bytes allowed on queue */
+ __pid_t msg_lspid; /* pid of last msgsnd() */
+ __pid_t msg_lrpid; /* pid of last msgrcv() */
+};
+
+__END_DECLS
--- /dev/null
+#ifndef _MATH_H
+#error "Never use <bits/nan.h> directly; include <math.h> instead."
+#endif
+
+/* This file should define `NAN' on machines that have such things. */
--- /dev/null
+/* This file should define the POSIX options described in <unistd.h>,
+ or leave them undefined, as appropriate. */
--- /dev/null
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_SEM_H
+#error "Never use <bits/sem.h> directly; include <sys/sem.h> instead."
+#endif
+
+
+#include <features.h>
+#include <sys/types.h>
+
+/* Flags for `semop'. */
+#define SEM_UNDO 0x1000 /* undo the operation on exit */
+
+/* Commands for `semctl'. */
+#define GETPID 11 /* get sempid */
+#define GETVAL 12 /* get semval */
+#define GETALL 13 /* get all semval's */
+#define GETNCNT 14 /* get semncnt */
+#define GETZCNT 15 /* get semzcnt */
+#define SETVAL 16 /* set semval */
+#define SETALL 17 /* set all semval's */
+
+
+__BEGIN_DECLS
+
+/* Data structure describing a set of semaphores. */
+struct semid_ds
+{
+ struct ipc_perm sem_perm; /* operation permission struct */
+ __time_t sem_otime; /* last semop() time */
+ __time_t sem_ctime; /* last time changed by semctl() */
+ unsigned short int sem_nsems; /* number of semaphores in set */
+};
+
+/* Union used for argument for `semctl'. */
+union semun
+{
+ int val; /* value for SETVAL */
+ struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
+ unsigned short int *array; /* array for GETALL & SETALL */
+ struct seminfo *__buf; /* buffer for IPC_INFO */
+ };
+
+__END_DECLS
--- /dev/null
+/* Define the machine-dependent type `jmp_buf'. Stub version. */
+
+typedef int __jmp_buf[1];
--- /dev/null
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_SHM_H
+#error "Never use <bits/shm.h> directly; include <sys/shm.h> instead."
+#endif
+
+
+#include <features.h>
+#include <sys/types.h>
+
+/* Flags for `shmat'. */
+#define SHM_RDONLY 010000 /* attach read-only else read-write */
+#define SHM_RND 020000 /* round attach address to SHMLBA */
+#define SHM_REMAP 040000 /* take-over region on attach */
+
+/* Commands for `shmctl'. */
+#define SHM_LOCK 11 /* lock segment (root only) */
+#define SHM_UNLOCK 12 /* unlock segment (root only) */
+
+
+__BEGIN_DECLS
+
+/* Data structure describing a set of semaphores. */
+struct shmid_ds
+{
+ struct ipc_perm sem_perm; /* operation permission struct */
+ int shm_segsz; /* size of segment in bytes */
+ __time_t sem_atime; /* time of last shmat() */
+ __time_t sem_dtime; /* time of last shmdt() */
+ __time_t sem_ctime; /* time of last change by shmctl() */
+ __pid_t shm_cpid; /* pid of creator */
+ __pid_t shm_lpid; /* pid of last shmop */
+ unsigned short int shm_nattch; /* number of current attaches */
+};
+
+__END_DECLS
--- /dev/null
+/* Structure describing state saved while handling a signal. Stub version.
+ Copyright (C) 1991, 1994, 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
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* State of this thread when the signal was taken. */
+struct sigcontext
+ {
+ int sc_onstack;
+ __sigset_t sc_mask;
+
+ /* Registers and such. */
+ };
+
+/* Signal subcodes should be defined here. */
--- /dev/null
+/* Copyright (C) 1991, 1993, 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifdef _SIGNAL_H
+
+/* Fake signal functions. */
+extern void _sig_ign __P ((int sig));
+extern void _sig_dfl __P ((int sig));
+
+#define SIG_ERR ((__sighandler_t) 0) /* Error return. */
+#define SIG_DFL _sig_dfl /* Default action. */
+#define SIG_IGN _sig_ign /* Ignore signal. */
+
+
+/* ANSI signals. */
+#define SIGABRT 1 /* Abnormal termination. */
+#define SIGFPE 2 /* Erroneous arithmetic operation. */
+#define SIGILL 3 /* Illegal instruction. */
+#define SIGINT 3 /* Interactive attention signal. */
+#define SIGSEGV 4 /* Invalid access to storage. */
+#define SIGTERM 5 /* Termination request. */
+
+/* POSIX signals. */
+#define SIGHUP 6 /* Hangup. */
+#define SIGQUIT 7 /* Quit. */
+#define SIGPIPE 8 /* Broken pipe. */
+#define SIGKILL 9 /* Kill (cannot be blocked, caught, or ignored). */
+#define SIGALRM 10 /* Alarm clock. */
+#define SIGSTOP 11 /* Stop (cannot be blocked, caught, or ignored). */
+#define SIGTSTP 12 /* Keyboard stop. */
+#define SIGCONT 13 /* Continue. */
+#define SIGCHLD 14 /* Child terminated or stopped. */
+#define SIGTTIN 15 /* Background read from control terminal. */
+#define SIGTTOU 16 /* Background write to control terminal. */
+
+#endif /* <signal.h> included. */
+
+#define _NSIG 17
--- /dev/null
+/* Copyright (C) 1992, 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
+
+/* This structure needs to be defined in accordance with the
+ implementation of __stat, __fstat, and __lstat. */
+
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H 1
+
+#include <bits/types.h>
+
+/* Structure describing file characteristics. */
+struct stat
+ {
+ /* These are the members that POSIX.1 requires. */
+
+ __mode_t st_mode; /* File mode. */
+ __ino_t st_ino; /* File serial number. */
+ __dev_t st_dev; /* Device containing the file. */
+ __nlink_t st_nlink; /* Link count. */
+
+ __uid_t st_uid; /* User ID of the file's owner. */
+ __gid_t st_gid; /* Group ID of the file's group. */
+ __off_t st_size; /* Size of file, in bytes. */
+
+ __time_t st_atime; /* Time of last access. */
+ __time_t st_mtime; /* Time of last modification. */
+ __time_t st_ctime; /* Time of last status change. */
+
+ /* This should be defined if there is a `st_blksize' member. */
+#undef _STATBUF_ST_BLKSIZE
+ };
+
+/* Encoding of the file mode. These are the standard Unix values,
+ but POSIX.1 does not specify what values should be used. */
+
+#define __S_IFMT 0170000 /* These bits determine file type. */
+
+/* File types. */
+#define __S_IFDIR 0040000 /* Directory. */
+#define __S_IFCHR 0020000 /* Character device. */
+#define __S_IFBLK 0060000 /* Block device. */
+#define __S_IFREG 0100000 /* Regular file. */
+#define __S_IFIFO 0010000 /* FIFO. */
+
+/* Protection bits. */
+
+#define __S_ISUID 04000 /* Set user ID on execution. */
+#define __S_ISGID 02000 /* Set group ID on execution. */
+#define __S_IREAD 0400 /* Read by owner. */
+#define __S_IWRITE 0200 /* Write by owner. */
+#define __S_IEXEC 0100 /* Execute by owner. */
+
+
+#endif /* bits/stat.h */
--- /dev/null
+/* This file should provide inline versions of string functions.
+
+ Surround GCC-specific parts with #ifdef __GNUC__, and use `extern __inline'.
+
+ This file should define __STRING_INLINES if functions are actually defined
+ as inlines. */
+
+#ifndef _BITS_STRING_H
+#define _BITS_STRING_H 1
+
+
+#endif /* bits/string.h */
--- /dev/null
+/* System-dependent timing definitions. Stub version.
+ 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
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/*
+ * Never include this file directly; use <time.h> instead.
+ */
+
+#ifdef __need_timeval
+# undef __need_timeval
+# ifndef _STRUCT_TIMEVAL
+# define _STRUCT_TIMEVAL 1
+/* A time value that is accurate to the nearest
+ microsecond but also has a range of years. */
+struct timeval
+ {
+ time_t tv_sec; /* Seconds. */
+ time_t tv_usec; /* Microseconds. */
+ };
+# endif /* struct timeval */
+#endif /* need timeval */
+
+
+#ifndef _BITS_TIME_H
+#define _BITS_TIME_H 1
+
+#define CLOCKS_PER_SEC 60
+
+#endif /* bits/time.h */
--- /dev/null
+/* Definitions of flag bits for `waitpid' et al.
+ Copyright (C) 1992, 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
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_WAIT_H
+#error "Never use <bits/waitflags.h> directly; include <sys/wait.h> instead."
+#endif
+
+
+/* Bits in the third argument to `waitpid'. */
+#define WNOHANG 1 /* Don't block waiting. */
+#define WUNTRACED 2 /* Report status of stopped children. */
stub_warning (brk)
weak_alias (__brk, brk)
+#include <stub-tag.h>
stub_warning (chdir)
weak_alias (__chdir, chdir)
+#include <stub-tag.h>
}
stub_warning (chflags)
+#include <stub-tag.h>
stub_warning (chmod)
weak_alias (__chmod, chmod)
+#include <stub-tag.h>
stub_warning (chown)
weak_alias (__chown, chown)
+#include <stub-tag.h>
stub_warning (chroot)
+#include <stub-tag.h>
}
stub_warning (clock)
+#include <stub-tag.h>
stub_warning (close)
weak_alias (__close, close)
+#include <stub-tag.h>
weak_alias (__closedir, closedir)
stub_warning (closedir)
+#include <stub-tag.h>
weak_alias (__connect, connect)
stub_warning (connect)
+#include <stub-tag.h>
stub_warning (ctermid)
+#include <stub-tag.h>
stub_warning (cuserid)
+#include <stub-tag.h>
}
stub_warning (_des_crypt)
+#include <stub-tag.h>
}
stub_warning (dirfd)
+#include <stub-tag.h>
stub_warning (dup)
weak_alias (__dup, dup)
+#include <stub-tag.h>
stub_warning (dup2)
weak_alias (__dup2, dup2)
+#include <stub-tag.h>
}
stub_warning (__ieee754_acoshl)
+#include <stub-tag.h>
}
stub_warning (__ieee754_acosl)
+#include <stub-tag.h>
}
stub_warning (__ieee754_asinl)
+#include <stub-tag.h>
}
stub_warning (__ieee754_atan2l)
+#include <stub-tag.h>
}
stub_warning (__ieee754_expl)
+#include <stub-tag.h>
}
stub_warning (__ieee754_fmodl)
+#include <stub-tag.h>
}
stub_warning (__ieee754_y0l)
+#include <stub-tag.h>
}
stub_warning (__ieee754_y1l)
+#include <stub-tag.h>
}
stub_warning (__ieee754_ynl)
+#include <stub-tag.h>
}
stub_warning (__ieee754_lgammal_r)
+#include <stub-tag.h>
}
stub_warning (__ieee754_log10l)
+#include <stub-tag.h>
}
stub_warning (__ieee754_logl)
+#include <stub-tag.h>
}
stub_warning (__ieee754_powl)
+#include <stub-tag.h>
}
stub_warning (__ieee754_rem_pio2l)
+#include <stub-tag.h>
}
stub_warning (__ieee754_sqrtl)
+#include <stub-tag.h>
}
weak_alias (__euidaccess, euidaccess)
stub_warning (euidaccess)
+#include <stub-tag.h>
stub_warning (execve)
weak_alias (__execve, execve)
+#include <stub-tag.h>
}
stub_warning (fchdir)
+#include <stub-tag.h>
}
stub_warning (fchflags)
+#include <stub-tag.h>
stub_warning (fchmod)
weak_alias (__fchmod, fchmod)
+#include <stub-tag.h>
stub_warning (fchown)
weak_alias (__fchown, fchown)
+#include <stub-tag.h>
{
}
stub_warning (feclearexcept)
+#include <stub-tag.h>
stub_warning (fcntl)
weak_alias (__fcntl, fcntl)
+#include <stub-tag.h>
}
stub_warning (fdopen)
+#include <stub-tag.h>
{
}
stub_warning (fegetenv)
+#include <stub-tag.h>
return 0;
}
stub_warning (fegetround)
+#include <stub-tag.h>
return 0; /* Signal failure. */
}
stub_warning (feholdexcept)
+#include <stub-tag.h>
{
}
stub_warning (fesetenv)
+#include <stub-tag.h>
return 0; /* Signal we are unable to set the direction. */
}
stub_warning (fesetround)
+#include <stub-tag.h>
{
}
stub_warning (feupdateenv)
+#include <stub-tag.h>
}
stub_warning (fexecve)
+#include <stub-tag.h>
{
}
stub_warning (fegetexceptflag)
+#include <stub-tag.h>
weak_alias (__flock, flock)
stub_warning (flock)
+#include <stub-tag.h>
stub_warning (fork)
weak_alias (__fork, fork)
+#include <stub-tag.h>
weak_alias (__fpathconf, fpathconf)
stub_warning (fpathconf)
+#include <stub-tag.h>
{
}
stub_warning (feraiseexcept)
+#include <stub-tag.h>
{
}
stub_warning (fesetexceptflag)
+#include <stub-tag.h>
stub_warning (fstatfs)
weak_alias (__fstatfs, fstatfs)
+#include <stub-tag.h>
return -1;
}
stub_warning (fstatfs64)
+#include <stub-tag.h>
stub_warning (fsync)
+#include <stub-tag.h>
return 0;
}
stub_warning (fetestexcept)
+#include <stub-tag.h>
}
stub_warning (ftruncate)
+#include <stub-tag.h>
stub_warning (fstat)
weak_alias (__fxstat, _fxstat)
+#include <stub-tag.h>
return -1;
}
stub_warning (fstat64)
+#include <stub-tag.h>
/* Nothing. */
}
stub_warning (freeaddrinfo)
+#include <stub-tag.h>
stub_warning (__getcwd)
stub_warning (getcwd)
+#include <stub-tag.h>
weak_alias (__getdirentries, getdirentries)
stub_warning (getdirentries)
+#include <stub-tag.h>
}
stub_warning (getdomainname)
+#include <stub-tag.h>
#endif
stub_warning (getdtablesize)
weak_alias (__getdtablesize, getdtablesize)
+#include <stub-tag.h>
stub_warning (getegid)
weak_alias (__getegid, getegid)
+#include <stub-tag.h>
stub_warning (geteuid)
weak_alias (__geteuid, geteuid)
+#include <stub-tag.h>
stub_warning (getgid)
weak_alias (__getgid, getgid)
+#include <stub-tag.h>
#endif
weak_alias (__getgroups, getgroups)
+#include <stub-tag.h>
stub_warning (gethostid)
+#include <stub-tag.h>
stub_warning (gethostname)
weak_alias (__gethostname, gethostname)
+#include <stub-tag.h>
stub_warning (getitimer)
weak_alias (__getitimer, getitimer)
+#include <stub-tag.h>
}
stub_warning (getlogin)
+#include <stub-tag.h>
}
stub_warning (getlogin_r)
+#include <stub-tag.h>
stub_warning (getpagesize)
weak_alias (__getpagesize, getpagesize)
+#include <stub-tag.h>
stub_warning (getpeername)
+#include <stub-tag.h>
weak_alias (__getpgid, getpgid)
stub_warning (getpgid)
+#include <stub-tag.h>
stub_warning (getpid)
weak_alias (__getpid, getpid)
+#include <stub-tag.h>
stub_warning (getppid)
weak_alias (__getppid, getppid)
+#include <stub-tag.h>
}
stub_warning (getpriority)
+#include <stub-tag.h>
weak_alias (__getrlimit, getrlimit)
stub_warning (getrlimit)
+#include <stub-tag.h>
}
stub_warning (getrlimit64)
+#include <stub-tag.h>
stub_warning (getrusage)
weak_alias (__getrusage, getrusage)
+#include <stub-tag.h>
return (pid_t) -1;
}
stub_warning (getsid)
+#include <stub-tag.h>
stub_warning (getsockname)
+#include <stub-tag.h>
}
stub_warning (getsockopt)
+#include <stub-tag.h>
weak_alias (__get_avphys_pages, get_avphys_pages)
stub_warning (get_avphys_pages)
+#include <stub-tag.h>
stub_warning (gettimeofday)
weak_alias (__gettimeofday, gettimeofday)
+#include <stub-tag.h>
stub_warning (getuid)
weak_alias (__getuid, getuid)
+#include <stub-tag.h>
}
stub_warning (gtty)
+#include <stub-tag.h>
return NULL;
}
stub_warning (if_nameindex)
+#include <stub-tag.h>
stub_warning (ioctl)
weak_alias (__ioctl, ioctl)
+#include <stub-tag.h>
weak_alias (__isatty, isatty)
stub_warning (isatty)
+#include <stub-tag.h>
return -1;
}
stub_warning (isfdtype)
+#include <stub-tag.h>
}
stub_warning (__kernel_cosl)
+#include <stub-tag.h>
}
stub_warning (__kernel_rem_pio2l)
+#include <stub-tag.h>
}
stub_warning (__kernel_sinl)
+#include <stub-tag.h>
}
stub_warning (__kernel_tanl)
+#include <stub-tag.h>
stub_warning (kill)
weak_alias (__kill, kill)
+#include <stub-tag.h>
}
stub_warning (killpg)
+#include <stub-tag.h>
stub_warning (lchown)
weak_alias (__lchown, lchown)
+#include <stub-tag.h>
stub_warning (link)
weak_alias (__link, link)
+#include <stub-tag.h>
stub_warning (listen)
+#include <stub-tag.h>
stub_warning (lseek)
weak_alias (__lseek, lseek)
+#include <stub-tag.h>
return -1;
}
stub_warning (lseek64)
+#include <stub-tag.h>
return -1;
}
stub_warning (lstat64)
+#include <stub-tag.h>
for the region starting at ADDR and extending LEN bytes. */
int
-madvise (caddr_t addr, size_t len, int advice)
+madvise (__ptr_t addr, size_t len, int advice)
{
__set_errno (ENOSYS);
return -1;
}
stub_warning (madvise)
+#include <stub-tag.h>
stub_warning (mkdir)
weak_alias (__mkdir, mkdir)
+#include <stub-tag.h>
stub_warning (mkfifo)
+#include <stub-tag.h>
}
stub_warning (mkstemp)
+#include <stub-tag.h>
}
stub_warning (mktemp)
+#include <stub-tag.h>
is nonzero, it is the desired mapping address. If the MAP_FIXED bit is
set in FLAGS, the mapping will be at ADDR exactly (which must be
page-aligned); otherwise the system chooses a convenient nearby address.
- The return value is the actual mapping address chosen or (caddr_t) -1
+ The return value is the actual mapping address chosen or MAP_FAILED
for errors (in which case `errno' is set). A successful `mmap' call
deallocates any previous mapping for the affected region. */
-caddr_t
-__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+__ptr_t
+__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
{
__set_errno (ENOSYS);
- return (caddr_t) -1;
+ return MAP_FAILED;
}
stub_warning (mmap)
+#include <stub-tag.h>
weak_alias (__mmap, mmap)
(and sets errno). */
int
-__mprotect (caddr_t addr, size_t len, int prot)
+__mprotect (__ptr_t addr, size_t len, int prot)
{
__set_errno (ENOSYS);
return -1;
weak_alias (__mprotect, mprotect)
stub_warning (mprotect)
+#include <stub-tag.h>
}
stub_warning (msgctl)
+#include <stub-tag.h>
}
stub_warning (msgget)
+#include <stub-tag.h>
}
stub_warning (msgrcv)
+#include <stub-tag.h>
}
stub_warning (msgsnd)
+#include <stub-tag.h>
unpredictable before this is done. */
int
-msync (caddr_t addr, size_t len, int flags)
+msync (__ptr_t addr, size_t len, int flags)
{
__set_errno (ENOSYS);
return -1;
}
stub_warning (msync)
+#include <stub-tag.h>
bytes. Returns 0 if successful, -1 for errors (and sets errno). */
int
-__munmap (caddr_t addr, size_t len)
+__munmap (__ptr_t addr, size_t len)
{
__set_errno (ENOSYS);
return -1;
}
stub_warning (munmap)
+#include <stub-tag.h>
weak_alias (__munmap, munmap)
weak_alias (__libc_nanosleep, __nanosleep)
weak_alias (__libc_nanosleep, nanosleep)
+#include <stub-tag.h>
}
stub_warning (nice)
+#include <stub-tag.h>
stub_warning (nlist)
+#include <stub-tag.h>
stub_warning (open)
weak_alias (__open, open)
+#include <stub-tag.h>
weak_alias (__open64, open64)
stub_warning (open64)
+#include <stub-tag.h>
weak_alias (__opendir, opendir)
stub_warning (opendir)
+#include <stub-tag.h>
weak_alias (__pathconf, pathconf)
stub_warning (pathconf)
+#include <stub-tag.h>
}
stub_warning (pause)
+#include <stub-tag.h>
stub_warning (pipe)
weak_alias (__pipe, pipe)
+#include <stub-tag.h>
stub_warning (popen)
stub_warning (pclose)
+#include <stub-tag.h>
}
stub_warning (poll)
+#include <stub-tag.h>
return -1;
}
stub_warning (pread)
+#include <stub-tag.h>
return -1;
}
stub_warning (pread64)
+#include <stub-tag.h>
}
weak_alias (__profil, profil)
stub_warning (profil)
+#include <stub-tag.h>
stub_warning (ptrace)
+#include <stub-tag.h>
return -1;
}
stub_warning (pwrite)
+#include <stub-tag.h>
return -1;
}
stub_warning (pwrite64)
+#include <stub-tag.h>
stub_warning (raise)
stub_warning (gsignal)
+#include <stub-tag.h>
weak_alias (__libc_read, __read)
weak_alias (__libc_read, read)
+#include <stub-tag.h>
weak_alias (__readdir, readdir)
stub_warning (readdir)
+#include <stub-tag.h>
return NULL;
}
stub_warning (readdir64)
+#include <stub-tag.h>
return -1;
}
stub_warning (readdir64_r)
+#include <stub-tag.h>
weak_alias (__readdir_r, readdir_r)
stub_warning (readdir_r)
+#include <stub-tag.h>
stub_warning (readlink)
weak_alias (__readlink, readlink)
+#include <stub-tag.h>
weak_alias (__readv, readv)
stub_warning (readv)
+#include <stub-tag.h>
stub_warning (reboot)
+#include <stub-tag.h>
stub_warning (recv)
+#include <stub-tag.h>
}
stub_warning (recvfrom)
+#include <stub-tag.h>
}
stub_warning (recvmsg)
+#include <stub-tag.h>
}
stub_warning (remove)
+#include <stub-tag.h>
stub_warning (rename)
+#include <stub-tag.h>
return -1;
}
stub_warning (revoke)
+#include <stub-tag.h>
stub_warning (rewinddir)
+#include <stub-tag.h>
stub_warning (rmdir)
weak_alias (__rmdir, rmdir)
+#include <stub-tag.h>
weak_alias (__atanl, atanl)
stub_warning (atanl)
+#include <stub-tag.h>
weak_alias (__erfcl, erfcl)
stub_warning (erfcl)
+#include <stub-tag.h>
weak_alias (__exp2, exp2)
stub_warning (exp2)
+#include <stub-tag.h>
weak_alias (__exp2f, exp2f)
stub_warning (exp2f)
+#include <stub-tag.h>
weak_alias (__exp2l, exp2l)
stub_warning (exp2l)
+#include <stub-tag.h>
weak_alias (__expm1l, expm1l)
stub_warning (expm1l)
+#include <stub-tag.h>
weak_alias (__log1pl, log1pl)
stub_warning (log1pl)
+#include <stub-tag.h>
weak_alias (__log2l, log2l)
stub_warning (log2l)
+#include <stub-tag.h>
stub_warning (sched_getparam)
weak_alias (__sched_getparam, sched_getparam)
+#include <stub-tag.h>
stub_warning (sched_getscheduler)
weak_alias (__sched_getscheduler, sched_getscheduler)
+#include <stub-tag.h>
stub_warning (sched_get_priority_max)
weak_alias (__sched_get_priority_max, sched_get_priority_max)
+#include <stub-tag.h>
stub_warning (sched_get_priority_min)
weak_alias (__sched_get_priority_min, sched_get_priority_min)
+#include <stub-tag.h>
stub_warning (sched_rr_get_interval)
weak_alias (__sched_rr_get_interval, sched_rr_get_interval)
+#include <stub-tag.h>
stub_warning (sched_setparam)
weak_alias (__sched_setparam, sched_setparam)
+#include <stub-tag.h>
stub_warning (sched_setscheduler)
weak_alias (__sched_setscheduler, sched_setscheduler)
+#include <stub-tag.h>
stub_warning (sched_yield)
weak_alias (__sched_yield, sched_yield)
+#include <stub-tag.h>
stub_warning (seekdir)
+#include <stub-tag.h>
stub_warning (select)
weak_alias (__select, select)
+#include <stub-tag.h>
}
stub_warning (semctl)
+#include <stub-tag.h>
}
stub_warning (semget)
+#include <stub-tag.h>
}
stub_warning (semop)
+#include <stub-tag.h>
stub_warning (send)
+#include <stub-tag.h>
}
stub_warning (sendmsg)
+#include <stub-tag.h>
}
stub_warning (sendto)
+#include <stub-tag.h>
}
stub_warning (setdomainname)
+#include <stub-tag.h>
stub_warning (setegid)
+#include <stub-tag.h>
stub_warning (seteuid)
+#include <stub-tag.h>
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#include "fpu_control.h"
+#include <fpu_control.h>
void
__setfpucw (fpu_control_t set)
stub_warning (setgid)
weak_alias (__setgid, setgid)
+#include <stub-tag.h>
stub_warning (setgroups)
+#include <stub-tag.h>
stub_warning (sethostid)
+#include <stub-tag.h>
stub_warning (sethostname)
+#include <stub-tag.h>
stub_warning (setitimer)
weak_alias (__setitimer, setitimer)
+#include <stub-tag.h>
stub_warning (__sigsetjmp)
+#include <stub-tag.h>
}
stub_warning (setlogin)
+#include <stub-tag.h>
stub_warning (setpgid)
weak_alias (__setpgid, setpgid)
+#include <stub-tag.h>
}
stub_warning (setpriority)
+#include <stub-tag.h>
stub_warning (setregid)
weak_alias (__setregid, setregid)
+#include <stub-tag.h>
stub_warning (setreuid)
weak_alias (__setreuid, setreuid)
+#include <stub-tag.h>
stub_warning (setrlimit)
+#include <stub-tag.h>
}
stub_warning (setrlimit64)
+#include <stub-tag.h>
stub_warning (setsid)
weak_alias (__setsid, setsid)
+#include <stub-tag.h>
}
stub_warning (setsockopt)
+#include <stub-tag.h>
stub_warning (settimeofday)
weak_alias (__settimeofday, settimeofday)
+#include <stub-tag.h>
stub_warning (setuid)
weak_alias (__setuid, setuid)
+#include <stub-tag.h>
}
stub_warning (shmat)
+#include <stub-tag.h>
}
stub_warning (shmctl)
+#include <stub-tag.h>
}
stub_warning (shmdt)
+#include <stub-tag.h>
}
stub_warning (shmget)
+#include <stub-tag.h>
stub_warning (shutdown)
+#include <stub-tag.h>
stub_warning (sigaction)
weak_alias (__sigaction, sigaction)
+#include <stub-tag.h>
}
stub_warning (sigaltstack)
+#include <stub-tag.h>
stub_warning (sigblock)
weak_alias (__sigblock, sigblock)
+#include <stub-tag.h>
}
stub_warning (siginterrupt)
+#include <stub-tag.h>
stub_warning (signal)
stub_warning (ssignal)
+#include <stub-tag.h>
}
weak_alias (__default_sigpause, sigpause)
stub_warning (sigpause)
+#include <stub-tag.h>
}
stub_warning (sigpending)
+#include <stub-tag.h>
stub_warning (sigreturn)
weak_alias (__sigreturn, sigreturn)
+#include <stub-tag.h>
stub_warning (sigsetmask)
weak_alias (__sigsetmask, sigsetmask)
+#include <stub-tag.h>
}
stub_warning (sigstack)
+#include <stub-tag.h>
stub_warning (sigsuspend)
+#include <stub-tag.h>
stub_warning (sigvec)
weak_alias (__sigvec, sigvec)
+#include <stub-tag.h>
weak_alias (__sigwait, sigwait)
stub_warning (sigwait)
+#include <stub-tag.h>
weak_alias (__sleep, sleep)
stub_warning (sleep)
+#include <stub-tag.h>
stub_warning (socket)
+#include <stub-tag.h>
stub_warning (socketpair)
+#include <stub-tag.h>
}
stub_warning (sstk)
+#include <stub-tag.h>
weak_alias (__statfs, statfs)
stub_warning (statfs)
+#include <stub-tag.h>
return -1;
}
stub_warning (statfs64)
+#include <stub-tag.h>
}
stub_warning (stime)
+#include <stub-tag.h>
}
stub_warning (stty)
+#include <stub-tag.h>
--- /dev/null
+__longjmp.c
+_exit.c
+accept.c
+access.c
+acct.c
+adjtime.c
+alarm.c
+bind.c
+brk.c
+chdir.c
+chflags.c
+chmod.c
+chown.c
+chroot.c
+clock.c
+close.c
+closedir.c
+connect.c
+ctermid.c
+cuserid.c
+des_impl.c
+dirfd.c
+dup.c
+dup2.c
+e_acoshl.c
+e_acosl.c
+e_asinl.c
+e_atan2l.c
+e_expl.c
+e_fmodl.c
+e_j0l.c
+e_j1l.c
+e_jnl.c
+e_lgammal_r.c
+e_log10l.c
+e_logl.c
+e_powl.c
+e_rem_pio2l.c
+e_sqrtl.c
+euidaccess.c
+execve.c
+fchdir.c
+fchflags.c
+fchmod.c
+fchown.c
+fclrexcpt.c
+fcntl.c
+fdopen.c
+fegetenv.c
+fegetround.c
+feholdexcpt.c
+fesetenv.c
+fesetround.c
+feupdateenv.c
+fexecve.c
+fgetexcptflg.c
+flock.c
+fork.c
+fpathconf.c
+fraiseexcpt.c
+fsetexcptflg.c
+fstatfs.c
+fstatfs64.c
+fsync.c
+ftestexcept.c
+ftruncate.c
+fxstat.c
+fxstat64.c
+getaddrinfo.c
+getcwd.c
+getdents.c
+getdomain.c
+getdtsz.c
+getegid.c
+geteuid.c
+getgid.c
+getgroups.c
+gethostid.c
+gethostname.c
+getitimer.c
+getlogin.c
+getlogin_r.c
+getpagesize.c
+getpeername.c
+getpgid.c
+getpid.c
+getppid.c
+getpriority.c
+getrlimit.c
+getrlimit64.c
+getrusage.c
+getsockname.c
+getsockopt.c
+getsysstats.c
+gettimeofday.c
+getuid.c
+gtty.c
+if_index.c
+ioctl.c
+isatty.c
+isfdtype.c
+k_cosl.c
+k_rem_pio2l.c
+k_sinl.c
+k_tanl.c
+kill.c
+killpg.c
+lchown.c
+link.c
+listen.c
+lseek.c
+lseek64.c
+lxstat64.c
+madvise.c
+mkdir.c
+mkfifo.c
+mkstemp.c
+mktemp.c
+mprotect.c
+msgctl.c
+msgget.c
+msgrcv.c
+msgsnd.c
+msync.c
+nanosleep.c
+nice.c
+nlist.c
+open.c
+open64.c
+opendir.c
+pathconf.c
+pause.c
+pipe.c
+pipestream.c
+poll.c
+pread.c
+pread64.c
+profil.c
+ptrace.c
+pwrite.c
+pwrite64.c
+raise.c
+read.c
+readdir.c
+readdir64.c
+readdir64_r.c
+readdir_r.c
+readlink.c
+readv.c
+reboot.c
+recv.c
+recvfrom.c
+recvmsg.c
+remove.c
+rename.c
+revoke.c
+rewinddir.c
+rmdir.c
+s_atanl.c
+s_erfl.c
+s_exp2.c
+s_exp2f.c
+s_exp2l.c
+s_expm1l.c
+s_log1pl.c
+s_log2l.c
+sched_getp.c
+sched_gets.c
+sched_primax.c
+sched_primin.c
+sched_rr_gi.c
+sched_setp.c
+sched_sets.c
+sched_yield.c
+seekdir.c
+select.c
+semctl.c
+semget.c
+semop.c
+send.c
+sendmsg.c
+sendto.c
+setdomain.c
+setegid.c
+seteuid.c
+setgid.c
+setgroups.c
+sethostid.c
+sethostname.c
+setitimer.c
+setjmp.c
+setlogin.c
+setpgid.c
+setpriority.c
+setregid.c
+setreuid.c
+setrlimit.c
+setrlimit64.c
+setsid.c
+setsockopt.c
+settimeofday.c
+setuid.c
+shmat.c
+shmctl.c
+shmdt.c
+shmget.c
+shutdown.c
+sigaction.c
+sigaltstack.c
+sigblock.c
+sigintr.c
+signal.c
+sigpause.c
+sigpending.c
+sigreturn.c
+sigsetmask.c
+sigstack.c
+sigsuspend.c
+sigvec.c
+sigwait.c
+sleep.c
+socket.c
+socketpair.c
+sstk.c
+statfs.c
+statfs64.c
+stime.c
+stty.c
+swapoff.c
+swapon.c
+symlink.c
+sync.c
+syscall.c
+sysconf.c
+system.c
+sysv_signal.c
+tcdrain.c
+tcflow.c
+tcflush.c
+tcgetattr.c
+tcgetpgrp.c
+tcsendbrk.c
+tcsetattr.c
+tcsetpgrp.c
+telldir.c
+tempname.c
+time.c
+times.c
+truncate.c
+ttyname.c
+ttyname_r.c
+ualarm.c
+ulimit.c
+umask.c
+unlink.c
+usleep.c
+ustat.c
+utime.c
+utimes.c
+vdprintf.c
+vhangup.c
+wait.c
+wait3.c
+wait4.c
+waitpid.c
+write.c
+writev.c
+xmknod.c
+xstat.c
+xstat64.c
}
stub_warning (swapoff)
+#include <stub-tag.h>
}
stub_warning (swapon)
+#include <stub-tag.h>
stub_warning (symlink)
weak_alias (__symlink, symlink)
+#include <stub-tag.h>
stub_warning (sync)
+#include <stub-tag.h>
#endif
/* Return value of `mmap' in case of an error. */
-#define MAP_FAILED ((__caddr_t) -1)
+#define MAP_FAILED ((__ptr_t) -1)
__BEGIN_DECLS
for errors (in which case `errno' is set). A successful `mmap' call
deallocates any previous mapping for the affected region. */
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off_t __offset));
#ifndef __USE_FILE_OFFSET64
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off_t __offset));
#else
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off_t __offset))
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off_t __offset))
__asm__ ("mmap64");
#endif
#ifdef __USE_LARGEFILE64
-extern __caddr_t mmap64 __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off64_t __offset));
+extern __ptr_t mmap64 __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off64_t __offset));
#endif
/* Deallocate any mapping for the region starting at ADDR and extending LEN
bytes. Returns 0 if successful, -1 for errors (and sets errno). */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
/* Change the memory protection of the region starting at ADDR and
extending LEN bytes to PROT. Returns 0 if successful, -1 for errors
(and sets errno). */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
/* Synchronize the region starting at ADDR and extending LEN bytes with the
file it maps. Filesystem operations on a file being mapped are
unpredictable before this is done. Flags are from the MS_* set. */
-extern int msync __P ((__caddr_t __addr, size_t __len, int __flags));
+extern int msync __P ((__ptr_t __addr, size_t __len, int __flags));
#ifdef __USE_BSD
/* Advise the system about particular usage patterns the program follows
for the region starting at ADDR and extending LEN bytes. */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
#endif
__END_DECLS
}
stub_warning (syscall)
+#include <stub-tag.h>
weak_alias (__sysconf, sysconf)
stub_warning (sysconf)
+#include <stub-tag.h>
stub_warning (system)
+#include <stub-tag.h>
weak_alias (__sysv_signal, sysv_signal)
stub_warning (sysv_signal)
+#include <stub-tag.h>
stub_warning (tcdrain)
+#include <stub-tag.h>
stub_warning (tcflow)
+#include <stub-tag.h>
stub_warning(tcflush);
+#include <stub-tag.h>
stub_warning (tcgetattr)
weak_alias (__tcgetattr, tcgetattr)
+#include <stub-tag.h>
stub_warning (tcgetpgrp)
+#include <stub-tag.h>
stub_warning (tcsendbreak)
+#include <stub-tag.h>
stub_warning (tcsetattr)
+#include <stub-tag.h>
stub_warning (tcsetpgrp)
+#include <stub-tag.h>
stub_warning (telldir)
+#include <stub-tag.h>
}
stub_warning (__stdio_gen_tempname)
+#include <stub-tag.h>
}
stub_warning (time)
+#include <stub-tag.h>
stub_warning (times)
weak_alias (__times, times)
+#include <stub-tag.h>
}
stub_warning (truncate)
+#include <stub-tag.h>
stub_warning (ttyname)
+#include <stub-tag.h>
stub_warning (ttyname_r)
+#include <stub-tag.h>
}
stub_warning (ualarm)
+#include <stub-tag.h>
weak_alias (__ulimit, ulimit)
stub_warning (ulimit)
+#include <stub-tag.h>
stub_warning (umask)
weak_alias (__umask, umask)
+#include <stub-tag.h>
stub_warning (unlink)
weak_alias (__unlink, unlink)
+#include <stub-tag.h>
}
stub_warning (usleep)
+#include <stub-tag.h>
return -1;
}
stub_warning (ustat)
+#include <stub-tag.h>
stub_warning (utime)
+#include <stub-tag.h>
weak_alias (__utimes, utimes)
stub_warning (utimes)
+#include <stub-tag.h>
}
stub_warning (vdprintf)
+#include <stub-tag.h>
}
stub_warning (vhangup)
+#include <stub-tag.h>
stub_warning (wait)
weak_alias (__wait, wait)
+#include <stub-tag.h>
stub_warning (wait3)
weak_alias (__wait3, wait3)
+#include <stub-tag.h>
stub_warning (wait4)
weak_alias (__wait4, wait4)
+#include <stub-tag.h>
weak_alias (__libc_waitpid, waitpid)
stub_warning (waitpid)
+#include <stub-tag.h>
weak_alias (__libc_write, __write)
weak_alias (__libc_write, write)
+#include <stub-tag.h>
weak_alias (__writev, writev)
stub_warning (writev)
+#include <stub-tag.h>
stub_warning (__xmknod)
weak_alias (__xmknod, _xmknod)
+#include <stub-tag.h>
stub_warning (stat)
weak_alias (__xstat, _xstat)
+#include <stub-tag.h>
return -1;
}
stub_warning (stat64)
+#include <stub-tag.h>
}
+/* Find the first occurrence of C in S. This is the BSD name. */
+#define _HAVE_STRING_ARCH_index 1
+#define index(s, c) \
+ (__extension__ (__builtin_constant_p (c) \
+ ? __strchr_c (s, ((c) & 0xff) << 8) \
+ : __strchr_g (s, c)))
+
+
/* Find the last occurrence of C in S. */
#define _HAVE_STRING_ARCH_strrchr 1
#define strrchr(s, c) \
#endif
+/* Find the last occurrence of C in S. This is the BSD name. */
+#define _HAVE_STRING_ARCH_rindex 1
+#define rindex(s, c) \
+ (__extension__ (__builtin_constant_p (c) \
+ ? __strrchr_c (s, ((c) & 0xff) << 8) \
+ : __strrchr_g (s, c)))
+
+
/* Return the length of the initial segment of S which
consists entirely of characters not in REJECT. */
#define _HAVE_STRING_ARCH_strcspn 1
is nonzero, it is the desired mapping address. If the MAP_FIXED bit is
set in FLAGS, the mapping will be at ADDR exactly (which must be
page-aligned); otherwise the system chooses a convenient nearby address.
- The return value is the actual mapping address chosen or (caddr_t) -1
+ The return value is the actual mapping address chosen or (__ptr_t) -1
for errors (in which case `errno' is set). A successful `mmap' call
deallocates any previous mapping for the affected region. */
-caddr_t
-__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+__ptr_t
+__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
{
error_t err;
vm_prot_t vmprot;
/* A specific address is requested. It need not be page-aligned;
it just needs to be congruent with the object offset. */
if ((mapaddr & (vm_page_size - 1)) != pageoff)
- return (caddr_t) (long int) __hurd_fail (EINVAL);
+ return (__ptr_t) (long int) __hurd_fail (EINVAL);
else
/* We will add back PAGEOFF after mapping. */
mapaddr -= pageoff;
switch (flags & MAP_TYPE)
{
default:
- return (caddr_t) (long int) __hurd_fail (EINVAL);
+ return (__ptr_t) (long int) __hurd_fail (EINVAL);
case MAP_ANON:
memobj = MACH_PORT_NULL;
{
mach_port_t robj, wobj;
if (err = HURD_DPORT_USE (fd, __io_map (port, &robj, &wobj)))
- return (caddr_t) (long int) __hurd_dfail (fd, err);
+ return (__ptr_t) (long int) __hurd_dfail (fd, err);
switch (prot & (PROT_READ|PROT_WRITE))
{
case PROT_READ:
else
{
__mach_port_deallocate (__mach_task_self (), wobj);
- return (caddr_t) (long int) __hurd_fail (EACCES);
+ return (__ptr_t) (long int) __hurd_fail (EACCES);
}
break;
}
__mach_port_deallocate (__mach_task_self (), memobj);
if (err)
- return (caddr_t) (long int) __hurd_fail (err);
+ return (__ptr_t) (long int) __hurd_fail (err);
/* Adjust the mapping address for the offset-within-page. */
mapaddr += pageoff;
- return (caddr_t) mapaddr;
+ return (__ptr_t) mapaddr;
}
weak_alias (__mmap, mmap)
(and sets errno). */
int
-__mprotect (caddr_t addr, size_t len, int prot)
+__mprotect (__ptr_t addr, size_t len, int prot)
{
kern_return_t err;
vm_prot_t vmprot;
bytes. Returns 0 if successful, -1 for errors (and sets errno). */
int
-__munmap (caddr_t addr, size_t len)
+__munmap (__ptr_t addr, size_t len)
{
kern_return_t err;
if (err = __vm_deallocate (__mach_task_self (),
# The unix-specific configure fragment writes `unix-generated' in config.make.
config-generated := $(config-generated) $(unix-generated)
\f
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/local_lim.h))))))
ifneq (,$(wildcard $(sysincludedir)/sys/param.h))
endif
\f
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
$(patsubst %/sys/param.h,%/,\
$(firstword $(wildcard $(+sysdep_dirs:%=%/sys/param.h))))))
endif # No sysdep sys/param.h.
\f
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/errno.h))))))
# These need to exist before any compiling is done,
-# so cpp doesn't instead find the stub versions.
+# so cpp doesn't instead find the generic versions.
before-compile := $(before-compile) $(common-objpfx)bits/errno.h
$(common-objpfx)bits/errno.h: $(common-objpfx)make-errnos
errnos.h errnos make-errnos make-errnos.c
endif
\f
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/ioctls.h))))))
before-compile := $(before-compile) $(common-objpfx)bits/ioctls.h
endif
\f
ifeq ($(subdir),stdio-common)
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(objpfx),\
$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/errlist.c))))))
before-compile: $(objpfx)errlist.c
endif
endif # stdio-common
\f
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/sys/syscall.h))))))
# The syscall code assumes a file <sys/syscall.h> that defines macros
#define MS_INVALIDATE 4 /* Invalidate cached pages. */
/* Return value of `mmap' in case of an error. */
-#define MAP_FAILED ((__caddr_t) -1)
+#define MAP_FAILED ((__ptr_t) -1)
__BEGIN_DECLS
for errors (in which case `errno' is set). A successful `mmap' call
deallocates any previous mapping for the affected region. */
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, off_t __offset));
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, off_t __offset));
/* Deallocate any mapping for the region starting at ADDR and extending LEN
bytes. Returns 0 if successful, -1 for errors (and sets errno). */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
/* Change the memory protection of the region starting at ADDR and
extending LEN bytes to PROT. Returns 0 if successful, -1 for errors
(and sets errno). */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
/* Synchronize the region starting at ADDR and extending LEN bytes with the
file it maps. Filesystem operations on a file being mapped are
unpredictable before this is done. */
-extern int msync __P ((__caddr_t __addr, size_t __len, int __flags));
+extern int msync __P ((__ptr_t __addr, size_t __len, int __flags));
#ifdef __USE_BSD
/* Advise the system about particular usage patterns the program follows
for the region starting at ADDR and extending LEN bytes. */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
#endif
__END_DECLS
is nonzero, it is the desired mapping address. If the MAP_FIXED bit is
set in FLAGS, the mapping will be at ADDR exactly (which must be
page-aligned); otherwise the system chooses a convenient nearby address.
- The return value is the actual mapping address chosen or (caddr_t) -1
+ The return value is the actual mapping address chosen or MAP_FAILED
for errors (in which case `errno' is set). A successful `mmap' call
deallocates any previous mapping for the affected region. */
-extern caddr_t __mmap_syscall (caddr_t addr, size_t len,
+extern __ptr_t __mmap_syscall (__ptr_t addr, size_t len,
int prot, int flags, int fd, off_t offset);
-caddr_t
-__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+__ptr_t
+__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
{
return __mmap_syscall (addr, len, prot, flags | _MAP_NEW, fd, offset);
}
#define MS_INVALIDATE 0x2 /* Invalidate caches. */
/* Return value of `mmap' in case of an error. */
-#define MAP_FAILED ((__caddr_t) -1)
+#define MAP_FAILED ((__ptr_t) -1)
__BEGIN_DECLS
for errors (in which case `errno' is set). A successful `mmap' call
deallocates any previous mapping for the affected region. */
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off_t __offset));
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off_t __offset));
/* Deallocate any mapping for the region starting at ADDR and extending LEN
bytes. Returns 0 if successful, -1 for errors (and sets errno). */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
/* Change the memory protection of the region starting at ADDR and
extending LEN bytes to PROT. Returns 0 if successful, -1 for errors
(and sets errno). */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
/* Synchronize the region starting at ADDR and extending LEN bytes with the
file it maps. Filesystem operations on a file being mapped are
unpredictable before this is done. */
-extern int msync __P ((__caddr_t __addr, size_t __len, int __flags));
+extern int msync __P ((__ptr_t __addr, size_t __len, int __flags));
#ifdef __USE_BSD
/* Advise the system about particular usage patterns the program follows
for the region starting at ADDR and extending LEN bytes. */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
#endif
__END_DECLS
#endif
/* Return value of `mmap' in case of an error. */
-#define MAP_FAILED ((__caddr_t) -1)
+#define MAP_FAILED ((__ptr_t) -1)
__BEGIN_DECLS
for errors (in which case `errno' is set). A successful `mmap' call
deallocates any previous mapping for the affected region. */
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, off_t __offset));
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, off_t __offset));
/* Deallocate any mapping for the region starting at ADDR and extending LEN
bytes. Returns 0 if successful, -1 for errors (and sets errno). */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
/* Change the memory protection of the region starting at ADDR and
extending LEN bytes to PROT. Returns 0 if successful, -1 for errors
(and sets errno). */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
/* Ultrix 4 does not implement `msync' or `madvise'. */
/* Synchronize the region starting at ADDR and extending LEN bytes with the
file it maps. Filesystem operations on a file being mapped are
unpredictable before this is done. */
-extern int msync __P ((caddr_t __addr, size_t __len));
+extern int msync __P ((__ptr_t __addr, size_t __len));
#ifdef __USE_BSD
/* Advise the system about particular usage patterns the program follows
for the region starting at ADDR and extending LEN bytes. */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
#endif
__END_DECLS
#define MS_INVALIDATE 0x2 /* Invalidate caches. */
/* Return value of `mmap' in case of an error. */
-#define MAP_FAILED ((__caddr_t) -1)
+#define MAP_FAILED ((__ptr_t) -1)
__BEGIN_DECLS
for errors (in which case `errno' is set). A successful `mmap' call
deallocates any previous mapping for the affected region. */
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off_t __offset));
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off_t __offset));
/* Deallocate any mapping for the region starting at ADDR and extending LEN
bytes. Returns 0 if successful, -1 for errors (and sets errno). */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
/* Change the memory protection of the region starting at ADDR and
extending LEN bytes to PROT. Returns 0 if successful, -1 for errors
(and sets errno). */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
/* Synchronize the region starting at ADDR and extending LEN bytes with the
file it maps. Filesystem operations on a file being mapped are
unpredictable before this is done. */
-extern int msync __P ((caddr_t __addr, size_t __len, int __flags));
+extern int msync __P ((__ptr_t __addr, size_t __len, int __flags));
#ifdef __USE_BSD
/* Advise the system about particular usage patterns the program follows
for the region starting at ADDR and extending LEN bytes. */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
#endif
__END_DECLS
-#include <sysdeps/stub/madvise.c>
+#include <sysdeps/generic/madvise.c>
#include <bits/mman.h>
/* Return value of `mmap' in case of an error. */
-#define MAP_FAILED ((__caddr_t) -1)
+#define MAP_FAILED ((__ptr_t) -1)
__BEGIN_DECLS
/* Map addresses starting near ADDR and extending for LEN bytes. from
for errors (in which case `errno' is set). A successful `mmap' call
deallocates any previous mapping for the affected region. */
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off_t __offset));
#ifndef __USE_FILE_OFFSET64
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off_t __offset));
#else
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off_t __offset))
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off_t __offset))
__asm__ ("mmap64");
#endif
#ifdef __USE_LARGEFILE64
-extern __caddr_t mmap64 __P ((__caddr_t __addr, size_t __len, int __prot,
- int __flags, int __fd, __off64_t __offset));
+extern __ptr_t mmap64 __P ((__ptr_t __addr, size_t __len, int __prot,
+ int __flags, int __fd, __off64_t __offset));
#endif
/* Deallocate any mapping for the region starting at ADDR and extending LEN
bytes. Returns 0 if successful, -1 for errors (and sets errno). */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
/* Change the memory protection of the region starting at ADDR and
extending LEN bytes to PROT. Returns 0 if successful, -1 for errors
(and sets errno). */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
/* Synchronize the region starting at ADDR and extending LEN bytes with the
file it maps. Filesystem operations on a file being mapped are
unpredictable before this is done. Flags are from the MS_* set. */
-extern int msync __P ((__caddr_t __addr, size_t __len, int __flags));
+extern int msync __P ((__ptr_t __addr, size_t __len, int __flags));
#ifdef __USE_BSD
/* Advise the system about particular usage patterns the program follows
for the region starting at ADDR and extending LEN bytes. */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
#endif
/* Cause all currently mapped pages of the process to be memory resident
/* Guarantee all whole pages mapped by the range [ADDR,ADDR+LEN) to
be memory resident. */
-extern int mlock __P ((__caddr_t __addr, size_t __len));
+extern int mlock __P ((__ptr_t __addr, size_t __len));
/* Unlock whole pages previously mapped by the range [ADDR,ADDR+LEN). */
-extern int munlock __P ((__caddr_t __addr, size_t __len));
+extern int munlock __P ((__ptr_t __addr, size_t __len));
#ifdef __USE_MISC
/* Remap pages mapped by the range [ADDR,ADDR+OLD_LEN) to new length
NEW_LEN. If MAY_MOVE is MREMAP_MAYMOVE the returned address may
differ from ADDR. */
-extern __caddr_t __mremap __P ((__caddr_t __addr, size_t __old_len,
- size_t __new_len, int __may_move));
-extern __caddr_t mremap __P ((__caddr_t __addr, size_t __old_len,
- size_t __new_len, int __may_move));
+extern __ptr_t __mremap __P ((__ptr_t __addr, size_t __old_len,
+ size_t __new_len, int __may_move));
+extern __ptr_t mremap __P ((__ptr_t __addr, size_t __old_len,
+ size_t __new_len, int __may_move));
#endif
__END_DECLS
-
#endif /* _SYS_MMAN_H */
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
PARTICULAR PURPOSE.\n"
#include "version-info.h"
-"Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n";
+"Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n";
#include <unistd.h>