From 2c6fe0bd3b270fc644dd4c773f2d47b93f404efe Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 6 Nov 1996 04:24:40 +0000 Subject: update from main archive 961105 Wed Nov 6 04:30:26 1996 Ulrich Drepper * sysdeps/unix/sysv/linux/syscalls.list: Add weak alias llseek for _llseek syscall. Reported by Andy Sewell . * string/argz.h: Don't protect by __USE_GNU. Tue Nov 5 23:38:28 1996 Ulrich Drepper * Lots of files: Update and reformat copyright. * Makefile (headers): Add xopen_lim.h. * catgets/nl_types.h: Move __BEGIN_DECLS before definition of nl_catd. * grp/grp.h: Define setgrent, getgrent, endgrent, and getgrent_r if __USE_XOPEN_EXTENDED is defined. * pwd/pwd.h: Define setpwent, getpwent, endpwent, and getpwent_r if __USE_XOPEN_EXTENDED is defined. * io/Makefile (routines): Add lchown. * io/sys/poll.h: Add definition of POLLWRNORM. * io/sys/stat.h: Declare lstat, fchmod, mknod when __USE_XOPEN_EXTENDED is defined. * libio/Makefile (routines): Add obprintf. * libio/obprintf.c: New file. * libio/iolibio.h: Add prototypes for _IO_obstack_vprintf and _IO_obstack_printf. * libio/libio.h: Fix typo. * libio/stdio.h: Declare tempnam if __USE_XOPEN_EXTENDED is defined. Add prototypes for obstack_vprintf and obstack_printf. * manual/creature.texi: Describe _XOPEN_SOURCE macro. * manual/intro.texi: Add reference to NSS chapter. * manual/libc.texinfo: Update UPDATED. Comment out `@printindex cp'. It works again. * manual/memory.texi: Add description for obstack_ptr_grow, obstack_int_grow, obstack_ptr_grow_fast, and obstack_int_grow_fast. * manual/nss.texi: Add a few @cindex entries and change NSS_STATUS_* index entries to @vindex. * manual/users.texi: Correct @cindex entry for Netgroup. * math/mathcalls.h: Use __USE_XOPEN and __USE_XOPEN_EXTENDED to make declarations visible for X/Open sources. * misc/search.h: Declare insque/remque only is __USE_SVID or __USE_XOPEN_EXTENDED is defined. * misc/sys/uio.h (readv, writev): Change return value from int to ssize_t. * posix/Makefile (headers): Add re_comp.h. * posix/re_comp.h: New file. XPG interface to regex functions. * posix/getconf.c: Add all names from XPG4.2. * posix/posix1_lim.h: Increase minimum values for _POSIX_CHILD_MAX and _POSIX_OPEN_MAX to minimums from XPG4.2. * sysdeps/generic/confname.h: Add all _SC_* names from XPG4.2. * sysdeps/posix/sysconf.c: Handle new _SC_* values. * sysdeps/stub/sysconf.c: Likewise. * posix/unistd.h: Add declaration of ualarm and lchown. Declare usleep, fchown, fchdir, nice, getpgid, setsid, getsid, setreuid, setregid, vfork, ttyslot, symlink, readlink, gethostid, truncate, ftruncate, getdtablesize, brk, sbrk, lockf when __USE_XOPEN_EXTENDED is defined. * posix/sys/wait.h: Declare wait3 if __USE_XOPEN_EXTENDED is defined. * shadow/shadow.h: Define SHADOW using _PATH_SHADOW. * sysdeps/generic/paths.h: Define _PATH_SHADOW. * sysdeps/unix/sysv/linux/paths.h: Likewise. * signal/signal.h: Declare killpg, sigstack and sigaltstack when __USE_XOPEN_EXTENDED is defined. * stdio/stdio.h: Declare tempnam when __USE_XOPEN is defined. * stdlib/stdlib.h: Make rand48 functions available when __USE_XOPEN is defined. Likewise for valloc, putenv, realpath, [efg]cvt*, and getsubopt functions. * string/string.h: Make memccpy, strdup, bcmp, bcopy, bzero, index, and rindex available when __USE_XOPEN_EXTENDED is defined. * sysdeps/mach/getpagesize.c: De-ANSI-fy. Change return type to int. * sysdeps/posix/getpagesize.c: Likewise. * sysdeps/stub/getpagesize.c: Likewise. * sysdeps/unix/getpagesize.c: Likewise. * time/africa: Update from tzdata1996l. * time/asia: Likewise. * time/australia: Likewise. * time/europe: Likewise. * time/northamerica: Likewise. * time/pacificnew: Likewise. * time/southamerica: Likewise. * time/tzfile.h: Update from tzcode1996m. * time/time.h: Declare strptime if __USE_XOPEN. Declare daylight and timezone also if __USE_XOPEN. * time/sys/time.h: Remove declaration of ualarm. * wctype/wctype.h: Just reference ISO C standard. Tue Nov 5 01:26:32 1996 Richard Henderson * crypt/Makefile: Add crypt routines to libc as well iff $(crypt-in-libc) is set. Do this for temporary binary compatibility on existing Linux/Alpha installations. * stdlib/div.c, sysdeps/generic/div.c: Move file to .../generic/. * stdlib/ldiv.c, sysdeps/generic/ldiv.c: Likewise. * stdlib/lldiv.c, sysdeps/generic/lldiv.c: Likewise. * sysdeps/alpha/Makefile (divrem): Add divlu, dviqu, remlu, and remqu. * sysdeps/alpha/div.S: New file. * sysdeps/alpha/ldiv.S: New file. * sysdeps/alpha/lldiv.S: New file. * sysdeps/alpha/divrem.h: Merge signed and unsigned division. Take pointers from Linus and tighten the inner loops a bit. * sysdeps/alpha/divl.S: Change defines for merged routines. * sysdeps/alpha/divq.S: Likewise. * sysdeps/alpha/reml.S: Likewise. * sysdeps/alpha/remq.S: Likewise. * sysdeps/alpha/divlu.S: Remove file. * sysdeps/alpha/divqu.S: Likewise. * sysdeps/alpha/remlu.S: Likewise. * sysdeps/alpha/remqu.S: Likewise. * sysdeps/alpha/bsd-_setjmp.S: If PROF, call _mcount. * sysdeps/alpha/bsd-setjmp.S: Likewise. * sysdeps/alpha/bzero.S: Likewise. * sysdeps/alpha/ffs.S: Likewise. * sysdeps/alpha/htonl.S: Likewise. * sysdeps/alpha/htons.S: Likewise. * sysdeps/alpha/memchr.S: Likewise. * sysdeps/alpha/memset.S: Likewise. * sysdeps/alpha/s_copysign.S: Likewise. * sysdeps/alpha/s_fabs.S: Likewise. * sysdeps/alpha/setjmp.S: Likewise. * sysdeps/alpha/stpcpy.S: Likewise. * sysdeps/alpha/stpncpy.S: Likewise. * sysdeps/alpha/strcat.S: Likewise. * sysdeps/alpha/strchr.S: Likewise. * sysdeps/alpha/strcpy.S: Likewise. * sysdeps/alpha/strlen.S: Likewise. * sysdeps/alpha/strncat.S: Likewise. * sysdeps/alpha/strncpy.S: Likewise. * sysdeps/alpha/strrchr.S: Likewise. * sysdeps/alpha/udiv_qrnnd.S: Likewise. Fix private labels. Convert two small jumps to use conditional moves. * sysdeps/unix/alpha/sysdep.h: Compress all __STDC__ nastiness. (PSEUDO): If PROF, call _mcount. * sysdeps/unix/sysv/linux/alpha/brk.S: If PROF, call _mcount. * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise. * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. * sysdeps/unix/sysv/linux/alpha/llseek.S: Likewise. * sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise. * sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise. * sysdeps/alpha/memcpy.S: New file. Odd layout because it should eventually contain memmove as well. * sysdeps/alpha/strcmp.S: New file. * sysdeps/alpha/strncmp.S: New file. * sysdeps/alpha/w_sqrt.S: New file. Tue Nov 5 18:06:06 1996 Ulrich Drepper * sysdeps/mach/hurd/ttyname_r.c: Use `size_t' for len variable. Tue Nov 5 12:09:29 1996 Ulrich Drepper * sysdep/generic/sysdep.h: Define END only if not yet defined. * sysdep/unix/sysdep.h: Define PSEUDO_END only if not yet defined. Reported by Thomas Bushnell, n/BSG. Mon Nov 4 22:46:53 1996 Ulrich Drepper * manual/users.texi (Netgroup Data): Remove { } around @cindex. Mon Nov 4 19:07:05 1996 Ulrich Drepper * malloc/calloc.c: Check for overflow before trying to allocate memory. Proposed by Neil Matthews . Fri Nov 1 18:18:32 1996 Andreas Schwab * manual/llio.texi (Operating Modes): Add missing arguments to @deftypevr in O_NONBLOCK description. * manual/time.texi (Time Zone Functions): Enclose type name in braces in description of tzname. FIXME: this does not yet work correctly in info. Sun Nov 3 17:29:06 1996 Ulrich Drepper * features.h: Add X/Open macros. * posix/unistd.h: Define X/Open macros. * sysdeps/generic/confname.h: Add _SC_XOPEN_XCU_VERSION, _SC_XOPEN_UNIX, _SC_XOPEN_CRYPT, _SC_XOPEN_ENH_I18N, _SC_XOPEN_SHM, _SC_2_CHAR_TERM, _SC_2_C_VERSION, and _SC_2_UPE. * sysdeps/posix/sysconf.c: Handle new constants. * sysdeps/stub/sysconf.c: Likewise. * sysdeps/unix/sysv/linux/posix_opt.h: Add definition of _XOPEN_SHM. * catgets/catgets.c (catopen): Set errno to ENOMEM when we run out of memory. (catgets): Set errno to EBADF when catalog handle is invalid. Set errno to ENOMSG when translation is not available. (catclose): Set errno to EBADF when catalog handle is invalid. * ctype/ctype.h: Declare isascii and toascii when __USE_XOPEN. Likewise for _toupper and _tolower. * manual/arith.texi: Document strtoq, strtoll, strtouq, strtoull, strtof, and strtold. * manual/math.texi: Document HUGE_VALf and HUGE_VALl. * manual/stdio.h: Document ' flag for numeric formats of scanf. * manual/users.texi: Document that cuserid shouldn't be used. * misc/Makefile (routines): Add dirname. (headers): Add libgen.h. (tests): Add tst-dirname. * misc/dirname.c: New file. * misc/libgen.h: New file. * misc/tst-dirname.c: New file. * misc/search.h: Parameter of hcreate must be of type size_t. * misc/hsearch.c: Likewise. * misc/hsearch_r.c: Likewise for hcreate_r. * misc/search.h: Parameters of insque and remque must be `void *'. * misc/insremque.c: Likewise. * posix/unistd.h: Move declarations of mktemp and mkstemp to... * stdlib/stdlib.h: ...here. * posix/unistd.h [__USE_XOPEN]: Add prototypes for crypt, setkey, encrypt, and swab. * stdio-common/printf-parse.h (struct printf_spec): Add pa_wchar and pa_wstring. (parse_one_spec): Remove Linux compatibility code. Recognize %C and %S formats. * stdio-common/printf.h: Add PA_WCHAR and PA_WSTRING. * stdio-common/vfprintf.c: Add implementation of %C and %S format. * stdio-common/vfscanf.c: Likewise for scanf. * stdlib/l64a.c: Return value for 0 must be the empty string. * stdlib/stdlib.h: Declare reentrant function from rand49 family only if __USE_REENTRANT. Declare rand48 functions also if __USE_XOPEN. * stdlib/strtol.c: Return 0 and set errno to EINVAL when BASE is not a legal value. Return 0 and set errno to EINVAL when strou* sees negativ number. * stdlib/tst-strtol.c: De-ANSI-fy. Change expected results for test of unsigned function and negative input. * string/stratcliff.c: Prevent warnings. * string.h: Move declaration of swab to . * string/swab.c: De-ANSI-fy. * sysdeps/posix/cuserid.c: Implement using getpwuid_r. * sysdeps/posix/mkstemp.c: Include for prototype. * sysdeps/posix/mktemp.c: Likewise. * sysdeps/stub/mkstemp.c: Likewise. * sysdeps/stub/mktemp.c: Likewise. * sysvipc/sys/ipc.h: Prototypes of ftok have to be of types `const char *' and `int'. * sysvipc/ftok.c: Likewise. Make sure only lower 8 bits of PROJ_ID are used. Sun Nov 3 03:21:28 1996 Heiko Schroeder * locale/programs/ld-numeric.c (numeric_output): Compute idx[0] correctly. Sat Nov 2 17:44:32 1996 Ulrich Drepper * sysdeps/posix/cuserid.c: Use reentrant functions. * manual/users.texi: Tell that cuserid is marked to be withdrawn in XPG4.2. Sat Nov 2 14:26:37 1996 Ulrich Drepper Linus said he will make sure no system call will return a value in -1 ... -4095 as a valid result. * sysdeps/unix/sysv/linux/i386/sysdep.h: Correct test for error. * sysdeps/unix/sysv/linux/i386/syscall.S: Likewise. * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/m68k/syscall.S: Likewise. Sat Nov 2 16:54:49 1996 NIIBE Yutaka * sysdeps/stub/lockfile.c [!USE_IN_LIBIO]: Define weak alias for __funlockfile, not a circular alias. Define __IO_ftrylockfile if USE_IN_LIBIO and __ftrylockfile if not, not vice versa. * sysdeps/unix/sysv/linux/i386/sysdep.S (__errno_location): Make it a weak symbol. * sysdeps/unix/sysv/linux/m68k/sysdep.S (__errno_location): Likewise. Likewise. * crypt/Makefile (rpath-link): Extend search path to current directory. --- manual/arith.texi | 126 +++++++++++++++++++++++++++++++++++++++++++++++++-- manual/creature.texi | 26 +++++++++-- manual/intro.texi | 46 +++++++++++-------- manual/libc.texinfo | 9 +--- manual/llio.texi | 34 +++++++------- manual/math.texi | 45 +++++++++++++----- manual/memory.texi | 32 +++++++++++++ manual/nss.texi | 11 +++-- manual/stdio.texi | 11 +++++ manual/time.texi | 2 +- manual/users.texi | 5 +- 11 files changed, 278 insertions(+), 69 deletions(-) (limited to 'manual') diff --git a/manual/arith.texi b/manual/arith.texi index b3f646a..8ea9508 100644 --- a/manual/arith.texi +++ b/manual/arith.texi @@ -469,7 +469,8 @@ syntax used for integer constants in C. Otherwise @var{base} must have a value between @code{2} and @code{35}. If @var{base} is @code{16}, the digits may optionally be preceded by -@samp{0x} or @samp{0X}. +@samp{0x} or @samp{0X}. If base has no legal value the value returned +is @code{0l} and the global variable @code{errno} is set to @code{EINVAL}. @item Any remaining characters in the string. If @var{tailptr} is not a null @@ -492,6 +493,11 @@ representable because of overflow, @code{strtol} returns either appropriate for the sign of the value. It also sets @code{errno} to @code{ERANGE} to indicate there was overflow. +Because the value @code{0l} is a correct result for @code{strtol} the +user who is interested in handling errors should set the global variable +@code{errno} to @code{0} before calling this function. So it can be +tested whether an error occured or not. + There is an example at the end of this section. @end deftypefun @@ -504,6 +510,51 @@ value with type @code{unsigned long int}. No @samp{+} or @samp{-} sign may appear before the number, but the syntax is otherwise the same as described above for @code{strtol}. The value returned in case of overflow is @code{ULONG_MAX} (@pxref{Range of Type}). + +Like @code{strtol} this function sets @code{errno} and returns the value +@code{0ul} in case the value for @var{base} is not in the legal range. +For @code{strtoul} this can happen in another situation. In case the +number to be converted is negative @code{strtoul} also sets @code{errno} +to @code{EINVAL} and returns @code{0ul}. +@end deftypefun + +@comment stdlib.h +@comment BSD +@deftypefun {long long int} strtoq (const char *@var{string}, char **@var{tailptr}, int @var{base}) +The @code{strtoq} (``string-to-quad-word'') function is like +@code{strtol} except that is deals with extra long numbers and it +returns its value with type @code{long long int}. + +If the string has valid syntax for an integer but the value is not +representable because of overflow, @code{strtoq} returns either +@code{LONG_LONG_MAX} or @code{LONG_LONG_MIN} (@pxref{Range of Type}), as +appropriate for the sign of the value. It also sets @code{errno} to +@code{ERANGE} to indicate there was overflow. +@end deftypefun + +@comment stdlib.h +@comment GNU +@deftypefun {long long int} strtoll (const char *@var{string}, char **@var{tailptr}, int @var{base}) +@code{strtoll} is only an commonly used other name for the @code{strtoq} +function. Everything said for @code{strtoq} applies to @code{strtoll} +as well. +@end deftypefun + +@comment stdlib.h +@comment BSD +@deftypefun {unsigned long long int} strtouq (const char *@var{string}, char **@var{tailptr}, int @var{base}) +The @code{strtouq} (``string-to-unsigned-quad-word'') function is like +@code{strtoul} except that is deals with extra long numbers and it +returns its value with type @code{unsigned long long int}. The value +returned in case of overflow is @code{ULONG_LONG_MAX} (@pxref{Range of Type}). +@end deftypefun + +@comment stdlib.h +@comment GNU +@deftypefun {unsigned long long int} strtoull (const char *@var{string}, char **@var{tailptr}, int @var{base}) +@code{strtoull} is only an commonly used other name for the @code{strtouq} +function. Everything said for @code{strtouq} applies to @code{strtoull} +as well. @end deftypefun @comment stdlib.h @@ -523,6 +574,29 @@ value rather than @code{long int}. The @code{atoi} function is also considered obsolete; use @code{strtol} instead. @end deftypefun +The POSIX locales contain some information about how to format numbers +(@pxref{General Numeric}). This mainly deals with representing numbers +for better readability for humans. The functions present so far in this +section cannot handle numbers in this form. + +If this functionality is needed in a program one can use the functions +from the @code{scanf} family which know about the flag @samp{'} for +parsing numeric input (@pxref{Numeric Input Conversions}). Sometimes it +is more desirable to have finer control. + +In these situation one could use the function +@code{__strto@var{XXX}_internal}. @var{XXX} here stands for any of the +above forms. All numeric conversion functions (including the functions +to process floating-point numbers) have such a counterpart. The +difference to the normal for is the extra argument at the end of the +parameter list. If this value has an non-zero value the handling of +number grouping is enabled. The advantage from using these functions is +that the @var{tailptr} parameters allow to determine which part of the +input is processed. The @code{scanf} functions don't provide this +information. The drawback of using these functions is that they are not +portable. They only exist in the GNU C library. + + Here is a function which parses a string as a sequence of integers and returns the sum of them: @@ -604,8 +678,8 @@ number, no conversion is performed. In this case, @code{strtod} returns a value of zero and the value returned in @code{*@var{tailptr}} is the value of @var{string}. -In a locale other than the standard @code{"C"} locale, this function may -recognize additional locale-dependent syntax. +In a locale other than the standard @code{"C"} or @code{"POSIX"} locale, +this function may recognize additional locale-dependent syntax. If the string has valid syntax for a floating-point number but the value is not representable because of overflow, @code{strtod} returns either @@ -613,9 +687,55 @@ positive or negative @code{HUGE_VAL} (@pxref{Mathematics}), depending on the sign of the value. Similarly, if the value is not representable because of underflow, @code{strtod} returns zero. It also sets @code{errno} to @code{ERANGE} if there was overflow or underflow. + +Since the value zero which is returned in the error case is also a valid +result the user should set the global variable @code{errno} to null +before calling this function. So one can test for failures after the +call since all failures set @code{errno} to a non-zero value. @end deftypefun @comment stdlib.h +@comment GNU +@deftypefun float strtof (const char *@var{string}, char **@var{tailptr}) +This function is similar to the @code{strtod} function but it returns a +@code{float} value instead of a @code{double} value. If the precision +of a @code{float} value is sufficent this function should be used since +it is much faster than @code{strtod} on some architectures. The reasons +are obvious: @w{IEEE 754} defines @code{float} to have a mantissa of 23 +bits while @code{double} has 53 bits and every additional bit of +precision can require additional computation. + +If the string has valid syntax for a floating-point number but the value +is not representable because of overflow, @code{strtof} returns either +positive or negative @code{HUGE_VALf} (@pxref{Mathematics}), depending on +the sign of the value. + +This function is a GNU extension. +@end deftypefun + +@comment stdlib.h +@comment GNU +@deftypefun {long double} strtold (const char *@var{string}, char **@var{tailptr}) +This function is similar to the @code{strtod} function but it returns a +@code{long double} value instead of a @code{double} value. It should be +used when high presision is used. On systems which define a @code{long +double} type (i.e., on which it is not the same as @code{double}) +running this function might take significently more time since more bits +of precision are required. + +If the string has valid syntax for a floating-point number but the value +is not representable because of overflow, @code{strtold} returns either +positive or negative @code{HUGE_VALl} (@pxref{Mathematics}), depending on +the sign of the value. + +This function is a GNU extension. +@end deftypefun + +As for the integer parsing functions there are additional functions +which will handle numbers represented using the grouping scheme of the +current locale (@pxref{Parsing of Integers}). + +@comment stdlib.h @comment ANSI @deftypefun double atof (const char *@var{string}) This function is similar to the @code{strtod} function, except that it diff --git a/manual/creature.texi b/manual/creature.texi index 6b4d42f..37dee54 100644 --- a/manual/creature.texi +++ b/manual/creature.texi @@ -67,15 +67,31 @@ the normal C library. @comment GNU @defvr Macro _SVID_SOURCE If you define this macro, functionality derived from SVID is -included as well as the ANSI C, POSIX.1, and POSIX.2 material. +included as well as the ANSI C, POSIX.1, POSIX.2, and X/Open material. +@end defvr + +@comment (none) +@comment XOPEN +@defvr Macro _XOPEN_SOURCE +If you define these macro, functionality described in the X/Open +Portability Guide is included. This is an superset of the POSIX.1 and +POSIX.2 functionality and in fact @code{_POSIX_SOURCE} and +@code{_POSIX_C_SOURCE} get automatically be defined. + +But as the great unifaction of all Unices there is also functionality +only available in BSD and SVID is included. + +If the macro @code{_XOPEN_SOURCE_EXTENDED} is also defined, even more +functionality is available. The extra functions will make all functions +available which are necessary for the X/Open Unix brand. @end defvr @comment (none) @comment GNU @defvr Macro _GNU_SOURCE If you define this macro, everything is included: ANSI C, POSIX.1, -POSIX.2, BSD, SVID, and GNU extensions. In the cases where POSIX.1 -conflicts with BSD, the POSIX definitions take precedence. +POSIX.2, BSD, SVID, X/Open, and GNU extensions. In the cases where +POSIX.1 conflicts with BSD, the POSIX definitions take precedence. If you want to get the full effect of @code{_GNU_SOURCE} but make the BSD definitions take precedence over the POSIX definitions, use this @@ -96,8 +112,8 @@ get very strange errors at run time. @comment (none) @comment GNU @defvr Macro _REENTRANT,_THREAD_SAFE -If you define this macro, reentrant versions of several functions get -declared. Some of the functions is specified in POSIX.1c but many others +If you define one this macro, 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. diff --git a/manual/intro.texi b/manual/intro.texi index 19f04a1..382f35c 100644 --- a/manual/intro.texi +++ b/manual/intro.texi @@ -78,11 +78,11 @@ standards each function or symbol comes from. @menu * ANSI C:: The American National Standard for the - C programming language. + C programming language. * POSIX:: The IEEE 1003 standards for operating - systems. + systems. * Berkeley Unix:: BSD and SunOS. -* SVID:: The System V Interface Description. +* SVID:: The System V Interface Description. @end menu @node ANSI C, POSIX, , Standards and Portability @@ -152,7 +152,7 @@ pattern matching facilities (@pxref{Pattern Matching}). @comment Roland sez: @comment The GNU C library as it stands conforms to 1003.2 draft 11, which @comment specifies: -@comment +@comment @comment Several new macros in . @comment popen, pclose @comment (which is not yet fully implemented--wait on this) @@ -210,7 +210,7 @@ the GNU C library. @menu * Header Files:: How to include the header files in your - programs. + programs. * Macro Definitions:: Some functions in the library may really be implemented as macros. * Reserved Names:: The C standard reserves some names for @@ -332,7 +332,7 @@ function---perhaps to make your program easier to debug. There are two ways you can do this: @itemize @bullet -@item +@item You can avoid a macro definition in a specific use by enclosing the name of the function in parentheses. This works because the name of the function doesn't appear in a syntactic context where it is recognizable @@ -429,7 +429,7 @@ raise the possibility of conflict with future versions of the C or POSIX standards, so you should avoid these names. @itemize @bullet -@item +@item Names beginning with a capital @samp{E} followed a digit or uppercase letter may be used for additional error code names. @xref{Error Reporting}. @@ -526,11 +526,11 @@ Here is an overview of the contents of the remaining chapters of this manual. @itemize @bullet -@item +@item @ref{Error Reporting}, describes how errors detected by the library are reported. -@item +@item @ref{Language Features}, contains information about library support for standard parts of the C language, including things like the @code{sizeof} operator and the symbolic constant @code{NULL}, how to write functions @@ -539,18 +539,18 @@ ranges and other properties of the numerical types. There is also a simple debugging mechanism which allows you to put assertions in your code, and have diagnostic messages printed if the tests fail. -@item +@item @ref{Memory Allocation}, describes the GNU library's facilities for dynamic allocation of storage. If you do not know in advance how much storage your program needs, you can allocate it dynamically instead, and manipulate it via pointers. -@item +@item @ref{Character Handling}, contains information about character classification functions (such as @code{isspace}) and functions for performing case conversion. -@item +@item @ref{String and Array Utilities}, has descriptions of functions for manipulating strings (null-terminated character arrays) and general byte arrays, including operations such as copying and comparison. @@ -595,7 +595,7 @@ Internet host addressing and how to use the system network databases. attributes of a terminal device. If you want to disable echo of characters typed by the user, for example, read this chapter. -@item +@item @ref{Mathematics}, contains information about the math library functions. These include things like random-number generators and remainder functions on integers as well as the usual trigonometric and @@ -606,7 +606,7 @@ exponential functions on floating-point numbers. for simple arithmetic, analysis of floating-point values, and reading numbers from strings. -@item +@item @ref{Searching and Sorting}, contains information about functions for searching and sorting arrays. You can use these functions on any kind of array by providing an appropriate comparison function. @@ -619,13 +619,13 @@ and shell file name patterns, and for expanding words as the shell does. @ref{Date and Time}, describes functions for measuring both calendar time and CPU time, as well as functions for setting alarms and timers. -@item +@item @ref{Extended Characters}, contains information about manipulating characters and strings using character sets larger than will fit in -the usual @code{char} data type. +the usual @code{char} data type. -@item -@ref{Locales}, describes how selecting a particular country +@item +@ref{Locales}, describes how selecting a particular country or language affects the behavior of the library. For example, the locale affects collation sequences for strings and how monetary values are formatted. @@ -645,7 +645,7 @@ critical sections of your program. @ref{Process Startup}, tells how your programs can access their command-line arguments and environment variables. -@item +@item @ref{Processes}, contains information about how to start new processes and run programs. @@ -656,6 +656,12 @@ interest if you are writing a shell or other program which handles job control specially. @item +@ref{Name Service Switch}, describes the services which are available +for looking up names in the system databases, how to determine which +service is used for which database, and how these services are +implemented so that contributors can design their own services. + +@item @ref{User Database}, and @ref{Group Database}, tell you how to access the system user and group databases. @@ -664,7 +670,7 @@ the system user and group databases. about the hardware and software configuration your program is executing under. -@item +@item @ref{System Configuration}, tells you how you can get information about various operating system limits. Most of these parameters are provided for compatibility with POSIX. diff --git a/manual/libc.texinfo b/manual/libc.texinfo index 7738593..80eb496 100644 --- a/manual/libc.texinfo +++ b/manual/libc.texinfo @@ -13,7 +13,7 @@ @c sold 0.06/1.09, print run out 21may96 @set EDITION 0.07 DRAFT @set VERSION 2.00 Beta -@set UPDATED 16 Aug 1996 +@set UPDATED 4 Oct 1996 @set ISBN 1-882114-53-1 @ifinfo @@ -988,12 +988,7 @@ Porting the GNU C Library @node Concept Index, Type Index, Copying, Top @unnumbered Concept Index -@comment Could somebody with better texinfo knowledge look into this? -@comment When I comment out the following line I get -@comment Misplaced `{'. -@comment Misplaced `}'. -@comment This happens even if the libc.cp file is empty. -@comment @printindex cp +@printindex cp @node Type Index, Function Index, Concept Index, Top @unnumbered Type Index diff --git a/manual/llio.texi b/manual/llio.texi index 6a5a5d2..7891ee6 100644 --- a/manual/llio.texi +++ b/manual/llio.texi @@ -31,10 +31,10 @@ directly.) @menu * Opening and Closing Files:: How to open and close file - descriptors. + descriptors. * I/O Primitives:: Reading and writing data. * File Position Primitive:: Setting a descriptor's file - position. + position. * Descriptors and Streams:: Converting descriptor to stream or vice-versa. * Stream/Descriptor Precautions:: Precautions needed if you use both @@ -47,7 +47,7 @@ directly.) file descriptors. * Descriptor Flags:: Fcntl commands for manipulating flags associated with file - descriptors. + descriptors. * File Status Flags:: Fcntl commands for manipulating flags associated with open files. * File Locks:: Fcntl commands for implementing @@ -164,7 +164,7 @@ The function @code{close} closes the file descriptor @var{filedes}. Closing a file has the following consequences: @itemize @bullet -@item +@item The file descriptor is deallocated. @item @@ -195,7 +195,7 @@ TEMP_FAILURE_RETRY (close (desc)); @item ENOSPC @itemx EIO @itemx EDQUOT -When the file is accessed by NFS, these errors from @code{write} can sometimes +When the file is accessed by NFS, these errors from @code{write} can sometimes not be detected until @code{close}. @xref{I/O Primitives}, for details on their meaning. @end table @@ -322,7 +322,7 @@ efficient for the system to batch up consecutive writes and do them all at once when convenient. Normally they will always be written to disk within a minute or less.) @c !!! xref fsync -You can use the @code{O_FSYNC} open mode to make @code{write} always +You can use the @code{O_FSYNC} open mode to make @code{write} always store the data to disk before returning; @pxref{Operating Modes}. In the case of an error, @code{write} returns @code{-1}. The following @@ -431,7 +431,7 @@ file position. This count may be positive or negative. Specifies that @var{whence} is a count of characters from the end of the file. A negative count specifies a position within the current extent of the file; a positive count specifies a position past the -current end. If you set the position past the current end, and +current end. If you set the position past the current end, and actually write data, you will extend the file with zeros up to that position.@end table @@ -482,10 +482,10 @@ streams instead of file descriptors. @end deftypefun You can have multiple descriptors for the same file if you open the file -more than once, or if you duplicate a descriptor with @code{dup}. +more than once, or if you duplicate a descriptor with @code{dup}. Descriptors that come from separate calls to @code{open} have independent file positions; using @code{lseek} on one descriptor has no effect on the -other. For example, +other. For example, @smallexample @group @@ -656,7 +656,7 @@ the stream. @menu * Linked Channels:: Dealing with channels sharing a file position. * Independent Channels:: Dealing with separately opened, unlinked channels. -* Cleaning Streams:: Cleaning a stream makes it safe to use +* Cleaning Streams:: Cleaning a stream makes it safe to use another channel. @end menu @@ -914,7 +914,7 @@ the @code{select} with a newly calculated timeout based on the current time. See the example below. See also @ref{Interrupted Primitives}. If an error occurs, @code{select} returns @code{-1} and does not modify -the argument file descriptor sets. The following @code{errno} error +the argument file descriptor sets. The following @code{errno} error conditions are defined for this function: @table @code @@ -1164,7 +1164,7 @@ The symbols in this section are defined in the header file @deftypevr Macro int F_GETFD This macro is used as the @var{command} argument to @code{fcntl}, to specify that it should return the file descriptor flags associated -with the @var{filedes} argument. +with the @var{filedes} argument. The normal return value from @code{fcntl} with this command is a nonnegative number which can be interpreted as the bitwise OR of the @@ -1223,7 +1223,7 @@ without altering any other flags: @smallexample /* @r{Set the @code{FD_CLOEXEC} flag of @var{desc} if @var{value} is nonzero,} @r{or clear the flag if @var{value} is 0.} - @r{Return 0 on success, or -1 on error with @code{errno} set.} */ + @r{Return 0 on success, or -1 on error with @code{errno} set.} */ int set_cloexec_flag (int desc, int value) @@ -1523,7 +1523,7 @@ resulting in your data appearing someplace before the real end of file. @comment fcntl.h @comment POSIX.1 -@deftypevr O_NONBLOCK +@deftypevr Macro int O_NONBLOCK The bit that enables nonblocking mode for the file. If this bit is set, @code{read} requests on the file can return immediately with a failure status if there is no input immediately available, instead of blocking. @@ -1638,7 +1638,7 @@ altering any other flags: @group /* @r{Set the @code{O_NONBLOCK} flag of @var{desc} if @var{value} is nonzero,} @r{or clear the flag if @var{value} is 0.} - @r{Return 0 on success, or -1 on error with @code{errno} set.} */ + @r{Return 0 on success, or -1 on error with @code{errno} set.} */ int set_nonblock_flag (int desc, int value) @@ -1891,7 +1891,7 @@ for billing purposes. Having multiple copies of the program simultaneously writing to the file could cause the contents of the file to become mixed up. But you can prevent this kind of problem by setting a write lock on the -file before actually writing to the file. +file before actually writing to the file. If the program also needs to read the file and wants to make sure that the contents of the file are in a consistent state, then it can also use @@ -1920,7 +1920,7 @@ where @code{select} would report the socket as having an ``exceptional condition''. @xref{Waiting for I/O}.) If the file descriptor corresponds to a terminal device, then @code{SIGIO} -signals are sent to the foreground process group of the terminal. +signals are sent to the foreground process group of the terminal. @xref{Job Control}. @pindex fcntl.h diff --git a/manual/math.texi b/manual/math.texi index a97d76c..7de6d16 100644 --- a/manual/math.texi +++ b/manual/math.texi @@ -36,8 +36,8 @@ over a domain that is only a subset of real numbers. For example, the @code{1}. If you pass an argument to one of these functions that is outside the domain over which it is defined, the function sets @code{errno} to @code{EDOM} to indicate a @dfn{domain error}. On -machines that support IEEE floating point, functions reporting error -@code{EDOM} also return a NaN. +machines that support @w{IEEE 754} floating point, functions reporting +error @code{EDOM} also return a NaN. Some of these functions are defined mathematically to result in a complex value over parts of their domains. The most familiar example of @@ -59,8 +59,8 @@ instead. In this case, @code{errno} might or might not be set to @code{ERANGE}. The only completely reliable way to check for domain and range errors is -to set @code{errno} to @code{0} before you call the mathematical function -and test @code{errno} afterward. As a consequence of this use of +to set @code{errno} to @code{0} before you call the mathematical function +and test @code{errno} afterward. As a consequence of this use of @code{errno}, use of the mathematical functions is not reentrant if you check for errors. @@ -74,14 +74,37 @@ Handling}, for more information about signals.) @comment ANSI @deftypevr Macro double HUGE_VAL An expression representing a particular very large number. On machines -that use IEEE floating point format, the value is ``infinity''. On -other machines, it's typically the largest positive number that can be -represented. +that use @w{IEEE 754} floating point format, the value is ``infinity''. +On other machines, it's typically the largest positive number that can +be represented. -The value of this macro is used as the return value from various -mathematical functions in overflow situations. +The value of this macro is used as the return value from various +mathematical @code{double} returning functions in overflow situations. @end deftypevr +@comment math.h +@comment GNU +@deftypevr Macro float HUGE_VALf +This macro is similar to the @code{HUGE_VAL} macro except that it is +used by functions returning @code{float} values. + +This macro is a GNU extension. +@end deftypevr + +@comment math.h +@comment GNU +@deftypevr Macro {long double} HUGE_VALl +This macro is similar to the @code{HUGE_VAL} macro except that it is +used by functions returning @code{long double} values. The value is +only different from @code{HUGE_VAL} if the architecture really supports +@code{long double} values. + +This macro is a GNU extension. +@end deftypevr + + +@comment + For more information about floating-point representations and limits, see @ref{Floating Point Parameters}. In particular, the macro @code{DBL_MAX} might be more appropriate than @code{HUGE_VAL} for many @@ -343,7 +366,7 @@ of @var{x} is too large; that is, if overflow occurs. @comment math.h @comment ANSI @deftypefun double tanh (double @var{x}) -This function returns the hyperbolic tangent of @var{x}, whose +This function returns the hyperbolic tangent of @var{x}, whose mathematical definition is @w{@code{sinh (@var{x}) / cosh (@var{x})}}. @end deftypefun @@ -497,7 +520,7 @@ restore that state. @deftypefun {void *} setstate (void *@var{state}) The @code{setstate} function restores the random number state information @var{state}. The argument must have been the result of -a previous call to @var{initstate} or @var{setstate}. +a previous call to @var{initstate} or @var{setstate}. The return value is the previous value of the state information array. You can use thise value later as an argument to @code{setstate} to diff --git a/manual/memory.texi b/manual/memory.texi index 343da0b..6cbe77f 100644 --- a/manual/memory.texi +++ b/manual/memory.texi @@ -1093,6 +1093,22 @@ It adds a single byte containing @var{c} to the growing object. @comment obstack.h @comment GNU +@deftypefun void obstack_ptr_grow (struct obstack *@var{obstack-ptr}, void *@var{data}) +Adding the value of a pointer one can use the function +@code{obstack_ptr_grow}. It adds @code{sizeof (void *)} bytes +containing the value of @var{data}. +@end deftypefun + +@comment obstack.h +@comment GNU +@deftypefun void obstack_int_grow (struct obstack *@var{obstack-ptr}, int @var{data}) +A single value of type @code{int} can be added by using the +@code{obstack_int_grow} function. It adds @code{sizeof (int)} bytes to +the growing object and initializes them with the value of @var{data}. +@end deftypefun + +@comment obstack.h +@comment GNU @deftypefun {void *} obstack_finish (struct obstack *@var{obstack-ptr}) When you are finished growing the object, use the function @code{obstack_finish} to close it off and return its final address. @@ -1173,6 +1189,22 @@ character @var{c} to the growing object in obstack @var{obstack-ptr}. @comment obstack.h @comment GNU +@deftypefun void obstack_ptr_grow_fast (struct obstack *@var{obstack-ptr}, void *@var{data}) +The function @code{obstack_ptr_grow_fast} adds @code{sizeof (void *)} +bytes containing the value of @var{data} to the growing object in +obstack @var{obstack-ptr}. +@end deftypefun + +@comment obstack.h +@comment GNU +@deftypefun void obstack_int_grow_fast (struct obstack *@var{obstack-ptr}, int @var{data}) +The function @code{obstack_int_grow_fast} adds @code{sizeof (int)} bytes +containing the value of @var{data} to the growing object in obstack +@var{obstack-ptr}. +@end deftypefun + +@comment obstack.h +@comment GNU @deftypefun void obstack_blank_fast (struct obstack *@var{obstack-ptr}, int @var{size}) The function @code{obstack_blank_fast} adds @var{size} bytes to the growing object in obstack @var{obstack-ptr} without initializing them. diff --git a/manual/nss.texi b/manual/nss.texi index 6d9d831..6773fc4 100644 --- a/manual/nss.texi +++ b/manual/nss.texi @@ -3,6 +3,9 @@ @node Name Service Switch @chapter System Databases and Name Service Switch +@cindex Name Service Switch +@cindex NSS +@cindex databses Various functions in the C Library need to be configured to work correctly in the local environment. Traditionally, this was done by using files (e.g., @file{/etc/passwd}), but other nameservices (line the @@ -395,10 +398,10 @@ change of the return value. While the user-level function returns a pointer to the result the reentrant function return an @code{enum nss_status} value: -@cindex NSS_STATUS_TRYAGAIN -@cindex NSS_STATUS_UNAVAIL -@cindex NSS_STATUS_NOTFOUND -@cindex NSS_STATUS_SUCCESS +@vindex NSS_STATUS_TRYAGAIN +@vindex NSS_STATUS_UNAVAIL +@vindex NSS_STATUS_NOTFOUND +@vindex NSS_STATUS_SUCCESS @ftable @code @item NSS_STATUS_TRYAGAIN numeric value @code{-2} diff --git a/manual/stdio.texi b/manual/stdio.texi index 5ebc5c1..c666f5e 100644 --- a/manual/stdio.texi +++ b/manual/stdio.texi @@ -2438,6 +2438,17 @@ Specifies that the argument is of type @code{double *}. Specifies that the argument is of type @code{long double *}. @end table +For all the above number parsing formats there is an additional optional +flag @samp{'}. When this flag is given the @code{scanf} function +expects the number represented in the input string to be formatted +according to the grouping rules of the currently selected locale +(@pxref{General Numeric}). + +If the @code{"C"} or @code{"POSIX"} locale is selected there is no +difference. But for a locale which specifies values for the appropriate +fields in the locale the input must have the correct form in the input. +Otherwise the longest prefix with a correct form is processed. + @node String Input Conversions @subsection String Input Conversions diff --git a/manual/time.texi b/manual/time.texi index 18224a5..6bbb15e 100644 --- a/manual/time.texi +++ b/manual/time.texi @@ -1024,7 +1024,7 @@ community of volunteers and put in the public domain. @comment time.h @comment POSIX.1 -@deftypevar char * tzname [2] +@deftypevar {char *} tzname [2] The array @code{tzname} contains two strings, which are the standard names of the pair of time zones (standard and daylight saving) that the user has selected. @code{tzname[0]} is the name of diff --git a/manual/users.texi b/manual/users.texi index e20c90d..ce6d526 100644 --- a/manual/users.texi +++ b/manual/users.texi @@ -685,6 +685,9 @@ at least @code{L_cuserid} characters; the string is returned in this array. Otherwise, a pointer to a string in a static area is returned. This string is statically allocated and might be overwritten on subsequent calls to this function or to @code{getlogin}. + +The use of this function is deprecated since it is marked to be +withdrawn in XPG4.2 and it is already removed in POSIX.1. @end deftypefun @comment stdio.h @@ -1158,7 +1161,7 @@ This function closes the internal stream used by @code{getgrent} or @node Netgroup Data, Lookup Netgroup, Netgroup Database, Netgroup Database @subsection Netgroup Data -@cindex{Netgroup} +@cindex Netgroup Sometimes it is useful group users according to other criterias like the ones used in the @xref{Group Database}. E.g., it is useful to associate a certain group of users with a certain machine. On the other hand -- cgit v1.1