{AJ} This is at first a kernel issue. The kernel defines limits with
OPEN_MAX the number of simultaneous open files and with FD_SETSIZE the
number of used file descriptors. You need to change these values in your
-kernel and recompile the kernel so that the kernel allows to use more open
+kernel and recompile the kernel so that the kernel allows more open
files. You don't necessarily need to recompile the GNU C library since the
only place where OPEN_MAX and FD_SETSIZE is really needed in the library
itself is the size of fd_set which is used by select.
/* Linux specific: minimum supported kernel version. */
#undef __LINUX_KERNEL_VERSION
-/* An extension in gcc 2.96 and up allows to substract the values of two
+/* An extension in gcc 2.96 and up allows the subtraction of two
local labels. */
#undef HAVE_SUBTRACT_LOCAL_LABELS
\n\
--list list all dependencies and how they are resolved\n\
--verify verify that given object really is a dynamically linked\n\
- object we get handle\n\
+ object we can handle\n\
--library-path PATH use given PATH instead of content of the environment\n\
variable LD_LIBRARY_PATH\n\
--inhibit-rpath LIST ignore RUNPATH and RPATH information in object names\n\
one with the lower costs. Otherwise add the new charset at the
end.
- The module database is organized in a tree form which allows to
- search for prefixes. So we search for the first entry with a
+ The module database is organized in a tree form which allows
+ searching for prefixes. So we search for the first entry with a
matching prefix and any other matching entry can be found from
this place. */
struct gconv_module *node = __gconv_modules_db;
{
/* The entries in the list are sorted by length and then
alphabetically. This is the order in which we will add the
- elements to the collation table. This allows to simply
- walk the table in sequence and stop at the first matching
+ elements to the collation table. This allows simply walking
+ the table in sequence and stopping at the first matching
entry. Since the longer sequences are coming first in the
list they have the possibility to match first, just as it
has to be. In the worst case we are walking to the end of
must add the prolog. But since there is no communication between the
different calls of @code{mbsrtowcs} the conversion functions have no
possibility to find this out. The situation is different for sequences
-of @code{iconv} calls since the handle allows to access the needed
+of @code{iconv} calls since the handle allows access to the needed
information.
This element is mostly used together with @code{__invocation_counter} in
@comment (NONE)
@comment X/Open
@defvr Macro _LARGEFILE64_SOURCE
-If you define this macro an additional set of function gets available
-which enables to use on @w{32 bit} systems to use files of sizes beyond
+If you define this macro an additional set of function is made available
+which enables @w{32 bit} systems to use files of sizes beyond
the usual limit of 2GB. This interface is not available if the system
does not support files that large. On systems where the natural file
size limit is greater than 2GB (i.e., on @w{64 bit} systems) the new
functions are identical to the replaced functions.
The new functionality is made available by a new set of types and
-functions which replace existing. The names of these new objects
+functions which replace the existing ones. The names of these new objects
contain @code{64} to indicate the intention, e.g., @code{off_t}
vs. @code{off64_t} and @code{fseeko} vs. @code{fseeko64}.
@comment (NONE)
@comment X/Open
@defvr Macro _FILE_OFFSET_BITS
-This macro lets decide which file system interface shall be used, one
+This macro determines which file system interface shall be used, one
replacing the other. While @code{_LARGEFILE64_SOURCE} makes the @w{64
bit} interface available as an additional interface
-@code{_FILE_OFFSET_BITS} allows to use the @w{64 bit} interface to
+@code{_FILE_OFFSET_BITS} allows the @w{64 bit} interface to
replace the old interface.
-If @code{_FILE_OFFSET_BITS} is undefined or if it is defined to the
-value @code{32} nothing changes. The @w{32 bit} interface is used and
+If @code{_FILE_OFFSET_BITS} is undefined, or if it is defined to the
+value @code{32}, nothing changes. The @w{32 bit} interface is used and
types like @code{off_t} have a size of @w{32 bits} on @w{32 bit}
systems.
-If the macro is defined to the value @code{64} the large file interface
+If the macro is defined to the value @code{64}, the large file interface
replaces the old interface. I.e., the functions are not made available
under different names as @code{_LARGEFILE64_SOURCE} does. Instead the
old function names now reference the new functions, e.g., a call to
If you define one of these macros, reentrant versions of several functions get
declared. Some of the functions are specified in POSIX.1c but many others
are only available on a few other systems or are unique to GNU libc.
-The problem is that the standardization of the thread safe C library
-interface still is behind.
+The problem is the delay in the standardization of the thread safe C library
+interface.
-Unlike on some other systems no special version of the C library must be
+Unlike on some other systems, no special version of the C library must be
used for linking. There is only one version but while compiling this
it must have been specified to compile as thread safe.
@end defvr
@smallexample
char *
-gnu_getcwd ()
+gnu_getcwd (size_t size)
@{
- int size = 100;
- char *buffer = (char *) xmalloc (size);
-
while (1)
@{
+ char *buffer = (char *) xmalloc (size);
char *value = getcwd (buffer, size);
- if (value != 0)
- return buffer;
- size *= 2;
+ if (value == buffer)
+ return value;
free (buffer);
- buffer = (char *) xmalloc (size);
+ if (errno != ERANGE)
+ return value;
+ size *= 2;
@}
@}
@end smallexample
@deftypefun int truncate64 (const char *@var{name}, off64_t @var{length})
This function is similar to the @code{truncate} function. The
difference is that the @var{length} argument is 64 bits wide even on 32
-bits machines which allows to handle file with a size up to @math{2^63}
-bytes.
+bits machines, which allows the handling of files with sizes up to
+@math{2^63} bytes.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
32 bits machine this function is actually available under the name
@deftypefun int ftruncate64 (int @var{id}, off64_t @var{length})
This function is similar to the @code{ftruncate} function. The
difference is that the @var{length} argument is 64 bits wide even on 32
-bits machines which allows to handle file with a size up to @math{2^63}
-bytes.
+bits machines which allows the handling of files with sizes up to
+@math{2^63} bytes.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
32 bits machine this function is actually available under the name
GNU libc can be compiled in the source directory, but we strongly advise to
build it in a separate build directory. For example, if you have unpacked
the glibc sources in @file{/src/gnu/glibc-2.1.0}, create a directory
-@file{/src/gnu/glibc-build} to put the object files in. This allows to
-remove the whole build directory in case an error occurs which is the
-safest way to get a clean way and should always be done.
+@file{/src/gnu/glibc-build} to put the object files in. This allows
+removing the whole build directory in case an error occurs, which is the
+safest way to get a fresh start and should always be done.
From your object directory, run the shell script @file{configure} found
at the top level of the source tree. In the scenario above, you'd type
@table @code
@item M_TRIM_THRESHOLD
-This is the minimum size (in bytes) of the top-most, releaseable chunk
+This is the minimum size (in bytes) of the top-most, releasable chunk
that will cause @code{sbrk} to be called with a negative argument in
order to return memory to the system.
@item M_TOP_PAD
@end smallexample
The value of @var{caller} is the return address found on the stack when
-the @code{realloc} function was called. This value allows to trace the
+the @code{realloc} function was called. This value allows you to trace the
memory consumption of the program.
@end defvar
@end smallexample
The value of @var{caller} is the return address found on the stack when
-the @code{free} function was called. This value allows to trace the
+the @code{free} function was called. This value allows you to trace the
memory consumption of the program.
@end defvar
This is the total size of memory occupied by free (not in use) chunks.
@item int keepcost
-This is the size of the top-most releaseable chunk that normally
+This is the size of the top-most releasable chunk that normally
borders the end of the heap (i.e. the ``brk'' of the process).
@end table
For obvious reasons this also happens if the application is installed
with the SUID or SGID bit set.
-If the named file is successfully opened @code{mtrace} installs special
+If the named file is successfully opened, @code{mtrace} installs special
handlers for the functions @code{malloc}, @code{realloc}, and
-@code{free} (@pxref{Hooks for Malloc}). From now on all uses of these
+@code{free} (@pxref{Hooks for Malloc}). From then on, all uses of these
functions are traced and protocolled into the file. There is now of
course a speed penalty for all calls to the traced functions so tracing
-should not be enabled during their normal use.
+should not be enabled during normal use.
This function is a GNU extension and generally not available on other
systems. The prototype can be found in @file{mcheck.h}.
@end table
-Using @code{NLSPATH} allows to specify arbitrary directories to be
-searched for message catalogs while still allowing different languages
-to be used. If the @code{NLSPATH} environment variable is not set the
-default value is
+Using @code{NLSPATH} allows arbitrary directories to be searched for
+message catalogs while still allowing different languages to be used.
+If the @code{NLSPATH} environment variable is not set, the default value
+is
@smallexample
@var{prefix}/share/locale/%L/%N:@var{prefix}/share/locale/%L/LC_MESSAGES/%N
@cindex gencat
The @code{gencat} program is specified in the X/Open standard and the
-GNU implementation follows this specification and so allows to process
+GNU implementation follows this specification and so processes
all correctly formed input files. Additionally some extension are
implemented which help to work in a more reasonable way with the
@code{catgets} functions.
@end smallexample
We can use @file{/usr/share} since the @file{.mo} files containing the
-message catalogs are system independent, all systems can use the same
+message catalogs are system independent, so all systems can use the same
files. If the program executed the @code{bindtextdomain} function for
-the message domain that is currently handled the @code{dir_name}
-component is the exactly the value which was given to the function as
-the second parameter. I.e., @code{bindtextdomain} allows to overwrite
+the message domain that is currently handled, the @code{dir_name}
+component is exactly the value which was given to the function as
+the second parameter. I.e., @code{bindtextdomain} allows overwriting
the only system dependent and fixed value to make it possible to
-address file everywhere in the filesystem.
+address files anywhere in the filesystem.
The @var{category} is the name of the locale category which was selected
in the program code. For @code{gettext} and @code{dgettext} this is
So this function is equivalent to the @code{hcreate} function except
that the initialized data structure is controlled by the user.
-This allows to have more than once hashing table at one time. The
+This allows having more than one hashing table at one time. The
memory necessary for the @code{struct hsearch_data} object can be
allocated dynamically.
@end deftypefun
In addition to the function to create and destroy the tree data
-structure there is another function which allows to apply a function on
-all elements of the tree. The function must have this type:
+structure, there is another function which allows you to apply a
+function to all elements of the tree. The function must have this type:
@smallexample
void __action_fn_t (const void *nodep, VISIT value, int level);
@itemize @bullet
@item
An optional specification of the parameter used for this format.
-Normally the parameters to the @code{printf} function a assigned to the
+Normally the parameters to the @code{printf} function are assigned to the
formats in the order of appearance in the format string. But in some
situations (such as message translation) this is not desirable and this
-extension allows to specify and explicit parameter to be used.
+extension allows an explicit parameter to be specified.
The @var{param-no} part of the format must be an integer in the range of
1 to the maximum number of arguments present to the function call. Some
#1: 0, 1, 3 1101
#2: 0, 2, 3 1011
#3: 0, 3 1001
- This allows to represent all possible combinations of capability
- names in the string. First generate the strings. */
+ This allows the representation of all possible combinations of
+ capability names in the string. First generate the strings. */
result[1].str = result[0].str = cp = (char *) (result + *sz);
#define add(idx) \
cp = __mempcpy (__mempcpy (cp, temp[idx].str, temp[idx].len), "/", 1);
/*
* This is for COMPATIBILITY with Linux/x86 only. Linux/Alpha system
- * calls return an error indication in a3. This allows to return
- * arbitrary 64bit values in v0 (because negative values are not
- * mistaken as error numbers). However, C allows to return only one
- * value so the interface below folds the error indication passed in
+ * calls return an error indication in a3. This allows arbitrary 64bit
+ * values to be returned in v0 (because negative values are not
+ * mistaken as error numbers). However, C allows only one value to
+ * be returned, so the interface below folds the error indication passed in
* a3 back into v0: it sets v0 to -errno if an error occurs. Thus,
* no negative 64bit numbers can be returned. To avoid this problem,
* use assembly stubs wherever possible/convenient.