mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 02:40:08 +00:00
Update.
1998-03-18 00:25 Tim Waugh <tim@cyberelk.demon.co.uk> * posix/wordexp.c (parse_comm): Allow quoting inside $(...). (parse_param): Fold in Andreas' fixes to do with when the end of the parameter name has been reached, and quoting inside ${...}. (parse_dollars): Fix differentiation between $(((1+3)*(4-2))) and $((echo);(ls)). 1998-03-16 22:10 Zack Weinberg <zack@rabi.phys.columbia.edu> * manual/maint.texi: Split out installation and contribution sections to their own appendices. Misc cleanups. * manual/install.texi: New file. Mention add-ons. Refer to FAQ. * manual/contrib.texi: New file. * manual/libc.texinfo: Pull in new appendices. * manual/header.texi: Correct node pointer. 1998-03-17 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/process.texi (Process Completion): Clarify return value of waitpid a bit. Patch by Zack Weinberg. [PR libc/490]
This commit is contained in:
parent
48fc3dd224
commit
3c20b9b6a5
22
ChangeLog
22
ChangeLog
@ -1,3 +1,25 @@
|
||||
1998-03-18 00:25 Tim Waugh <tim@cyberelk.demon.co.uk>
|
||||
|
||||
* posix/wordexp.c (parse_comm): Allow quoting inside $(...).
|
||||
(parse_param): Fold in Andreas' fixes to do with when the end of
|
||||
the parameter name has been reached, and quoting inside ${...}.
|
||||
(parse_dollars): Fix differentiation between $(((1+3)*(4-2))) and
|
||||
$((echo);(ls)).
|
||||
|
||||
1998-03-16 22:10 Zack Weinberg <zack@rabi.phys.columbia.edu>
|
||||
|
||||
* manual/maint.texi: Split out installation and contribution
|
||||
sections to their own appendices. Misc cleanups.
|
||||
* manual/install.texi: New file. Mention add-ons. Refer to FAQ.
|
||||
* manual/contrib.texi: New file.
|
||||
* manual/libc.texinfo: Pull in new appendices.
|
||||
* manual/header.texi: Correct node pointer.
|
||||
|
||||
1998-03-17 Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||
|
||||
* manual/process.texi (Process Completion): Clarify return value
|
||||
of waitpid a bit. Patch by Zack Weinberg. [PR libc/490]
|
||||
|
||||
1998-03-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* posix/wordexp-test.c: Add more tests.
|
||||
|
434
manual/contrib.texi
Normal file
434
manual/contrib.texi
Normal file
@ -0,0 +1,434 @@
|
||||
@node Contributors, Copying, Maintenance, Top
|
||||
@appendix Contributors to the GNU C Library
|
||||
|
||||
The GNU C library was written originally by Roland McGrath, and is
|
||||
currently maintained by Ulrich Drepper. Some parts of the library were
|
||||
contributed or worked on by other people.
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
The @code{getopt} function and related code were written by
|
||||
Richard Stallman, @w{David J.} MacKenzie, and @w{Roland McGrath}.
|
||||
|
||||
@item
|
||||
The merge sort function @code{qsort} was written by Michael J. Haertel.
|
||||
|
||||
@item
|
||||
The quick sort function used as a fallback by @code{qsort} was written
|
||||
by Douglas C. Schmidt.
|
||||
|
||||
@item
|
||||
The memory allocation functions @code{malloc}, @code{realloc} and
|
||||
@code{free} and related code were written by Michael J. Haertel,
|
||||
@w{Wolfram Gloger}, and @w{Doug Lea}.
|
||||
|
||||
@item
|
||||
Fast implementations of many of the string functions (@code{memcpy},
|
||||
@code{strlen}, etc.) were written by Torbj@"orn Granlund.
|
||||
|
||||
@item
|
||||
The @file{tar.h} header file was written by David J. MacKenzie.
|
||||
|
||||
@item
|
||||
The port to the MIPS DECStation running Ultrix 4
|
||||
(@code{mips-dec-ultrix4})
|
||||
was contributed by Brendan Kehoe and Ian Lance Taylor.
|
||||
|
||||
@item
|
||||
The DES encryption function @code{crypt} and related functions were
|
||||
contributed by Michael Glad.
|
||||
|
||||
@item
|
||||
The @code{ftw} and @code{nftw} functions were contributed by Ulrich Drepper.
|
||||
|
||||
@item
|
||||
The startup code to support SunOS shared libraries was contributed by
|
||||
Tom Quinn.
|
||||
|
||||
@item
|
||||
The @code{mktime} function was contributed by Paul Eggert.
|
||||
|
||||
@item
|
||||
The port to the Sequent Symmetry running Dynix version 3
|
||||
(@code{i386-sequent-bsd}) was contributed by Jason Merrill.
|
||||
|
||||
@item
|
||||
The timezone support code is derived from the public-domain timezone
|
||||
package by Arthur David Olson and his many contributors.
|
||||
|
||||
@item
|
||||
The port to the DEC Alpha running OSF/1 (@code{alpha-dec-osf1}) was
|
||||
contributed by Brendan Kehoe, using some code written by Roland McGrath.
|
||||
|
||||
@item
|
||||
The port to SGI machines running Irix 4 (@code{mips-sgi-irix4}) was
|
||||
contributed by Tom Quinn.
|
||||
|
||||
@item
|
||||
The port of the Mach and Hurd code to the MIPS architecture
|
||||
(@code{mips-@var{anything}-gnu}) was contributed by Kazumoto Kojima.
|
||||
|
||||
@item
|
||||
The floating-point printing function used by @code{printf} and friends
|
||||
and the floating-point reading function used by @code{scanf},
|
||||
@code{strtod} and friends were written by Ulrich Drepper. The
|
||||
multi-precision integer functions used in those functions are taken from
|
||||
GNU MP, which was contributed by Torbj@"orn Granlund.
|
||||
|
||||
@item
|
||||
The internationalization support in the library, and the support
|
||||
programs @code{locale} and @code{localedef}, were written by Ulrich
|
||||
Drepper. Ulrich Drepper adapted the support code for message catalogs
|
||||
(@file{libintl.h}, etc.) from the GNU @code{gettext} package, which he
|
||||
also wrote. He also contributed the @code{catgets} support and the
|
||||
entire suite of multi-byte and wide-character support functions
|
||||
(@file{wctype.h}, @file{wchar.h}, etc.).
|
||||
|
||||
@item
|
||||
The implementations of the @file{nsswitch.conf} mechanism and the files
|
||||
and DNS backends for it were designed and written by Ulrich Drepper and
|
||||
Roland McGrath, based on a backend interface defined by Peter Eriksson.
|
||||
|
||||
@item
|
||||
The port to Linux i386/ELF (@code{i386-@var{anything}-linux}) was
|
||||
contributed by Ulrich Drepper, based in large part on work done in
|
||||
Hongjiu Lu's Linux version of the GNU C Library.
|
||||
|
||||
@item
|
||||
The port to Linux/m68k (@code{m68k-@var{anything}-linux}) was
|
||||
contributed by Andreas Schwab.
|
||||
|
||||
@item
|
||||
The ports to Linux/ARM (@code{arm-@var{ANYTHING}-linuxaout}) and ARM
|
||||
standalone (@code{arm-@var{ANYTHING}-none}), as well as parts of the
|
||||
IPv6 support code, were contributed by Philip Blundell.
|
||||
|
||||
@item
|
||||
Richard Henderson contributed the ELF dynamic linking code and other
|
||||
support for the Alpha processor.
|
||||
|
||||
@item
|
||||
David Mosberger-Tang contributed the port to Linux/Alpha
|
||||
(@code{alpha-@var{anything}-linux}).
|
||||
|
||||
@item
|
||||
The port to Linux on PowerPC (@code{powerpc-@var{anything}-linux})
|
||||
was contributed by Geoffrey Keating.
|
||||
|
||||
@item
|
||||
Miles Bader wrote the argp argument-parsing package, and the argz/envz
|
||||
interfaces.
|
||||
|
||||
@item
|
||||
Stephen R. van den Berg contributed a highly-optimized @code{strstr} function.
|
||||
|
||||
@item
|
||||
Ulrich Drepper contributed the @code{hsearch} and @code{drand48}
|
||||
families of functions; reentrant @samp{@dots{}@code{_r}} versions of the
|
||||
@code{random} family; System V shared memory and IPC support code; and
|
||||
several highly-optimized string functions for i@var{x}86 processors.
|
||||
|
||||
@item
|
||||
The math functions are taken from @code{fdlibm-5.1} by Sun
|
||||
Microsystems, as modified by J.T. Conklin, Ian Lance Taylor,
|
||||
Ulrich Drepper, Andreas Schwab, and Roland McGrath.
|
||||
|
||||
@item
|
||||
The @code{libio} library used to implement @code{stdio} functions on
|
||||
some platforms was written by Per Bothner and modified by Ulrich Drepper.
|
||||
|
||||
@item
|
||||
Eric Youngdale and Ulrich Drepper implemented versioning of objects on
|
||||
symbol level.
|
||||
|
||||
@item
|
||||
Thorsten Kukuk provided an implementation for NIS (YP) and NIS+,
|
||||
securelevel 0, 1 and 2.
|
||||
|
||||
@item
|
||||
Andreas Jaeger provided a test suite for the math library.
|
||||
|
||||
@item
|
||||
Mark Kettenis implemented the utmpx interface and an utmp daemon.
|
||||
|
||||
@item
|
||||
Ulrich Drepper added character conversion functions (@code{iconv}).
|
||||
|
||||
@item
|
||||
Thorsten Kukuk provided an implementation for a caching daemon for NSS
|
||||
(nscd).
|
||||
|
||||
@item
|
||||
Tim Waugh provided an implementation of the POSIX.2 wordexp function family.
|
||||
|
||||
@item
|
||||
Mark Kettenis provided a Hesiod NSS module.
|
||||
|
||||
@item
|
||||
The Internet-related code (most of the @file{inet} subdirectory) and
|
||||
several other miscellaneous functions and header files have been
|
||||
included from 4.4 BSD with little or no modification.
|
||||
|
||||
All code incorporated from 4.4 BSD is under the following copyright:
|
||||
|
||||
@quotation
|
||||
@display
|
||||
Copyright @copyright{} 1991 Regents of the University of California.
|
||||
All rights reserved.
|
||||
@end display
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
@item
|
||||
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.
|
||||
@item
|
||||
All advertising materials mentioning features or use of this software
|
||||
must display the following acknowledgement:
|
||||
@quotation
|
||||
This product includes software developed by the University of
|
||||
California, Berkeley and its contributors.
|
||||
@end quotation
|
||||
@item
|
||||
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.
|
||||
@end enumerate
|
||||
|
||||
@sc{this software is provided by the regents and 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 the regents or 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.}
|
||||
@end quotation
|
||||
|
||||
@item
|
||||
The random number generation functions @code{random}, @code{srandom},
|
||||
@code{setstate} and @code{initstate}, which are also the basis for the
|
||||
@code{rand} and @code{srand} functions, were written by Earl T. Cohen
|
||||
for the University of California at Berkeley and are copyrighted by the
|
||||
Regents of the University of California. They have undergone minor
|
||||
changes to fit into the GNU C library and to fit the @w{ISO C} standard,
|
||||
but the functional code is Berkeley's.@refill
|
||||
|
||||
@item
|
||||
The DNS resolver code is taken directly from BIND 4.9.5, which is
|
||||
under both the Berkeley copyright above and also:
|
||||
|
||||
@quotation
|
||||
Portions Copyright @copyright{} 1993 by Digital Equipment Corporation.
|
||||
|
||||
Permission to use, copy, modify, and distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies, and
|
||||
that the name of Digital Equipment Corporation not be used in
|
||||
advertising or publicity pertaining to distribution of the document or
|
||||
software without specific, written prior permission.
|
||||
|
||||
@sc{the software is provided ``as is'' and digital equipment corp.
|
||||
disclaims all warranties with regard to this software, including all
|
||||
implied warranties of merchantability and fitness. in no event shall
|
||||
digital equipment corporation be liable for any special, direct,
|
||||
indirect, or consequential damages or any damages whatsoever resulting
|
||||
from loss of use, data or profits, whether in an action of contract,
|
||||
negligence or other tortious action, arising out of or in connection
|
||||
with the use or performance of this software.}
|
||||
@end quotation
|
||||
|
||||
@item
|
||||
The code to support Sun RPC is taken verbatim from Sun's
|
||||
@w{@sc{rpcsrc-4.0}} distribution, and is covered by this copyright:
|
||||
|
||||
@quotation
|
||||
@display
|
||||
Copyright @copyright{} 1984, Sun Microsystems, Inc.
|
||||
@end display
|
||||
|
||||
Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
unrestricted use provided that this legend is included on all tape media
|
||||
and as a part of the software program in whole or part. Users may copy
|
||||
or modify Sun RPC without charge, but are not authorized to license or
|
||||
distribute it to anyone else except as part of a product or program
|
||||
developed by the user.
|
||||
|
||||
@sc{sun rpc is provided as is with no warranties of any kind including the
|
||||
warranties of design, merchantibility and fitness for a particular
|
||||
purpose, or arising from a course of dealing, usage or trade practice.}
|
||||
|
||||
Sun RPC is provided with no support and without any obligation on the
|
||||
part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
modification or enhancement.
|
||||
|
||||
@sc{sun microsystems, inc. shall have no liability with respect to the
|
||||
infringement of copyrights, trade secrets or any patents by sun rpc
|
||||
or any part thereof.}
|
||||
|
||||
In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
or profits or other special, indirect and consequential damages, even if
|
||||
Sun has been advised of the possibility of such damages.
|
||||
|
||||
@display
|
||||
Sun Microsystems, Inc.
|
||||
2550 Garcia Avenue
|
||||
Mountain View, California 94043
|
||||
@end display
|
||||
@end quotation
|
||||
|
||||
@item
|
||||
Some of the support code for Mach is taken from Mach 3.0 by CMU,
|
||||
and is under the following copyright terms:
|
||||
|
||||
@quotation
|
||||
@display
|
||||
Mach Operating System
|
||||
Copyright @copyright{} 1991,1990,1989 Carnegie Mellon University
|
||||
All Rights Reserved.
|
||||
@end display
|
||||
|
||||
Permission to use, copy, modify and distribute this software and its
|
||||
documentation is hereby granted, provided that both the copyright
|
||||
notice and this permission notice appear in all copies of the
|
||||
software, derivative works or modified versions, and any portions
|
||||
thereof, and that both notices appear in supporting documentation.
|
||||
|
||||
@sc{carnegie mellon allows free use of this software in its ``as is''
|
||||
condition. carnegie mellon disclaims any liability of any kind for
|
||||
any damages whatsoever resulting from the use of this software.}
|
||||
|
||||
Carnegie Mellon requests users of this software to return to
|
||||
|
||||
@display
|
||||
Software Distribution Coordinator
|
||||
School of Computer Science
|
||||
Carnegie Mellon University
|
||||
Pittsburgh PA 15213-3890
|
||||
@end display
|
||||
|
||||
@noindent
|
||||
or @email{Software.Distribution@@CS.CMU.EDU} any improvements or
|
||||
extensions that they make and grant Carnegie Mellon the rights to
|
||||
redistribute these changes.
|
||||
@end quotation
|
||||
|
||||
@item
|
||||
The code for the database library @file{libdb} comes from the 2.3
|
||||
release of Berkeley DB. That code is under the same copyright as 4.4 BSD
|
||||
and also:
|
||||
|
||||
@quotation
|
||||
@display
|
||||
Copyright @copyright{} 1990, 1993, 1994, 1995, 1996, 1997
|
||||
Sleepycat Software. All rights reserved.
|
||||
@end display
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
@item
|
||||
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.
|
||||
@item
|
||||
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.
|
||||
@end enumerate
|
||||
|
||||
@sc{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.}
|
||||
|
||||
@display
|
||||
Portions copyright @copyright{} 1995, 1996
|
||||
The President and Fellows of Harvard University.
|
||||
All rights reserved.
|
||||
@end display
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
@enumerate
|
||||
@item
|
||||
Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
@item
|
||||
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.
|
||||
@item
|
||||
All advertising materials mentioning features or use of this software
|
||||
must display the following acknowledgement:
|
||||
@quotation
|
||||
This product includes software developed by Harvard University
|
||||
and its contributors.
|
||||
@end quotation
|
||||
@item
|
||||
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.
|
||||
@end enumerate
|
||||
|
||||
@sc{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.}
|
||||
|
||||
@noindent
|
||||
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
|
||||
|
||||
@display
|
||||
Sleepycat Software
|
||||
394 E. Riding Dr.
|
||||
Carlisle, MA 01741
|
||||
USA
|
||||
+1-508-287-4781
|
||||
@end display
|
||||
|
||||
or @email{db@@sleepycat.com}.
|
||||
|
||||
@end quotation
|
||||
|
||||
@end itemize
|
@ -1,4 +1,4 @@
|
||||
@node Library Summary, Maintenance, Language Features, Top
|
||||
@node Library Summary, Installation, Language Features, Top
|
||||
@appendix Summary of Library Facilities
|
||||
|
||||
This appendix is a complete list of the facilities declared within the
|
||||
|
375
manual/install.texi
Normal file
375
manual/install.texi
Normal file
@ -0,0 +1,375 @@
|
||||
@c This is for making the `INSTALL' file for the distribution.
|
||||
@c Makeinfo ignores it when processing the file from the include.
|
||||
@setfilename INSTALL
|
||||
|
||||
@node Installation, Maintenance, Library Summary, Top
|
||||
@appendix Installing the GNU C Library
|
||||
|
||||
@menu
|
||||
* Tools for Installation:: We recommend using these tools to build.
|
||||
* Supported Configurations:: What systems the GNU C library runs on.
|
||||
* Reporting Bugs:: How to report bugs (if you want to
|
||||
get them fixed) and other troubles
|
||||
you may have with the GNU C library.
|
||||
@end menu
|
||||
|
||||
Installation of the GNU C library is relatively simple, but usually
|
||||
requires several GNU tools to be installed already.
|
||||
@iftex
|
||||
(@pxref{Tools for Installation}, below.)
|
||||
@end iftex
|
||||
|
||||
Before you do anything else, you should read the file @file{FAQ} found
|
||||
at the top level of the source tree. This file answers common questions
|
||||
and describes problems you may experience with compilation and
|
||||
installation. It is updated more frequently than this manual.
|
||||
|
||||
To configure the GNU C library for your system, run the shell script
|
||||
@file{configure} with @code{sh}. Use an argument which is the
|
||||
conventional GNU name for your system configuration---for example,
|
||||
@samp{sparc-sun-sunos4.1}, for a Sun 4 running SunOS 4.1.
|
||||
@xref{Installation, Installation, Installing GNU CC, gcc.info, Using and
|
||||
Porting GNU CC}, for a full description of standard GNU configuration
|
||||
names. If you omit the configuration name, @file{configure} will try to
|
||||
guess one for you by inspecting the system it is running on. It may or
|
||||
may not be able to come up with a guess, and the its guess might be
|
||||
wrong. @file{configure} will tell you the canonical name of the chosen
|
||||
configuration before proceeding.
|
||||
|
||||
Here are some options that you should specify (if appropriate) when
|
||||
you run @code{configure}:
|
||||
|
||||
@table @samp
|
||||
@item --with-binutils=@var{directory}
|
||||
Use the binutils (assembler and linker) in @file{@var{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. (@code{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.)
|
||||
|
||||
@c extra blank line makes it look better
|
||||
@item --without-fp
|
||||
@itemx --nfp
|
||||
|
||||
Use this option if your computer lacks hardware floating-point support
|
||||
and your operating system does not emulate an FPU.
|
||||
|
||||
@item --prefix=@var{directory}
|
||||
Install machine-independent data files in subdirectories of
|
||||
@file{@var{directory}}. (You can also set this in @file{configparms};
|
||||
see below.) The default is to install in `/usr/local'.
|
||||
|
||||
@item --exec-prefix=@var{directory}
|
||||
Install the library and other machine-dependent files in subdirectories
|
||||
of @file{@var{directory}}. (You can also set this in
|
||||
@file{configparms}; see below.) The default is to use <prefix>/bin
|
||||
and <prefix>/sbin.
|
||||
|
||||
@item --enable-shared
|
||||
@itemx --disable-shared
|
||||
Enable or disable building of an ELF shared library on systems that
|
||||
support it. The default is to build the shared library on systems using
|
||||
ELF when the GNU @code{binutils} are available.
|
||||
|
||||
@item --enable-profile
|
||||
@itemx --disable-profile
|
||||
Enable or disable building of the profiled C library, @samp{-lc_p}. The
|
||||
default is to build the profiled library. You may wish to disable it if
|
||||
you don't plan to do profiling, because it doubles the build time of
|
||||
compiling just the unprofiled static library.
|
||||
|
||||
@item --enable-omitfp
|
||||
Enable building a highly-optimized but possibly undebuggable C
|
||||
library. This causes the normal static and shared (if enabled) C
|
||||
libraries to be compiled with maximal optimization, including the
|
||||
@samp{-fomit-frame-pointer} switch that makes debugging impossible on
|
||||
many machines, and without debugging information (which makes the
|
||||
binaries substantially smaller). An additional static library is
|
||||
compiled with no optimization and full debugging information, and
|
||||
installed as @samp{-lc_g}.
|
||||
|
||||
@item --enable-add-ons[=LIST]
|
||||
Certain components of the C library are distributed separately from the
|
||||
rest of the sources. In particular, the @code{crypt} function and its
|
||||
friends are separated due to US export control regulations, and the
|
||||
threading support code for Linux is maintained separately. You can get
|
||||
these @dfn{add-on} packages from the same place you got the libc
|
||||
sources. To use them, unpack them into your source tree, and give
|
||||
@code{configure} the @samp{--enable-add-ons} option.
|
||||
|
||||
If you do not wish to use some add-on package that you have present in
|
||||
your source tree, give this option a list of the add-ons that you
|
||||
@emph{do} want used, like this: @samp{--enable-add-ons=crypt,linuxthreads}
|
||||
@end table
|
||||
|
||||
You should not build the library in the same directory as the sources,
|
||||
because there are bugs in @code{make clean}. Make a directory for the
|
||||
build, and run @code{configure} from that directory, like this:
|
||||
|
||||
@smallexample
|
||||
mkdir sun4
|
||||
cd sun4
|
||||
../configure sparc-sun-sunos4.1
|
||||
@end smallexample
|
||||
|
||||
@noindent
|
||||
@code{configure} looks for the sources in whatever directory you
|
||||
specified for finding @code{configure} itself. It does not matter where
|
||||
in the file system the source and build directories are---as long as you
|
||||
specify the source directory when you run @code{configure}, you will get
|
||||
the proper results.
|
||||
|
||||
This feature lets you keep sources and binaries in different
|
||||
directories, and that makes it easy to build the library for several
|
||||
different machines from the same set of sources. Simply create a
|
||||
build directory for each target machine, and run @code{configure} in
|
||||
that directory specifying the target machine's configuration name.
|
||||
|
||||
The library has a number of special-purpose configuration parameters.
|
||||
These are defined in the file @file{configparms}; see the comments in
|
||||
that file for the details. To change them, copy @file{configparms} into
|
||||
your build directory and modify it as appropriate for your system.
|
||||
@code{configure} will not notice your modifications if you change the
|
||||
file in the source directory.
|
||||
|
||||
It is easy to configure the GNU C library for cross-compilation by
|
||||
setting a few variables in @file{configparms}. Set @code{CC} to the
|
||||
cross-compiler for the target you configured the library for; it is
|
||||
important to use this same @code{CC} value when running
|
||||
@code{configure}, like this: @samp{CC=@var{target}-gcc configure
|
||||
@var{target}}. Set @code{BUILD_CC} to the compiler to use for for
|
||||
programs run on the build system as part of compiling the library. You
|
||||
may need to set @code{AR} and @code{RANLIB} to cross-compiling versions
|
||||
of @code{ar} and @code{ranlib} if the native tools are not configured to
|
||||
work with object files for the target you configured for.
|
||||
|
||||
Some of the machine-dependent code for some machines uses extensions in
|
||||
the GNU C compiler, so you may need to compile the library with GCC.
|
||||
(In fact, all of the existing complete ports require GCC.)
|
||||
|
||||
|
||||
To build the library and related programs, type @code{make}. This will
|
||||
produce a lot of output, some of which may look like errors from
|
||||
@code{make} (but isn't). Look for error messages from @code{make}
|
||||
containing @samp{***}. Those indicate that something is really wrong.
|
||||
|
||||
To build and run some test programs which exercise some of the library
|
||||
facilities, type @code{make check}. This will produce several files
|
||||
with names like @file{@var{program}.out}.
|
||||
|
||||
To format the @cite{GNU C Library Reference Manual} for printing, type
|
||||
@w{@code{make dvi}}. You need a working @TeX{} installation to do this.
|
||||
|
||||
To install the library and its header files, and the Info files of the
|
||||
manual, type @code{make install}. This will build things if necessary,
|
||||
before installing them. If you want to install the files in a different
|
||||
place than the one specified at configuration time you can specify a
|
||||
value for the Makefile variable @code{install_root} on the command line.
|
||||
This is useful to create chroot'ed environment or to prepare binary
|
||||
releases.@refill
|
||||
|
||||
@node Tools for Installation
|
||||
@appendixsec Recommended Tools to Install the GNU C Library
|
||||
@cindex installation tools
|
||||
@cindex tools, for installing library
|
||||
|
||||
We recommend installing the following GNU tools before attempting to
|
||||
build the GNU C library:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
GNU @code{make} 3.75
|
||||
|
||||
You need the latest version of GNU @code{make}. Modifying the GNU C
|
||||
Library to work with other @code{make} programs would be so hard that we
|
||||
recommend you port GNU @code{make} instead. @strong{Really.} We
|
||||
recommend version GNU @code{make} version 3.75. Versions 3.76 and
|
||||
3.76.1 are known to have bugs which only show up in big projects like
|
||||
GNU @code{libc}.
|
||||
|
||||
@item
|
||||
GCC 2.7.2.3
|
||||
|
||||
On most platforms, the GNU C library can only be compiled with the GNU C
|
||||
compiler. We recommend GCC version 2.7.2 or later; earlier versions may
|
||||
have problems.
|
||||
|
||||
On PowerPC, GCC versions dated earlier than 970904 are known not to work
|
||||
(they crash), including 2.7.2.
|
||||
|
||||
@item
|
||||
GNU @code{binutils} 2.8.1.0.23
|
||||
|
||||
Using the GNU @code{binutils} (assembler, linker, and related tools) is
|
||||
preferable when possible, and they are required to build an ELF shared C
|
||||
library. Version 2.1 of the library uses ELF symbol versioning
|
||||
extensively. Support for this feature is incomplete or buggy before
|
||||
binutils 2.8.1.0.23, so you must use at least this version.
|
||||
|
||||
@item
|
||||
GNU @code{texinfo} 3.11
|
||||
|
||||
To correctly translate and install the Texinfo documentation you need
|
||||
this version of the @code{texinfo} package. Earlier versions do not
|
||||
understand all the tags used in the document, and the installation
|
||||
mechanisms for the info files is not present or works differently.
|
||||
|
||||
On some Debian Linux based systems the @code{install-info} program
|
||||
supplied with the system works differently from the one we expect. You
|
||||
must therefore run @code{make install} like this:
|
||||
|
||||
@smallexample
|
||||
make INSTALL_INFO=/path/to/GNU/install-info install
|
||||
@end smallexample
|
||||
|
||||
@item
|
||||
GNU @code{awk} 3.0
|
||||
|
||||
Several files used during the build are generated using features of GNU
|
||||
@code{awk} that are not found in other implementations.
|
||||
@c XXX: Does mawk work?
|
||||
@end itemize
|
||||
|
||||
@noindent
|
||||
If you change any of the @file{configure.in} files you will also need
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
GNU @code{autoconf} 2.12
|
||||
@end itemize
|
||||
|
||||
@noindent
|
||||
and if you change any of the message translation files you will need
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
GNU @code{gettext} 0.10 or later
|
||||
@end itemize
|
||||
|
||||
@noindent
|
||||
You may also need these packages if you upgrade your source tree using
|
||||
patches, although we try to avoid this.
|
||||
|
||||
|
||||
@node Supported Configurations
|
||||
@appendixsec Supported Configurations
|
||||
@cindex configurations, all supported
|
||||
|
||||
The GNU C Library currently supports configurations that match the
|
||||
following patterns:
|
||||
|
||||
@smallexample
|
||||
alpha-@var{anything}-linux
|
||||
i@var{x}86-@var{anything}-gnu
|
||||
i@var{x}86-@var{anything}-linux
|
||||
m68k-@var{anything}-linux
|
||||
powerpc-@var{anything}-linux
|
||||
sparc-@var{anything}-linux
|
||||
sparc64-@var{anything}-linux
|
||||
@end smallexample
|
||||
|
||||
Former releases of this library (version 1.09.1 and perhaps earlier
|
||||
versions) used to run on the following configurations:
|
||||
|
||||
@smallexample
|
||||
alpha-dec-osf1
|
||||
alpha-@var{anything}-linuxecoff
|
||||
i@var{x}86-@var{anything}-bsd4.3
|
||||
i@var{x}86-@var{anything}-isc2.2
|
||||
i@var{x}86-@var{anything}-isc3.@var{n}
|
||||
i@var{x}86-@var{anything}-sco3.2
|
||||
i@var{x}86-@var{anything}-sco3.2v4
|
||||
i@var{x}86-@var{anything}-sysv
|
||||
i@var{x}86-@var{anything}-sysv4
|
||||
i@var{x}86-force_cpu386-none
|
||||
i@var{x}86-sequent-bsd
|
||||
i960-nindy960-none
|
||||
m68k-hp-bsd4.3
|
||||
m68k-mvme135-none
|
||||
m68k-mvme136-none
|
||||
m68k-sony-newsos3
|
||||
m68k-sony-newsos4
|
||||
m68k-sun-sunos4.@var{n}
|
||||
mips-dec-ultrix4.@var{n}
|
||||
mips-sgi-irix4.@var{n}
|
||||
sparc-sun-solaris2.@var{n}
|
||||
sparc-sun-sunos4.@var{n}
|
||||
@end smallexample
|
||||
|
||||
Since no one has volunteered to test and fix these configurations,
|
||||
they are not supported at the moment. They probably don't compile;
|
||||
they definitely don't work anymore. Porting the library is not hard.
|
||||
If you are interested in doing a port, please contact the glibc
|
||||
maintainers by sending electronic mail to @email{bug-glibc@@gnu.org}.
|
||||
|
||||
Each case of @samp{i@var{x}86} can be @samp{i386}, @samp{i486},
|
||||
@samp{i586}, or @samp{i686}. All of those configurations produce a
|
||||
library that can run on any of these processors. The library will be
|
||||
optimized for the specified processor, but will not use instructions not
|
||||
available on all of them.
|
||||
|
||||
While no other configurations are supported, there are handy aliases for
|
||||
these few. (These aliases work in other GNU software as well.)
|
||||
|
||||
@smallexample
|
||||
decstation
|
||||
hp320-bsd4.3 hp300bsd
|
||||
i486-gnu
|
||||
i586-linux
|
||||
i386-sco
|
||||
i386-sco3.2v4
|
||||
i386-sequent-dynix
|
||||
i386-svr4
|
||||
news
|
||||
sun3-sunos4.@var{n} sun3
|
||||
sun4-solaris2.@var{n} sun4-sunos5.@var{n}
|
||||
sun4-sunos4.@var{n} sun4
|
||||
@end smallexample
|
||||
|
||||
@node Reporting Bugs
|
||||
@appendixsec Reporting Bugs
|
||||
@cindex reporting bugs
|
||||
@cindex bugs, reporting
|
||||
|
||||
There are probably bugs in the GNU C library. There are certainly
|
||||
errors and omissions in this manual. If you report them, they will get
|
||||
fixed. If you don't, no one will ever know about them and they will
|
||||
remain unfixed for all eternity, if not longer.
|
||||
|
||||
To report a bug, first you must find it. Hopefully, this will be the
|
||||
hard part. Once you've found a bug, make sure it's really a bug. A
|
||||
good way to do this is to see if the GNU C library behaves the same way
|
||||
some other C library does. If so, probably you are wrong and the
|
||||
libraries are right (but not necessarily). If not, one of the libraries
|
||||
is probably wrong.
|
||||
|
||||
Once you're sure you've found a bug, try to narrow it down to the
|
||||
smallest test case that reproduces the problem. In the case of a C
|
||||
library, you really only need to narrow it down to one library
|
||||
function call, if possible. This should not be too difficult.
|
||||
|
||||
The final step when you have a simple test case is to report the bug.
|
||||
When reporting a bug, send your test case, the results you got, the
|
||||
results you expected, what you think the problem might be (if you've
|
||||
thought of anything), your system type, and the version of the GNU C
|
||||
library which you are using. Also include the files
|
||||
@file{config.status} and @file{config.make} which are created by running
|
||||
@file{configure}; they will be in whatever directory was current when
|
||||
you ran @file{configure}.
|
||||
|
||||
If you think you have found some way in which the GNU C library does not
|
||||
conform to the ISO and POSIX standards (@pxref{Standards and
|
||||
Portability}), that is definitely a bug. Report it!@refill
|
||||
|
||||
Send bug reports to the Internet address
|
||||
@email{bug-glibc@@gnu.org}. If you have other problems
|
||||
with installation or use, please report those as well.@refill
|
||||
|
||||
If you are not sure how a function should behave, and this manual
|
||||
doesn't tell you, that's a bug in the manual. Report that too! If the
|
||||
function's behavior disagrees with the manual, then either the library
|
||||
or the manual has a bug, so report the disagreement. If you find any
|
||||
errors or omissions in this manual, please report them to the Internet
|
||||
address @email{bug-glibc-manual@@gnu.org}.
|
@ -160,7 +160,9 @@ Appendices
|
||||
|
||||
* Library Summary:: A summary showing the syntax, header file,
|
||||
and derivation of each library feature.
|
||||
* Maintenance:: How to install and maintain the GNU C Library.
|
||||
* Installation:: How to install the GNU C library.
|
||||
* Maintenance:: How to enhance and port the GNU C Library.
|
||||
* Contributors:: Who wrote what parts of the GNU C Library.
|
||||
* Copying:: The GNU Library General Public License says
|
||||
how you can copy and share the GNU C Library.
|
||||
|
||||
@ -947,11 +949,8 @@ Library Maintenance
|
||||
* Reporting Bugs:: How to report bugs (if you want to
|
||||
get them fixed) and other troubles
|
||||
you may have with the GNU C library.
|
||||
* Porting:: How to port the GNU C library to
|
||||
a new machine or operating system.
|
||||
@c * Traditional C Compatibility:: Using the GNU C library with non-ANSI
|
||||
@c C compilers.
|
||||
* Contributors:: Who wrote what parts of the GNU C Library.
|
||||
|
||||
Porting the GNU C Library
|
||||
|
||||
@ -996,11 +995,13 @@ Porting the GNU C Library
|
||||
@comment Includes of the appendices.
|
||||
@include lang.texi
|
||||
@include header.texi
|
||||
@include install.texi
|
||||
@include maint.texi
|
||||
@include contrib.texi
|
||||
|
||||
|
||||
@set lgpl-appendix
|
||||
@node Copying, Concept Index, Maintenance, Top
|
||||
@node Copying, Concept Index, Contributors, Top
|
||||
@include lgpl.texinfo
|
||||
|
||||
|
||||
|
@ -1,384 +1,13 @@
|
||||
@c \input /gd/gnu/doc/texinfo
|
||||
@c This is for making the `INSTALL' file for the distribution.
|
||||
@c Makeinfo ignores it when processing the file from the include.
|
||||
@setfilename INSTALL
|
||||
|
||||
@node Maintenance, Copying, Library Summary, Top
|
||||
@node Maintenance, Contributors, Installation, Top
|
||||
@appendix Library Maintenance
|
||||
|
||||
@menu
|
||||
* Installation:: How to configure, compile and
|
||||
install the GNU C library.
|
||||
* Reporting Bugs:: How to report bugs (if you want to
|
||||
get them fixed) and other troubles
|
||||
you may have with the GNU C library.
|
||||
* Source Layout:: How to add new functions or header files
|
||||
to the GNU C library.
|
||||
* Porting:: How to port the GNU C library to
|
||||
a new machine or operating system.
|
||||
* Contributors:: Contributors to the GNU C Library.
|
||||
@end menu
|
||||
|
||||
@node Installation
|
||||
@appendixsec How to Install the GNU C Library
|
||||
@cindex installing the library
|
||||
|
||||
Installation of the GNU C library is relatively simple, but usually
|
||||
requires several GNU tools to be installed already.
|
||||
@iftex
|
||||
(@pxref{Tools for Installation}, below.)
|
||||
@end iftex
|
||||
|
||||
@menu
|
||||
* Tools for Installation:: We recommend using these tools to build.
|
||||
* Supported Configurations:: What systems the GNU C library runs on.
|
||||
@end menu
|
||||
|
||||
To configure the GNU C library for your system, run the shell script
|
||||
@file{configure} with @code{sh}. Use an argument which is the
|
||||
conventional GNU name for your system configuration---for example,
|
||||
@samp{sparc-sun-sunos4.1}, for a Sun 4 running SunOS 4.1.
|
||||
@xref{Installation, Installation, Installing GNU CC, gcc.info, Using and
|
||||
Porting GNU CC}, for a full description of standard GNU configuration
|
||||
names. If you omit the configuration name, @file{configure} will try to
|
||||
guess one for you by inspecting the system it is running on. It may or
|
||||
may not be able to come up with a guess, and the its guess might be
|
||||
wrong. @file{configure} will tell you the canonical name of the chosen
|
||||
configuration before proceeding.
|
||||
|
||||
Here are some options that you should specify (if appropriate) when
|
||||
you run @code{configure}:
|
||||
|
||||
@table @samp
|
||||
@item --with-binutils=@var{directory}
|
||||
Use the binutils (assembler and linker) in @file{@var{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. (@code{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.)
|
||||
|
||||
@c extra blank line makes it look better
|
||||
@item --without-fp
|
||||
@itemx --nfp
|
||||
|
||||
Use this option if your computer lacks hardware floating-point support
|
||||
and your operating system does not emulate an FPU.
|
||||
|
||||
@item --prefix=@var{directory}
|
||||
Install machine-independent data files in subdirectories of
|
||||
@file{@var{directory}}. (You can also set this in @file{configparms};
|
||||
see below.) The default is to install in `/usr/local'.
|
||||
|
||||
@item --exec-prefix=@var{directory}
|
||||
Install the library and other machine-dependent files in subdirectories
|
||||
of @file{@var{directory}}. (You can also set this in
|
||||
@file{configparms}; see below.) The default is to use <prefix>/bin
|
||||
and <prefix>/sbin.
|
||||
|
||||
@item --enable-shared
|
||||
@itemx --disable-shared
|
||||
Enable or disable building of an ELF shared library on systems that
|
||||
support it. The default is to build the shared library on systems using
|
||||
ELF when the GNU @code{binutils} are available.
|
||||
|
||||
@item --enable-profile
|
||||
@itemx --disable-profile
|
||||
Enable or disable building of the profiled C library, @samp{-lc_p}. The
|
||||
default is to build the profiled library. You may wish to disable it if
|
||||
you don't plan to do profiling, because it doubles the build time of
|
||||
compiling just the unprofiled static library.
|
||||
|
||||
@item --enable-omitfp
|
||||
Enable building a highly-optimized but possibly undebuggable static C
|
||||
library. This causes the normal static and shared (if enabled) C
|
||||
libraries to be compiled with maximal optimization, including the
|
||||
@samp{-fomit-frame-pointer} switch that makes debugging impossible on
|
||||
many machines, and without debugging information (which makes the
|
||||
binaries substantially smaller). An additional static library is
|
||||
compiled with no optimization and full debugging information, and
|
||||
installed as @samp{-lc_g}.
|
||||
@end table
|
||||
|
||||
The simplest way to run @code{configure} is to do it in the directory
|
||||
that contains the library sources. This prepares to build the library
|
||||
in that very directory.
|
||||
|
||||
You can prepare to build the library in some other directory by going
|
||||
to that other directory to run @code{configure}. In order to run
|
||||
configure, you will have to specify a directory for it, like this:
|
||||
|
||||
@smallexample
|
||||
mkdir sun4
|
||||
cd sun4
|
||||
../configure sparc-sun-sunos4.1
|
||||
@end smallexample
|
||||
|
||||
@noindent
|
||||
@code{configure} looks for the sources in whatever directory you
|
||||
specified for finding @code{configure} itself. It does not matter where
|
||||
in the file system the source and build directories are---as long as you
|
||||
specify the source directory when you run @code{configure}, you will get
|
||||
the proper results.
|
||||
|
||||
This feature lets you keep sources and binaries in different
|
||||
directories, and that makes it easy to build the library for several
|
||||
different machines from the same set of sources. Simply create a
|
||||
build directory for each target machine, and run @code{configure} in
|
||||
that directory specifying the target machine's configuration name.
|
||||
|
||||
The library has a number of special-purpose configuration parameters.
|
||||
These are defined in the file @file{Makeconfig}; see the comments in
|
||||
that file for the details.
|
||||
|
||||
But don't edit the file @file{Makeconfig} yourself---instead, create a
|
||||
file @file{configparms} in the directory where you are building the
|
||||
library, and define in that file the parameters you want to specify.
|
||||
@file{configparms} should @strong{not} be an edited copy of
|
||||
@file{Makeconfig}; specify only the parameters that you want to
|
||||
override. To see how to set these parameters, find the section of
|
||||
@file{Makeconfig} that says ``These are the configuration variables.''
|
||||
Then for each parameter that you want to change, copy the definition
|
||||
from @file{Makeconfig} to your new @file{configparms} file, and change
|
||||
the value as appropriate for your system.
|
||||
|
||||
It is easy to configure the GNU C library for cross-compilation by
|
||||
setting a few variables in @file{configparms}. Set @code{CC} to the
|
||||
cross-compiler for the target you configured the library for; it is
|
||||
important to use this same @code{CC} value when running
|
||||
@code{configure}, like this: @samp{CC=@var{target}-gcc configure
|
||||
@var{target}}. Set @code{BUILD_CC} to the compiler to use for for
|
||||
programs run on the build system as part of compiling the library. You
|
||||
may need to set @code{AR} and @code{RANLIB} to cross-compiling versions
|
||||
of @code{ar} and @code{ranlib} if the native tools are not configured to
|
||||
work with object files for the target you configured for.
|
||||
|
||||
Some of the machine-dependent code for some machines uses extensions in
|
||||
the GNU C compiler, so you may need to compile the library with GCC.
|
||||
(In fact, all of the existing complete ports require GCC.)
|
||||
|
||||
|
||||
To build the library and related programs, type @code{make}. This will
|
||||
produce a lot of output, some of which may look like errors from
|
||||
@code{make} (but isn't). Look for error messages from @code{make}
|
||||
containing @samp{***}. Those indicate that something is really wrong.
|
||||
|
||||
To build and run some test programs which exercise some of the library
|
||||
facilities, type @code{make check}. This will produce several files
|
||||
with names like @file{@var{program}.out}.
|
||||
|
||||
To format the @cite{GNU C Library Reference Manual} for printing, type
|
||||
@w{@code{make dvi}}. You need a working @TeX{} installation to do this.
|
||||
|
||||
To install the library and its header files, and the Info files of the
|
||||
manual, type @code{make install}. This will build things if necessary,
|
||||
before installing them. If you want to install the files in a different
|
||||
place than the one specified at configuration time you can specify a
|
||||
value for the Makefile variable @code{install_root} on the command line.
|
||||
This is useful to create chroot'ed environment or to prepare binary
|
||||
releases.@refill
|
||||
|
||||
@node Tools for Installation
|
||||
@appendixsubsec Recommended Tools to Install the GNU C Library
|
||||
@cindex installation tools
|
||||
@cindex tools, for installing library
|
||||
|
||||
We recommend installing the following GNU tools before attempting to
|
||||
build the GNU C library:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
GNU @code{make} 3.75
|
||||
|
||||
You need the latest version of GNU @code{make}. Modifying the GNU C
|
||||
Library to work with other @code{make} programs would be so hard that we
|
||||
recommend you port GNU @code{make} instead. @strong{Really.} We
|
||||
recommend version GNU @code{make} version 3.75. Versions 3.76 and
|
||||
3.76.1 are known to have bugs which only show up in big projects like
|
||||
GNU @code{libc}.
|
||||
|
||||
@item
|
||||
GCC 2.7.2.3
|
||||
|
||||
On most platforms, the GNU C library can only be compiled with the GNU C
|
||||
compiler. We recommend GCC version 2.7.2 or later; earlier versions may
|
||||
have problems.
|
||||
|
||||
On PowerPC, GCC versions dated earlier than 970904 are known not to work
|
||||
(they crash), including 2.7.2.
|
||||
|
||||
@item
|
||||
GNU @code{binutils} 2.8.1.0.17
|
||||
|
||||
Using the GNU @code{binutils} (assembler, linker, and related tools) is
|
||||
preferable when possible, and they are required to build an ELF shared C
|
||||
library. We recommend @code{binutils} version 2.8.1 or later; earlier
|
||||
versions are known to have problems or to not support all architectures.
|
||||
|
||||
@item
|
||||
GNU @code{texinfo} 3.11
|
||||
|
||||
To correctly translate and install the Texinfo documentation you need
|
||||
this version of the @code{texinfo} package. Former versions did not
|
||||
understand all the tags used in the document and also the installation
|
||||
mechanisms for the info files was not present or worked differently.
|
||||
|
||||
On some Debian Linux based systems the used @code{install-info} program
|
||||
works differently. Here you have to run make like this:
|
||||
|
||||
@smallexample
|
||||
make INSTALL_INFO=/path/to/GNU/install-info install
|
||||
@end smallexample
|
||||
@end itemize
|
||||
|
||||
If you change any configuration file you will need also
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
GNU @code{autoconf} 2.12
|
||||
@end itemize
|
||||
|
||||
@noindent
|
||||
and if you change any of the message translation files you will also need
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
@code{GNU gettext} 0.10 or later
|
||||
@end itemize
|
||||
|
||||
If any of the manual files changed you will need this
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
GNU @code{awk} 3.0
|
||||
@end itemize
|
||||
|
||||
@noindent
|
||||
If you upgrade your source tree using the patches made available you probably
|
||||
will need those package above in any case.
|
||||
|
||||
|
||||
@node Supported Configurations
|
||||
@appendixsubsec Supported Configurations
|
||||
@cindex configurations, all supported
|
||||
|
||||
The GNU C Library currently supports configurations that match the
|
||||
following patterns:
|
||||
|
||||
@smallexample
|
||||
alpha-@var{anything}-linux
|
||||
i@var{x}86-@var{anything}-gnu
|
||||
i@var{x}86-@var{anything}-linux
|
||||
m68k-@var{anything}-linux
|
||||
powerpc-@var{anything}-linux
|
||||
sparc64-@var{anything}-linux
|
||||
@end smallexample
|
||||
|
||||
Former releases of this library (version 1.09.1 and perhaps earlier
|
||||
versions) used to run on the following configurations:
|
||||
|
||||
@smallexample
|
||||
alpha-dec-osf1
|
||||
alpha-@var{anything}-linuxecoff
|
||||
i@var{x}86-@var{anything}-bsd4.3
|
||||
i@var{x}86-@var{anything}-isc2.2
|
||||
i@var{x}86-@var{anything}-isc3.@var{n}
|
||||
i@var{x}86-@var{anything}-sco3.2
|
||||
i@var{x}86-@var{anything}-sco3.2v4
|
||||
i@var{x}86-@var{anything}-sysv
|
||||
i@var{x}86-@var{anything}-sysv4
|
||||
i@var{x}86-force_cpu386-none
|
||||
i@var{x}86-sequent-bsd
|
||||
i960-nindy960-none
|
||||
m68k-hp-bsd4.3
|
||||
m68k-mvme135-none
|
||||
m68k-mvme136-none
|
||||
m68k-sony-newsos3
|
||||
m68k-sony-newsos4
|
||||
m68k-sun-sunos4.@var{n}
|
||||
mips-dec-ultrix4.@var{n}
|
||||
mips-sgi-irix4.@var{n}
|
||||
sparc-sun-solaris2.@var{n}
|
||||
sparc-sun-sunos4.@var{n}
|
||||
@end smallexample
|
||||
|
||||
Since no one has volunteered to test and fix the above configurations,
|
||||
these are not supported at the moment. It's expected that these don't
|
||||
work anymore. Porting the library is not hard. If you are interested
|
||||
in doing a port, please contact the glibc maintainers by sending
|
||||
electronic mail to @email{bug-glibc@@gnu.org}.
|
||||
|
||||
Each case of @samp{i@var{x}86} can be @samp{i386}, @samp{i486},
|
||||
@samp{i586}, or @samp{i686}. All of those configurations produce a
|
||||
library that can run on any of these processors. The library will be
|
||||
optimized for the specified processor, but will not use instructions not
|
||||
available on all of them.
|
||||
|
||||
While no other configurations are supported, there are handy aliases for
|
||||
these few. (These aliases work in other GNU software as well.)
|
||||
|
||||
@smallexample
|
||||
decstation
|
||||
hp320-bsd4.3 hp300bsd
|
||||
i486-gnu
|
||||
i586-linux
|
||||
i386-sco
|
||||
i386-sco3.2v4
|
||||
i386-sequent-dynix
|
||||
i386-svr4
|
||||
news
|
||||
sun3-sunos4.@var{n} sun3
|
||||
sun4-solaris2.@var{n} sun4-sunos5.@var{n}
|
||||
sun4-sunos4.@var{n} sun4
|
||||
@end smallexample
|
||||
|
||||
@node Reporting Bugs
|
||||
@appendixsec Reporting Bugs
|
||||
@cindex reporting bugs
|
||||
@cindex bugs, reporting
|
||||
|
||||
There are probably bugs in the GNU C library. There are certainly
|
||||
errors and omissions in this manual. If you report them, they will get
|
||||
fixed. If you don't, no one will ever know about them and they will
|
||||
remain unfixed for all eternity, if not longer.
|
||||
|
||||
To report a bug, first you must find it. Hopefully, this will be the
|
||||
hard part. Once you've found a bug, make sure it's really a bug. A
|
||||
good way to do this is to see if the GNU C library behaves the same way
|
||||
some other C library does. If so, probably you are wrong and the
|
||||
libraries are right (but not necessarily). If not, one of the libraries
|
||||
is probably wrong.
|
||||
|
||||
Once you're sure you've found a bug, try to narrow it down to the
|
||||
smallest test case that reproduces the problem. In the case of a C
|
||||
library, you really only need to narrow it down to one library
|
||||
function call, if possible. This should not be too difficult.
|
||||
|
||||
The final step when you have a simple test case is to report the bug.
|
||||
When reporting a bug, send your test case, the results you got, the
|
||||
results you expected, what you think the problem might be (if you've
|
||||
thought of anything), your system type, and the version of the GNU C
|
||||
library which you are using. Also include the files
|
||||
@file{config.status} and @file{config.make} which are created by running
|
||||
@file{configure}; they will be in whatever directory was current when
|
||||
you ran @file{configure}.
|
||||
|
||||
If you think you have found some way in which the GNU C library does not
|
||||
conform to the ISO and POSIX standards (@pxref{Standards and
|
||||
Portability}), that is definitely a bug. Report it!@refill
|
||||
|
||||
Send bug reports to the Internet address
|
||||
@email{bug-glibc@@gnu.org}. If you have other problems
|
||||
with installation or use, please report those as well.@refill
|
||||
|
||||
If you are not sure how a function should behave, and this manual
|
||||
doesn't tell you, that's a bug in the manual. Report that too! If the
|
||||
function's behavior disagrees with the manual, then either the library
|
||||
or the manual has a bug, so report the disagreement. If you find any
|
||||
errors or omissions in this manual, please report them to the Internet
|
||||
address @email{bug-glibc-manual@@gnu.org}.
|
||||
|
||||
@node Source Layout
|
||||
@appendixsec Adding New Functions
|
||||
|
||||
@ -781,7 +410,7 @@ Both @file{unix/bsd} and @file{unix/sysv/sysv4} imply @file{unix/common}.
|
||||
|
||||
@item unix/inet
|
||||
This directory is for @code{socket} and related functions on Unix systems.
|
||||
The @file{inet} top-level subdirectory is enabled by @file{unix/inet/Subdirs}.
|
||||
@file{unix/inet/Subdirs} enables the @file{inet} top-level subdirectory.
|
||||
@file{unix/common} implies @file{unix/inet}.
|
||||
@end table
|
||||
|
||||
@ -806,8 +435,9 @@ subdirectories (and subdirectory trees) for various Unix variants.
|
||||
|
||||
The functions which are system calls in most Unix systems are
|
||||
implemented in assembly code, which is generated automatically from
|
||||
specifications in the file @file{sysdeps/unix/syscalls.list}. Some
|
||||
special system calls are implemented in files that are named with a
|
||||
specifications in files named @file{syscalls.list}. There are several
|
||||
such files, one in @file{sysdeps/unix} and others in its subdirectories.
|
||||
Some special system calls are implemented in files that are named with a
|
||||
suffix of @samp{.S}; for example, @file{_exit.S}. Files ending in
|
||||
@samp{.S} are run through the C preprocessor before being fed to the
|
||||
assembler.
|
||||
@ -820,8 +450,8 @@ variant. See @file{sysdeps/unix/sysdep.h} and the machine-specific
|
||||
@file{sysdep.h} implementations to see what these macros are and what
|
||||
they should do.@refill
|
||||
|
||||
The system-specific makefile for the @file{unix} directory (that is, the
|
||||
file @file{sysdeps/unix/Makefile}) gives rules to generate several files
|
||||
The system-specific makefile for the @file{unix} directory
|
||||
(@file{sysdeps/unix/Makefile}) gives rules to generate several files
|
||||
from the Unix system you are building the library on (which is assumed
|
||||
to be the target system you are building the library @emph{for}). All
|
||||
the generated files are put in the directory where the object files are
|
||||
@ -843,411 +473,3 @@ organization of the GNU C library header files differs from that of
|
||||
traditional C implementations. This means you may need to make changes
|
||||
to your program in order to get it to compile.
|
||||
@end ignore
|
||||
|
||||
@node Contributors
|
||||
@appendixsec Contributors to the GNU C Library
|
||||
|
||||
The GNU C library was written originally by Roland McGrath. Some parts
|
||||
of the library were contributed or worked on by other people.
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
The @code{getopt} function and related code were written by
|
||||
Richard Stallman, @w{David J. MacKenzie}, and @w{Roland McGrath}.
|
||||
|
||||
@item
|
||||
The merge sort function @code{qsort} was written by Michael J. Haertel.
|
||||
|
||||
@item
|
||||
The quick sort function used as a fallback by @code{qsort} was written
|
||||
by Douglas C. Schmidt.
|
||||
|
||||
@item
|
||||
The memory allocation functions @code{malloc}, @code{realloc} and
|
||||
@code{free} and related code were written by Michael J. Haertel.
|
||||
|
||||
@item
|
||||
Fast implementations of many of the string functions (@code{memcpy},
|
||||
@code{strlen}, etc.) were written by Torbj@"orn Granlund.
|
||||
|
||||
@item
|
||||
The @file{tar.h} header file was written by David J. MacKenzie.
|
||||
|
||||
@item
|
||||
The port to the MIPS DECStation running Ultrix 4
|
||||
(@code{mips-dec-ultrix4})
|
||||
was contributed by Brendan Kehoe and Ian Lance Taylor.
|
||||
|
||||
@item
|
||||
The DES encryption function @code{crypt} and related functions were
|
||||
contributed by Michael Glad.
|
||||
|
||||
@item
|
||||
The @code{ftw} and @code{nftw} function was contributed by Ulrich Drepper.
|
||||
|
||||
@item
|
||||
The startup code to support SunOS shared libraries was contributed by
|
||||
Tom Quinn.
|
||||
|
||||
@item
|
||||
The @code{mktime} function was contributed by Paul Eggert.
|
||||
|
||||
@item
|
||||
The port to the Sequent Symmetry running Dynix version 3
|
||||
(@code{i386-sequent-bsd}) was contributed by Jason Merrill.
|
||||
|
||||
@item
|
||||
The timezone support code is derived from the public-domain timezone
|
||||
package by Arthur David Olson and his many contributors.
|
||||
|
||||
@item
|
||||
The port to the DEC Alpha running OSF/1 (@code{alpha-dec-osf1}) was
|
||||
contributed by Brendan Kehoe, using some code written by Roland McGrath.
|
||||
|
||||
@item
|
||||
The port to SGI machines running Irix 4 (@code{mips-sgi-irix4}) was
|
||||
contributed by Tom Quinn.
|
||||
|
||||
@item
|
||||
The port of the Mach and Hurd code to the MIPS architecture
|
||||
(@code{mips-@var{anything}-gnu}) was contributed by Kazumoto Kojima.
|
||||
|
||||
@item
|
||||
The floating-point printing function used by @code{printf} and friends
|
||||
and the floating-point reading function used by @code{scanf},
|
||||
@code{strtod} and friends were written by Ulrich Drepper. The
|
||||
multi-precision integer functions used in those functions are taken from
|
||||
GNU MP, which was contributed by Torbj@"orn Granlund.
|
||||
|
||||
@item
|
||||
The internationalization support in the library, and the support
|
||||
programs @code{locale} and @code{localedef}, were written by Ulrich
|
||||
Drepper. Ulrich Drepper adapted the support code for message catalogs
|
||||
(@file{libintl.h}, etc.) from the GNU @code{gettext} package, which he
|
||||
also wrote. He also contributed the @code{catgets} support and the
|
||||
entire suite of multi-byte and wide-character support functions
|
||||
(@file{wctype.h}, @file{wchar.h}, etc.).
|
||||
|
||||
@item
|
||||
The implementations of the @file{nsswitch.conf} mechanism and the files
|
||||
and DNS backends for it were designed and written by Ulrich Drepper and
|
||||
Roland McGrath, based on a backend interface defined by Peter Eriksson.
|
||||
|
||||
@item
|
||||
The port to Linux i386/ELF (@code{i386-@var{anything}-linux}) was
|
||||
contributed by Ulrich Drepper, based in large part on work done in
|
||||
Hongjiu Lu's Linux version of the GNU C Library.
|
||||
|
||||
@item
|
||||
The port to Linux/m68k (@code{m68k-@var{anything}-linux}) was
|
||||
contributed by Andreas Schwab.
|
||||
|
||||
@item
|
||||
The ports to Linux/ARM (@code{arm-@var{ANYTHING}-linuxaout}) and ARM
|
||||
standalone (@code{arm-@var{ANYTHING}-none}), as well as parts of the
|
||||
IPv6 support code, were contributed by Philip Blundell.
|
||||
|
||||
@item
|
||||
Richard Henderson contributed the ELF dynamic linking code and other
|
||||
support for the Alpha processor.
|
||||
|
||||
@item
|
||||
David Mosberger-Tang contributed the port to Linux/Alpha
|
||||
(@code{alpha-@var{anything}-linux}).
|
||||
|
||||
@item
|
||||
The port to Linux on PowerPC (@code{powerpc-@var{anything}-linux})
|
||||
was contributed by Geoffrey Keating.
|
||||
|
||||
@item
|
||||
Miles Bader wrote the argp argument-parsing package, and the argz/envz
|
||||
interfaces.
|
||||
|
||||
@item
|
||||
Stephen R. van den Berg contributed a highly-optimized @code{strstr} function.
|
||||
|
||||
@item
|
||||
Ulrich Drepper contributed the @code{hsearch} and @code{drand48}
|
||||
families of functions; reentrant @samp{@dots{}@code{_r}} versions of the
|
||||
@code{random} family; System V shared memory and IPC support code; and
|
||||
several highly-optimized string functions for i@var{x}86 processors.
|
||||
|
||||
@item
|
||||
The math functions are taken from @code{fdlibm-5.1} by Sun
|
||||
Microsystems, as modified by J.T. Conklin, Ian Lance Taylor,
|
||||
Ulrich Drepper, Andreas Schwab, and Roland McGrath.
|
||||
|
||||
@item
|
||||
The @code{libio} library used to implement @code{stdio} functions on
|
||||
some platforms was written by Per Bothner and modified by Ulrich Drepper.
|
||||
|
||||
@item
|
||||
The Internet-related code (most of the @file{inet} subdirectory) and
|
||||
several other miscellaneous functions and header files have been
|
||||
included from 4.4 BSD with little or no modification.
|
||||
|
||||
All code incorporated from 4.4 BSD is under the following copyright:
|
||||
|
||||
@quotation
|
||||
@display
|
||||
Copyright @copyright{} 1991 Regents of the University of California.
|
||||
All rights reserved.
|
||||
@end display
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
@item
|
||||
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.
|
||||
@item
|
||||
All advertising materials mentioning features or use of this software
|
||||
must display the following acknowledgement:
|
||||
@quotation
|
||||
This product includes software developed by the University of
|
||||
California, Berkeley and its contributors.
|
||||
@end quotation
|
||||
@item
|
||||
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.
|
||||
@end enumerate
|
||||
|
||||
@sc{this software is provided by the regents and 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 the regents or 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.}
|
||||
@end quotation
|
||||
|
||||
@item
|
||||
The random number generation functions @code{random}, @code{srandom},
|
||||
@code{setstate} and @code{initstate}, which are also the basis for the
|
||||
@code{rand} and @code{srand} functions, were written by Earl T. Cohen
|
||||
for the University of California at Berkeley and are copyrighted by the
|
||||
Regents of the University of California. They have undergone minor
|
||||
changes to fit into the GNU C library and to fit the @w{ISO C} standard,
|
||||
but the functional code is Berkeley's.@refill
|
||||
|
||||
@item
|
||||
The Internet resolver code is taken directly from BIND 4.9.5, which is
|
||||
under both the Berkeley copyright above and also:
|
||||
|
||||
@quotation
|
||||
Portions Copyright @copyright{} 1993 by Digital Equipment Corporation.
|
||||
|
||||
Permission to use, copy, modify, and distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies, and
|
||||
that the name of Digital Equipment Corporation not be used in
|
||||
advertising or publicity pertaining to distribution of the document or
|
||||
software without specific, written prior permission.
|
||||
|
||||
@sc{the software is provided ``as is'' and digital equipment corp.
|
||||
disclaims all warranties with regard to this software, including all
|
||||
implied warranties of merchantability and fitness. in no event shall
|
||||
digital equipment corporation be liable for any special, direct,
|
||||
indirect, or consequential damages or any damages whatsoever resulting
|
||||
from loss of use, data or profits, whether in an action of contract,
|
||||
negligence or other tortious action, arising out of or in connection
|
||||
with the use or performance of this software.}
|
||||
@end quotation
|
||||
|
||||
@item
|
||||
The code to support Sun RPC is taken verbatim from Sun's
|
||||
@w{@sc{rpcsrc-4.0}} distribution, and is covered by this copyright:
|
||||
|
||||
@quotation
|
||||
@display
|
||||
Copyright @copyright{} 1984, Sun Microsystems, Inc.
|
||||
@end display
|
||||
|
||||
Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
unrestricted use provided that this legend is included on all tape media
|
||||
and as a part of the software program in whole or part. Users may copy
|
||||
or modify Sun RPC without charge, but are not authorized to license or
|
||||
distribute it to anyone else except as part of a product or program
|
||||
developed by the user.
|
||||
|
||||
@sc{sun rpc is provided as is with no warranties of any kind including the
|
||||
warranties of design, merchantibility and fitness for a particular
|
||||
purpose, or arising from a course of dealing, usage or trade practice.}
|
||||
|
||||
Sun RPC is provided with no support and without any obligation on the
|
||||
part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
modification or enhancement.
|
||||
|
||||
@sc{sun microsystems, inc. shall have no liability with respect to the
|
||||
infringement of copyrights, trade secrets or any patents by sun rpc
|
||||
or any part thereof.}
|
||||
|
||||
In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
or profits or other special, indirect and consequential damages, even if
|
||||
Sun has been advised of the possibility of such damages.
|
||||
|
||||
@display
|
||||
Sun Microsystems, Inc.
|
||||
2550 Garcia Avenue
|
||||
Mountain View, California 94043
|
||||
@end display
|
||||
@end quotation
|
||||
|
||||
@item
|
||||
Some of the support code for Mach is taken from Mach 3.0 by CMU,
|
||||
and is under the following copyright terms:
|
||||
|
||||
@quotation
|
||||
@display
|
||||
Mach Operating System
|
||||
Copyright @copyright{} 1991,1990,1989 Carnegie Mellon University
|
||||
All Rights Reserved.
|
||||
@end display
|
||||
|
||||
Permission to use, copy, modify and distribute this software and its
|
||||
documentation is hereby granted, provided that both the copyright
|
||||
notice and this permission notice appear in all copies of the
|
||||
software, derivative works or modified versions, and any portions
|
||||
thereof, and that both notices appear in supporting documentation.
|
||||
|
||||
@sc{carnegie mellon allows free use of this software in its ``as is''
|
||||
condition. carnegie mellon disclaims any liability of any kind for
|
||||
any damages whatsoever resulting from the use of this software.}
|
||||
|
||||
Carnegie Mellon requests users of this software to return to
|
||||
|
||||
@display
|
||||
Software Distribution Coordinator
|
||||
School of Computer Science
|
||||
Carnegie Mellon University
|
||||
Pittsburgh PA 15213-3890
|
||||
@end display
|
||||
|
||||
@noindent
|
||||
or @email{Software.Distribution@@CS.CMU.EDU} any improvements or
|
||||
extensions that they make and grant Carnegie Mellon the rights to
|
||||
redistribute these changes.
|
||||
@end quotation
|
||||
|
||||
@item
|
||||
The code for the database library @file{libdb} comes from the 2.3
|
||||
release of Berkeley DB. That code is under the same copyright as 4.4 BSD
|
||||
and also:
|
||||
|
||||
@quotation
|
||||
@display
|
||||
Copyright @copyright{} 1990, 1993, 1994, 1995, 1996, 1997
|
||||
Sleepycat Software. All rights reserved.
|
||||
@end display
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
@item
|
||||
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.
|
||||
@item
|
||||
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.
|
||||
@end enumerate
|
||||
|
||||
@sc{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.}
|
||||
|
||||
@display
|
||||
Portions copyright @copyright{} 1995, 1996
|
||||
The President and Fellows of Harvard University.
|
||||
All rights reserved.
|
||||
@end display
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
@enumerate
|
||||
@item
|
||||
Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
@item
|
||||
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.
|
||||
@item
|
||||
All advertising materials mentioning features or use of this software
|
||||
must display the following acknowledgement:
|
||||
@quotation
|
||||
This product includes software developed by Harvard University
|
||||
and its contributors.
|
||||
@end quotation
|
||||
@item
|
||||
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.
|
||||
@end enumerate
|
||||
|
||||
@sc{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.}
|
||||
|
||||
@noindent
|
||||
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
|
||||
|
||||
@display
|
||||
Sleepycat Software
|
||||
394 E. Riding Dr.
|
||||
Carlisle, MA 01741
|
||||
USA
|
||||
+1-508-287-4781
|
||||
@end display
|
||||
|
||||
or @email{db@@sleepycat.com}.
|
||||
|
||||
@end quotation
|
||||
|
||||
@end itemize
|
||||
|
||||
@c @bye
|
||||
|
@ -498,10 +498,18 @@ protected using cancelation handlers.
|
||||
@c ref pthread_cleanup_push / pthread_cleanup_pop
|
||||
|
||||
The return value is normally the process ID of the child process whose
|
||||
status is reported. If the @code{WNOHANG} option was specified and no
|
||||
child process is waiting to be noticed, the value is zero. A value of
|
||||
@code{-1} is returned in case of error. The following @code{errno}
|
||||
error conditions are defined for this function:
|
||||
status is reported. If there are child processes but none of them is
|
||||
waiting to be noticed, @code{waitpid} will block until one is. However,
|
||||
if the @code{WNOHANG} option was specified, @code{waitpid} will return
|
||||
zero instead of blocking.
|
||||
|
||||
If a specific PID to wait for was given to @code{waitpid}, it will
|
||||
ignore all other children (if any). Therefore if there are children
|
||||
waiting to be noticed but the child whose PID was specified is not one
|
||||
of them, @code{waitpid} will block or return zero as described above.
|
||||
|
||||
A value of @code{-1} is returned in case of error. The following
|
||||
@code{errno} error conditions are defined for this function:
|
||||
|
||||
@table @code
|
||||
@item EINTR
|
||||
|
452
posix/wordexp.c
452
posix/wordexp.c
@ -973,45 +973,63 @@ parse_comm (char **word, size_t *word_length, size_t *max_length,
|
||||
{
|
||||
/* We are poised just after "$(" */
|
||||
int paren_depth = 1;
|
||||
int error;
|
||||
int error = 0;
|
||||
size_t comm_length = 0;
|
||||
size_t comm_maxlen = 0;
|
||||
char *comm = NULL;
|
||||
int quoted = 0; /* 1 for singly-quoted, 2 for doubly-quoted */
|
||||
|
||||
for (; words[*offset]; ++(*offset))
|
||||
{
|
||||
switch (words[*offset])
|
||||
{
|
||||
case '\'':
|
||||
if (quoted == 0)
|
||||
quoted = 1;
|
||||
else if (quoted == 1)
|
||||
quoted = 0;
|
||||
|
||||
break;
|
||||
|
||||
case '"':
|
||||
if (quoted == 0)
|
||||
quoted = 2;
|
||||
else if (quoted == 2)
|
||||
quoted = 0;
|
||||
|
||||
break;
|
||||
|
||||
case ')':
|
||||
if (--paren_depth == 0)
|
||||
if (!quoted && --paren_depth == 0)
|
||||
{
|
||||
/* Go -- give script to the shell */
|
||||
error = exec_comm (comm, word, word_length, max_length, flags,
|
||||
pwordexp, ifs, ifs_white);
|
||||
free (comm);
|
||||
if (comm)
|
||||
{
|
||||
error = exec_comm (comm, word, word_length, max_length,
|
||||
flags, pwordexp, ifs, ifs_white);
|
||||
free (comm);
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
/* This is just part of the script */
|
||||
comm = w_addchar (comm, &comm_length, &comm_maxlen, words[*offset]);
|
||||
if (comm == NULL)
|
||||
return WRDE_NOSPACE;
|
||||
|
||||
break;
|
||||
|
||||
case '(':
|
||||
++paren_depth;
|
||||
default:
|
||||
comm = w_addchar (comm, &comm_length, &comm_maxlen, words[*offset]);
|
||||
if (comm == NULL)
|
||||
return WRDE_NOSPACE;
|
||||
|
||||
break;
|
||||
if (!quoted)
|
||||
++paren_depth;
|
||||
}
|
||||
|
||||
comm = w_addchar (comm, &comm_length, &comm_maxlen, words[*offset]);
|
||||
if (comm == NULL)
|
||||
return WRDE_NOSPACE;
|
||||
}
|
||||
|
||||
/* Premature end */
|
||||
free (comm);
|
||||
if (comm)
|
||||
free (comm);
|
||||
|
||||
return WRDE_SYNTAX;
|
||||
}
|
||||
|
||||
@ -1022,73 +1040,100 @@ parse_param (char **word, size_t *word_length, size_t *max_length,
|
||||
const char *ifs, const char *ifs_white, int quoted)
|
||||
{
|
||||
/* We are poised just after "$" */
|
||||
enum remove_pattern_enum
|
||||
enum action
|
||||
{
|
||||
RP_NONE = 0,
|
||||
RP_SHORT_LEFT,
|
||||
RP_LONG_LEFT,
|
||||
RP_SHORT_RIGHT,
|
||||
RP_LONG_RIGHT
|
||||
ACT_NONE,
|
||||
ACT_RP_SHORT_LEFT = '#',
|
||||
ACT_RP_LONG_LEFT = 'L',
|
||||
ACT_RP_SHORT_RIGHT = '%',
|
||||
ACT_RP_LONG_RIGHT = 'R',
|
||||
ACT_NULL_ERROR = '?',
|
||||
ACT_NULL_SUBST = '-',
|
||||
ACT_NONNULL_SUBST = '+',
|
||||
ACT_NULL_ASSIGN = '='
|
||||
};
|
||||
size_t start = *offset;
|
||||
size_t env_length = 0;
|
||||
size_t env_maxlen = 0;
|
||||
size_t pat_length = 0;
|
||||
size_t pat_maxlen = 0;
|
||||
size_t start = *offset;
|
||||
char *env = NULL;
|
||||
char *pattern = NULL;
|
||||
char *value = NULL;
|
||||
char action = '\0';
|
||||
enum remove_pattern_enum remove = RP_NONE;
|
||||
int colon_seen = 0;
|
||||
enum action action = ACT_NONE;
|
||||
int depth = 0;
|
||||
int colon_seen = 0;
|
||||
int seen_hash = 0;
|
||||
int free_value = 0;
|
||||
int pattern_is_quoted = 0; /* 1 for singly-quoted, 2 for doubly-quoted */
|
||||
int error;
|
||||
int brace = words[*offset] == '{';
|
||||
|
||||
if (brace)
|
||||
++*offset;
|
||||
|
||||
for (; words[*offset]; ++(*offset))
|
||||
{
|
||||
switch (words[*offset])
|
||||
{
|
||||
case '{':
|
||||
++depth;
|
||||
int special;
|
||||
|
||||
if (action != '\0' || remove != RP_NONE)
|
||||
if (action != ACT_NONE)
|
||||
{
|
||||
switch (words[*offset])
|
||||
{
|
||||
pattern = w_addchar (pattern, &pat_length, &pat_maxlen,
|
||||
words[*offset]);
|
||||
if (pattern == NULL)
|
||||
goto no_space;
|
||||
case '{':
|
||||
if (!pattern_is_quoted)
|
||||
++depth;
|
||||
break;
|
||||
|
||||
case '}':
|
||||
if (!pattern_is_quoted)
|
||||
{
|
||||
if (depth == 0)
|
||||
goto envsubst;
|
||||
--depth;
|
||||
}
|
||||
break;
|
||||
|
||||
case '\\':
|
||||
if (!pattern_is_quoted && words[++*offset] == '\0')
|
||||
goto syntax;
|
||||
break;
|
||||
|
||||
case '\'':
|
||||
if (pattern_is_quoted == 0)
|
||||
pattern_is_quoted = 1;
|
||||
else if (pattern_is_quoted == 1)
|
||||
pattern_is_quoted = 0;
|
||||
|
||||
break;
|
||||
|
||||
case '"':
|
||||
if (pattern_is_quoted == 0)
|
||||
pattern_is_quoted = 2;
|
||||
else if (pattern_is_quoted == 2)
|
||||
pattern_is_quoted = 0;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (*offset == start)
|
||||
break;
|
||||
pattern = w_addchar (pattern, &pat_length, &pat_maxlen,
|
||||
words[*offset]);
|
||||
if (pattern == NULL)
|
||||
goto no_space;
|
||||
|
||||
/* Otherwise evaluate */
|
||||
/* (and re-parse this character) */
|
||||
--(*offset);
|
||||
goto envsubst;
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (words[*offset])
|
||||
{
|
||||
case '}':
|
||||
if (words[start] != '{')
|
||||
--(*offset);
|
||||
if (!brace)
|
||||
goto end_of_word;
|
||||
|
||||
if (action != '\0' || remove != RP_NONE)
|
||||
{
|
||||
if (--depth)
|
||||
{
|
||||
pattern = w_addchar (pattern, &pat_length, &pat_maxlen,
|
||||
words[*offset]);
|
||||
if (pattern == NULL)
|
||||
goto no_space;
|
||||
if (env == NULL)
|
||||
goto syntax;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Evaluate */
|
||||
/* Evaluate. */
|
||||
goto envsubst;
|
||||
|
||||
case '#':
|
||||
@ -1100,173 +1145,104 @@ parse_param (char **word, size_t *word_length, size_t *max_length,
|
||||
goto envsubst;
|
||||
}
|
||||
|
||||
if (words[start] != '{')
|
||||
{
|
||||
/* Evaluate */
|
||||
/* (and re-parse this character) */
|
||||
--(*offset);
|
||||
goto envsubst;
|
||||
}
|
||||
if (!brace)
|
||||
/* Evaluate */
|
||||
/* (and re-parse this character) */
|
||||
goto end_of_word;
|
||||
|
||||
/* At the start? (i.e. 'string length') */
|
||||
if (*offset == start + 1)
|
||||
if (env == NULL)
|
||||
{
|
||||
seen_hash = 1;
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
else if (seen_hash)
|
||||
goto syntax;
|
||||
|
||||
/* Separating variable name from prefix pattern? */
|
||||
if (remove == RP_NONE)
|
||||
action = ACT_RP_SHORT_LEFT;
|
||||
if (words[1 + *offset] == '#')
|
||||
{
|
||||
remove = RP_SHORT_LEFT;
|
||||
break;
|
||||
}
|
||||
else if (remove == RP_SHORT_LEFT)
|
||||
{
|
||||
remove = RP_LONG_LEFT;
|
||||
break;
|
||||
++*offset;
|
||||
action = ACT_RP_LONG_LEFT;
|
||||
}
|
||||
|
||||
/* Must be part of prefix/suffix pattern. */
|
||||
pattern = w_addchar (pattern, &pat_length, &pat_maxlen,
|
||||
words[*offset]);
|
||||
if (pattern == NULL)
|
||||
goto no_space;
|
||||
|
||||
break;
|
||||
continue;
|
||||
|
||||
case '%':
|
||||
if (!env || !*env)
|
||||
goto syntax;
|
||||
if (!brace)
|
||||
/* Re-parse this character after substitution */
|
||||
goto end_of_word;
|
||||
|
||||
/* Separating variable name from suffix pattern? */
|
||||
if (remove == RP_NONE)
|
||||
{
|
||||
remove = RP_SHORT_RIGHT;
|
||||
break;
|
||||
}
|
||||
else if (remove == RP_SHORT_RIGHT)
|
||||
{
|
||||
remove = RP_LONG_RIGHT;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Must be part of prefix/suffix pattern. */
|
||||
pattern = w_addchar (pattern, &pat_length, &pat_maxlen,
|
||||
words[*offset]);
|
||||
if (pattern == NULL)
|
||||
goto no_space;
|
||||
|
||||
break;
|
||||
|
||||
case ':':
|
||||
if (!env || !*env)
|
||||
goto syntax;
|
||||
|
||||
if (action != '\0' || remove != RP_NONE)
|
||||
{
|
||||
pattern = w_addchar (pattern, &pat_length, &pat_maxlen,
|
||||
words[*offset]);
|
||||
if (pattern == NULL)
|
||||
goto no_space;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if ((words[1 + *offset] == '-') || (words[1 + *offset] == '=')
|
||||
|| (words[1 + *offset] == '?') || (words[1 + *offset] == '+'))
|
||||
{
|
||||
colon_seen = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
goto syntax;
|
||||
|
||||
case '-':
|
||||
case '=':
|
||||
case '?':
|
||||
case '+':
|
||||
if (!env || !*env)
|
||||
goto syntax;
|
||||
|
||||
if (seen_hash)
|
||||
goto syntax;
|
||||
|
||||
if (action != '\0' || remove != RP_NONE)
|
||||
action = ACT_RP_SHORT_RIGHT;
|
||||
if (words[1 + *offset] == '%')
|
||||
{
|
||||
pattern = w_addchar (pattern, &pat_length, &pat_maxlen,
|
||||
words[*offset]);
|
||||
if (pattern == NULL)
|
||||
goto no_space;
|
||||
|
||||
break;
|
||||
++*offset;
|
||||
action = ACT_RP_LONG_RIGHT;
|
||||
}
|
||||
|
||||
continue;
|
||||
|
||||
case ':':
|
||||
if (!brace)
|
||||
goto end_of_word;
|
||||
|
||||
if (!env || !*env)
|
||||
goto syntax;
|
||||
|
||||
if (seen_hash)
|
||||
goto syntax;
|
||||
|
||||
if (words[1 + *offset] != '-' && words[1 + *offset] != '='
|
||||
&& words[1 + *offset] != '?' && words[1 + *offset] != '+')
|
||||
goto syntax;
|
||||
|
||||
colon_seen = 1;
|
||||
action = words[++*offset];
|
||||
continue;
|
||||
|
||||
case '-':
|
||||
case '=':
|
||||
case '?':
|
||||
case '+':
|
||||
if (!brace)
|
||||
goto end_of_word;
|
||||
|
||||
if (!env || !*env)
|
||||
goto syntax;
|
||||
|
||||
action = words[*offset];
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
|
||||
case '\\':
|
||||
if (action != '\0' || remove != RP_NONE)
|
||||
{
|
||||
/* Um. Is this right? */
|
||||
error = parse_qtd_backslash (word, word_length, max_length,
|
||||
words, offset);
|
||||
if (error == 0)
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
error = WRDE_SYNTAX;
|
||||
}
|
||||
special = (strchr ("*@$", words[*offset]) != NULL
|
||||
|| isdigit (words[*offset]));
|
||||
|
||||
if (env)
|
||||
free (env);
|
||||
if (!isalpha (words[*offset]) && !special)
|
||||
/* Stop and evaluate, remembering char we stopped at */
|
||||
break;
|
||||
|
||||
if (pattern != NULL)
|
||||
free (pattern);
|
||||
env = w_addchar (env, &env_length, &env_maxlen,
|
||||
words[*offset]);
|
||||
if (env == NULL)
|
||||
goto no_space;
|
||||
|
||||
return error;
|
||||
|
||||
default:
|
||||
if (action != '\0' || remove != RP_NONE)
|
||||
{
|
||||
pattern = w_addchar (pattern, &pat_length, &pat_maxlen,
|
||||
words[*offset]);
|
||||
if (pattern == NULL)
|
||||
goto no_space;
|
||||
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
int special = (strchr ("*@$", words[*offset]) != NULL
|
||||
|| isdigit (words[*offset]));
|
||||
|
||||
if (isalpha (words[*offset]) || special)
|
||||
{
|
||||
env = w_addchar (env, &env_length, &env_maxlen,
|
||||
words[*offset]);
|
||||
if (env == NULL)
|
||||
goto no_space;
|
||||
|
||||
if (special && words[start] != '{')
|
||||
goto envsubst;
|
||||
|
||||
/* Keep going (get next char) */
|
||||
break;
|
||||
}
|
||||
|
||||
/* Stop and evaluate, remembering char we stopped at */
|
||||
--(*offset);
|
||||
goto envsubst;
|
||||
}
|
||||
if (special)
|
||||
{
|
||||
if (brace)
|
||||
++*offset;
|
||||
goto envsubst;
|
||||
}
|
||||
}
|
||||
|
||||
/* End of input string -- remember to reparse the character that we stopped
|
||||
* at. */
|
||||
end_of_word:
|
||||
--(*offset);
|
||||
|
||||
envsubst:
|
||||
@ -1381,53 +1357,39 @@ envsubst:
|
||||
free (env);
|
||||
|
||||
/* Each parameter is a separate word ("$@") */
|
||||
if (__libc_argv[0] == NULL)
|
||||
{
|
||||
/* This can happen if the application is started without any
|
||||
parameter, not even a name. This is legal according to
|
||||
POSIX since the giving parameters is only a "should" rule. */
|
||||
*word = __strdup ("");
|
||||
*max_length = *word_length = 0;
|
||||
}
|
||||
else
|
||||
if (__libc_argv[0] != NULL && __libc_argv[1] != NULL)
|
||||
{
|
||||
/* Append first parameter to current word. */
|
||||
int p;
|
||||
|
||||
for (p = 1; __libc_argv[p + 1]; p++)
|
||||
*word = w_addstr (*word, word_length, max_length, __libc_argv[1]);
|
||||
if (*word == NULL)
|
||||
return WRDE_NOSPACE;
|
||||
|
||||
for (p = 1; __libc_argv[p]; p++)
|
||||
{
|
||||
char *copy = __strdup (__libc_argv[p]);
|
||||
if (copy == NULL)
|
||||
if (w_addword (pwordexp, *word))
|
||||
return WRDE_NOSPACE;
|
||||
|
||||
error = w_addword (pwordexp, copy);
|
||||
if (error)
|
||||
{
|
||||
free (copy);
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
/* Last parameter becomes current word */
|
||||
if (__libc_argv[p])
|
||||
{
|
||||
*word = __strdup (__libc_argv[p]);
|
||||
*max_length = *word_length = strlen (*word);
|
||||
if (*word == NULL)
|
||||
return WRDE_NOSPACE;
|
||||
|
||||
*max_length = *word_length = strlen (*word);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
value = getenv (env);
|
||||
|
||||
if (action != '\0' || remove != RP_NONE)
|
||||
if (action != ACT_NONE)
|
||||
{
|
||||
switch (action)
|
||||
{
|
||||
case 0:
|
||||
case ACT_RP_SHORT_LEFT:
|
||||
case ACT_RP_LONG_LEFT:
|
||||
case ACT_RP_SHORT_RIGHT:
|
||||
case ACT_RP_LONG_RIGHT:
|
||||
{
|
||||
char *p;
|
||||
char c;
|
||||
@ -1441,9 +1403,9 @@ envsubst:
|
||||
if (value == NULL)
|
||||
break;
|
||||
|
||||
switch (remove)
|
||||
switch (action)
|
||||
{
|
||||
case RP_SHORT_LEFT:
|
||||
case ACT_RP_SHORT_LEFT:
|
||||
for (p = value; p <= end; ++p)
|
||||
{
|
||||
c = *p;
|
||||
@ -1459,7 +1421,7 @@ envsubst:
|
||||
|
||||
break;
|
||||
|
||||
case RP_LONG_LEFT:
|
||||
case ACT_RP_LONG_LEFT:
|
||||
for (p = end; p >= value; --p)
|
||||
{
|
||||
c = *p;
|
||||
@ -1475,7 +1437,7 @@ envsubst:
|
||||
|
||||
break;
|
||||
|
||||
case RP_SHORT_RIGHT:
|
||||
case ACT_RP_SHORT_RIGHT:
|
||||
for (p = end; p >= value; --p)
|
||||
{
|
||||
if (fnmatch (pattern, p, 0) != FNM_NOMATCH)
|
||||
@ -1487,7 +1449,7 @@ envsubst:
|
||||
|
||||
break;
|
||||
|
||||
case RP_LONG_RIGHT:
|
||||
case ACT_RP_LONG_RIGHT:
|
||||
for (p = value; p <= end; ++p)
|
||||
{
|
||||
if (fnmatch (pattern, p, 0) != FNM_NOMATCH)
|
||||
@ -1500,13 +1462,13 @@ envsubst:
|
||||
break;
|
||||
|
||||
default:
|
||||
assert (! "Unexpected `remove' value\n");
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case '?':
|
||||
case ACT_NULL_ERROR:
|
||||
if (value && *value)
|
||||
/* Substitute parameter */
|
||||
break;
|
||||
@ -1519,9 +1481,6 @@ envsubst:
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Error - exit */
|
||||
fprintf (stderr, "%s: ", env);
|
||||
|
||||
if (*pattern)
|
||||
{
|
||||
/* Expand 'pattern' and write it to stderr */
|
||||
@ -1533,9 +1492,11 @@ envsubst:
|
||||
{
|
||||
int i;
|
||||
|
||||
fprintf (stderr, "%s:", env);
|
||||
|
||||
for (i = 0; i < we.we_wordc; ++i)
|
||||
{
|
||||
fprintf (stderr, "%s%s", i ? " " : "", we.we_wordv[i]);
|
||||
fprintf (stderr, " %s", we.we_wordv[i]);
|
||||
}
|
||||
|
||||
fprintf (stderr, "\n");
|
||||
@ -1548,12 +1509,12 @@ envsubst:
|
||||
return error;
|
||||
}
|
||||
|
||||
fprintf (stderr, "parameter null or not set\n");
|
||||
fprintf (stderr, "%s: parameter null or not set\n", env);
|
||||
free (env);
|
||||
free (pattern);
|
||||
return WRDE_BADVAL;
|
||||
|
||||
case '-':
|
||||
case ACT_NULL_SUBST:
|
||||
if (value && *value)
|
||||
/* Substitute parameter */
|
||||
break;
|
||||
@ -1577,11 +1538,15 @@ envsubst:
|
||||
/* No field-splitting is allowed, so imagine
|
||||
quotes around the word. */
|
||||
char *qtd_pattern = malloc (3 + strlen (pattern));
|
||||
sprintf (qtd_pattern, "\"%s\"", pattern);
|
||||
if (qtd_pattern)
|
||||
sprintf (qtd_pattern, "\"%s\"", pattern);
|
||||
free (pattern);
|
||||
pattern = qtd_pattern;
|
||||
}
|
||||
|
||||
if (pattern == NULL && (pattern = __strdup("")) == NULL)
|
||||
goto no_space;
|
||||
|
||||
error = wordexp (pattern, &we, flags);
|
||||
if (error)
|
||||
{
|
||||
@ -1606,7 +1571,7 @@ envsubst:
|
||||
goto no_space;
|
||||
}
|
||||
|
||||
if (action == '=')
|
||||
if (action == ACT_NULL_ASSIGN)
|
||||
{
|
||||
char *words;
|
||||
char *cp;
|
||||
@ -1634,7 +1599,7 @@ envsubst:
|
||||
return 0;
|
||||
}
|
||||
|
||||
case '+':
|
||||
case ACT_NONNULL_SUBST:
|
||||
if (value && *value)
|
||||
goto subst_word;
|
||||
|
||||
@ -1646,7 +1611,7 @@ envsubst:
|
||||
free (pattern);
|
||||
return 0;
|
||||
|
||||
case '=':
|
||||
case ACT_NULL_ASSIGN:
|
||||
if (value && *value)
|
||||
/* Substitute parameter */
|
||||
break;
|
||||
@ -1818,8 +1783,17 @@ parse_dollars (char **word, size_t *word_length, size_t *max_length,
|
||||
{
|
||||
/* Differentiate between $((1+3)) and $((echo);(ls)) */
|
||||
int i = 3 + *offset;
|
||||
while (words[i] && words[i] != ')')
|
||||
++i;
|
||||
int depth = 0;
|
||||
while (words[i] && !(depth == 0 && words[i] == ')'))
|
||||
{
|
||||
if (words[i] == '(')
|
||||
++depth;
|
||||
else if (words[i] == ')')
|
||||
--depth;
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
if (words[i] == ')' && words[i + 1] == ')')
|
||||
{
|
||||
(*offset) += 3;
|
||||
|
Loading…
Reference in New Issue
Block a user