1 @c Automatically generated from *.c and others (the comments before
2 @c each entry tell you which file and where in that file). DO NOT EDIT!
3 @c Edit the *.c files, configure with --enable-maintainer-mode,
4 @c run 'make stamp-functions' and gather-docs will build a new copy.
7 @deftypefn Replacement void* alloca (size_t @var{size})
9 This function allocates memory which will be automatically reclaimed
10 after the procedure exits. The @libib{} implementation does not free
11 the memory immediately but will do so eventually during subsequent
12 calls to this function. Memory is allocated using @code{xmalloc} under
15 The header file @file{alloca-conf.h} can be used in conjunction with the
16 GNU Autoconf test @code{AC_FUNC_ALLOCA} to test for and properly make
17 available this function. The @code{AC_FUNC_ALLOCA} test requires that
18 client code use a block of preprocessor code to be safe (see the Autoconf
19 manual for more); this header incorporates that logic and more, including
20 the possibility of a GCC built-in function.
25 @deftypefn Extension int asprintf (char **@var{resptr}, const char *@var{format}, ...)
27 Like @code{sprintf}, but instead of passing a pointer to a buffer, you
28 pass a pointer to a pointer. This function will compute the size of
29 the buffer needed, allocate memory with @code{malloc}, and store a
30 pointer to the allocated memory in @code{*@var{resptr}}. The value
31 returned is the same as @code{sprintf} would return. If memory could
32 not be allocated, minus one is returned and @code{NULL} is stored in
38 @deftypefn Supplemental int atexit (void (*@var{f})())
40 Causes function @var{f} to be called at exit. Returns 0.
45 @deftypefn Supplemental char* basename (const char *@var{name})
47 Returns a pointer to the last component of pathname @var{name}.
48 Behavior is undefined if the pathname ends in a directory separator.
53 @deftypefn Supplemental int bcmp (char *@var{x}, char *@var{y}, int @var{count})
55 Compares the first @var{count} bytes of two areas of memory. Returns
56 zero if they are the same, nonzero otherwise. Returns zero if
57 @var{count} is zero. A nonzero result only indicates a difference,
58 it does not indicate any sorting order (say, by having a positive
59 result mean @var{x} sorts before @var{y}).
64 @deftypefn Supplemental void bcopy (char *@var{in}, char *@var{out}, int @var{length})
66 Copies @var{length} bytes from memory region @var{in} to region
67 @var{out}. The use of @code{bcopy} is deprecated in new programs.
72 @deftypefn Supplemental void* bsearch (const void *@var{key}, @
73 const void *@var{base}, size_t @var{nmemb}, size_t @var{size}, @
74 int (*@var{compar})(const void *, const void *))
76 Performs a search over an array of @var{nmemb} elements pointed to by
77 @var{base} for a member that matches the object pointed to by @var{key}.
78 The size of each member is specified by @var{size}. The array contents
79 should be sorted in ascending order according to the @var{compar}
80 comparison function. This routine should take two arguments pointing to
81 the @var{key} and to an array member, in that order, and should return an
82 integer less than, equal to, or greater than zero if the @var{key} object
83 is respectively less than, matching, or greater than the array member.
88 @deftypefn Extension char** buildargv (char *@var{sp})
90 Given a pointer to a string, parse the string extracting fields
91 separated by whitespace and optionally enclosed within either single
92 or double quotes (which are stripped off), and build a vector of
93 pointers to copies of the string for each field. The input string
94 remains unchanged. The last element of the vector is followed by a
97 All of the memory for the pointer array and copies of the string
98 is obtained from @code{xmalloc}. All of the memory can be returned to the
99 system with the single function call @code{freeargv}, which takes the
100 returned result of @code{buildargv}, as it's argument.
102 Returns a pointer to the argument vector if successful. Returns
103 @code{NULL} if @var{sp} is @code{NULL} or if there is insufficient
104 memory to complete building the argument vector.
106 If the input is a null string (as opposed to a @code{NULL} pointer),
107 then buildarg returns an argument vector that has one arg, a null
113 @deftypefn Supplemental void bzero (char *@var{mem}, int @var{count})
115 Zeros @var{count} bytes starting at @var{mem}. Use of this function
116 is deprecated in favor of @code{memset}.
121 @deftypefn Supplemental void* calloc (size_t @var{nelem}, size_t @var{elsize})
123 Uses @code{malloc} to allocate storage for @var{nelem} objects of
124 @var{elsize} bytes each, then zeros the memory.
128 @c filename_cmp.c:201
129 @deftypefn Extension int canonical_filename_eq (const char *@var{a}, const char *@var{b})
131 Return non-zero if file names @var{a} and @var{b} are equivalent.
132 This function compares the canonical versions of the filenames as returned by
133 @code{lrealpath()}, so that so that different file names pointing to the same
134 underlying file are treated as being identical.
139 @deftypefn Extension char* choose_temp_base (void)
141 Return a prefix for temporary file names or @code{NULL} if unable to
142 find one. The current directory is chosen if all else fails so the
143 program is exited if a temporary directory can't be found (@code{mktemp}
144 fails). The buffer for the result is obtained with @code{xmalloc}.
146 This function is provided for backwards compatibility only. Its use is
151 @c make-temp-file.c:96
152 @deftypefn Replacement const char* choose_tmpdir ()
154 Returns a pointer to a directory path suitable for creating temporary
160 @deftypefn Supplemental long clock (void)
162 Returns an approximation of the CPU time used by the process as a
163 @code{clock_t}; divide this number by @samp{CLOCKS_PER_SEC} to get the
164 number of seconds used.
169 @deftypefn Extension char* concat (const char *@var{s1}, const char *@var{s2}, @
170 @dots{}, @code{NULL})
172 Concatenate zero or more of strings and return the result in freshly
173 @code{xmalloc}ed memory. The argument list is terminated by the first
174 @code{NULL} pointer encountered. Pointers to empty strings are ignored.
179 @deftypefn Extension int countargv (char * const *@var{argv})
181 Return the number of elements in @var{argv}.
182 Returns zero if @var{argv} is NULL.
187 @deftypefn Extension {unsigned int} crc32 (const unsigned char *@var{buf}, @
188 int @var{len}, unsigned int @var{init})
190 Compute the 32-bit CRC of @var{buf} which has length @var{len}. The
191 starting value is @var{init}; this may be used to compute the CRC of
192 data split across multiple buffers by passing the return value of each
193 call as the @var{init} parameter of the next.
195 This is intended to match the CRC used by the @command{gdb} remote
196 protocol for the @samp{qCRC} command. In order to get the same
197 results as gdb for a block of data, you must pass the first CRC
198 parameter as @code{0xffffffff}.
200 This CRC can be specified as:
204 Init : parameter, typically 0xffffffff
209 This differs from the "standard" CRC-32 algorithm in that the values
210 are not reflected, and there is no final XOR value. These differences
211 make it easy to compose the values of multiple blocks.
216 @deftypefn Extension char** dupargv (char * const *@var{vector})
218 Duplicate an argument vector. Simply scans through @var{vector},
219 duplicating each argument until the terminating @code{NULL} is found.
220 Returns a pointer to the argument vector if successful. Returns
221 @code{NULL} if there is insufficient memory to complete building the
227 @deftypefn Extension int errno_max (void)
229 Returns the maximum @code{errno} value for which a corresponding
230 symbolic name or message is available. Note that in the case where we
231 use the @code{sys_errlist} supplied by the system, it is possible for
232 there to be more symbolic names than messages, or vice versa. In
233 fact, the manual page for @code{perror(3C)} explicitly warns that one
234 should check the size of the table (@code{sys_nerr}) before indexing
235 it, since new error codes may be added to the system before they are
236 added to the table. Thus @code{sys_nerr} might be smaller than value
237 implied by the largest @code{errno} value defined in @code{<errno.h>}.
239 We return the maximum value that can be used to obtain a meaningful
240 symbolic name or message.
245 @deftypefn Extension void expandargv (int *@var{argcp}, char ***@var{argvp})
247 The @var{argcp} and @code{argvp} arguments are pointers to the usual
248 @code{argc} and @code{argv} arguments to @code{main}. This function
249 looks for arguments that begin with the character @samp{@@}. Any such
250 arguments are interpreted as ``response files''. The contents of the
251 response file are interpreted as additional command line options. In
252 particular, the file is separated into whitespace-separated strings;
253 each such string is taken as a command-line option. The new options
254 are inserted in place of the option naming the response file, and
255 @code{*argcp} and @code{*argvp} will be updated. If the value of
256 @code{*argvp} is modified by this function, then the new value has
257 been dynamically allocated and can be deallocated by the caller with
258 @code{freeargv}. However, most callers will simply call
259 @code{expandargv} near the beginning of @code{main} and allow the
260 operating system to free the memory when the program exits.
265 @deftypefn Extension int fdmatch (int @var{fd1}, int @var{fd2})
267 Check to see if two open file descriptors refer to the same file.
268 This is useful, for example, when we have an open file descriptor for
269 an unnamed file, and the name of a file that we believe to correspond
270 to that fd. This can happen when we are exec'd with an already open
271 file (@code{stdout} for example) or from the SVR4 @file{/proc} calls
272 that return open file descriptors for mapped address spaces. All we
273 have to do is open the file by name and check the two file descriptors
274 for a match, which is done by comparing major and minor device numbers
279 @c fopen_unlocked.c:49
280 @deftypefn Extension {FILE *} fdopen_unlocked (int @var{fildes}, @
281 const char * @var{mode})
283 Opens and returns a @code{FILE} pointer via @code{fdopen}. If the
284 operating system supports it, ensure that the stream is setup to avoid
285 any multi-threaded locking. Otherwise return the @code{FILE} pointer
291 @deftypefn Supplemental int ffs (int @var{valu})
293 Find the first (least significant) bit set in @var{valu}. Bits are
294 numbered from right to left, starting with bit 1 (corresponding to the
295 value 1). If @var{valu} is zero, zero is returned.
300 @deftypefn Extension int filename_cmp (const char *@var{s1}, const char *@var{s2})
302 Return zero if the two file names @var{s1} and @var{s2} are equivalent.
303 If not equivalent, the returned value is similar to what @code{strcmp}
304 would return. In other words, it returns a negative value if @var{s1}
305 is less than @var{s2}, or a positive value if @var{s2} is greater than
308 This function does not normalize file names. As a result, this function
309 will treat filenames that are spelled differently as different even in
310 the case when the two filenames point to the same underlying file.
311 However, it does handle the fact that on DOS-like file systems, forward
312 and backward slashes are equal.
316 @c filename_cmp.c:183
317 @deftypefn Extension int filename_eq (const void *@var{s1}, const void *@var{s2})
319 Return non-zero if file names @var{s1} and @var{s2} are equivalent.
320 This function is for use with hashtab.c hash tables.
324 @c filename_cmp.c:152
325 @deftypefn Extension hashval_t filename_hash (const void *@var{s})
327 Return the hash value for file name @var{s} that will be compared
329 This function is for use with hashtab.c hash tables.
334 @deftypefn Extension int filename_ncmp (const char *@var{s1}, const char *@var{s2}, size_t @var{n})
336 Return zero if the two file names @var{s1} and @var{s2} are equivalent
338 If not equivalent, the returned value is similar to what @code{strncmp}
339 would return. In other words, it returns a negative value if @var{s1}
340 is less than @var{s2}, or a positive value if @var{s2} is greater than
343 This function does not normalize file names. As a result, this function
344 will treat filenames that are spelled differently as different even in
345 the case when the two filenames point to the same underlying file.
346 However, it does handle the fact that on DOS-like file systems, forward
347 and backward slashes are equal.
352 @deftypefn Replacement int fnmatch (const char *@var{pattern}, @
353 const char *@var{string}, int @var{flags})
355 Matches @var{string} against @var{pattern}, returning zero if it
356 matches, @code{FNM_NOMATCH} if not. @var{pattern} may contain the
357 wildcards @code{?} to match any one character, @code{*} to match any
358 zero or more characters, or a set of alternate characters in square
359 brackets, like @samp{[a-gt8]}, which match one character (@code{a}
360 through @code{g}, or @code{t}, or @code{8}, in this example) if that one
361 character is in the set. A set may be inverted (i.e., match anything
362 except what's in the set) by giving @code{^} or @code{!} as the first
363 character in the set. To include those characters in the set, list them
364 as anything other than the first character of the set. To include a
365 dash in the set, list it last in the set. A backslash character makes
366 the following character not special, so for example you could match
367 against a literal asterisk with @samp{\*}. To match a literal
368 backslash, use @samp{\\}.
370 @code{flags} controls various aspects of the matching process, and is a
371 boolean OR of zero or more of the following values (defined in
378 @var{string} is assumed to be a path name. No wildcard will ever match
382 Do not interpret backslashes as quoting the following special character.
385 A leading period (at the beginning of @var{string}, or if
386 @code{FNM_PATHNAME} after a slash) is not matched by @code{*} or
387 @code{?} but must be matched explicitly.
389 @item FNM_LEADING_DIR
390 Means that @var{string} also matches @var{pattern} if some initial part
391 of @var{string} matches, and is followed by @code{/} and zero or more
392 characters. For example, @samp{foo*} would match either @samp{foobar}
393 or @samp{foobar/grill}.
396 Ignores case when performing the comparison.
402 @c fopen_unlocked.c:39
403 @deftypefn Extension {FILE *} fopen_unlocked (const char *@var{path}, @
404 const char * @var{mode})
406 Opens and returns a @code{FILE} pointer via @code{fopen}. If the
407 operating system supports it, ensure that the stream is setup to avoid
408 any multi-threaded locking. Otherwise return the @code{FILE} pointer
414 @deftypefn Extension void freeargv (char **@var{vector})
416 Free an argument vector that was built using @code{buildargv}. Simply
417 scans through @var{vector}, freeing the memory for each argument until
418 the terminating @code{NULL} is found, and then frees @var{vector}
423 @c fopen_unlocked.c:59
424 @deftypefn Extension {FILE *} freopen_unlocked (const char * @var{path}, @
425 const char * @var{mode}, FILE * @var{stream})
427 Opens and returns a @code{FILE} pointer via @code{freopen}. If the
428 operating system supports it, ensure that the stream is setup to avoid
429 any multi-threaded locking. Otherwise return the @code{FILE} pointer
435 @deftypefn Replacement long get_run_time (void)
437 Returns the time used so far, in microseconds. If possible, this is
438 the time used by this process, else it is the elapsed time since the
444 @deftypefn Supplemental char* getcwd (char *@var{pathname}, int @var{len})
446 Copy the absolute pathname for the current working directory into
447 @var{pathname}, which is assumed to point to a buffer of at least
448 @var{len} bytes, and return a pointer to the buffer. If the current
449 directory's path doesn't fit in @var{len} characters, the result is
450 @code{NULL} and @code{errno} is set. If @var{pathname} is a null pointer,
451 @code{getcwd} will obtain @var{len} bytes of space using
457 @deftypefn Supplemental int getpagesize (void)
459 Returns the number of bytes in a page of memory. This is the
460 granularity of many of the system memory management routines. No
461 guarantee is made as to whether or not it is the same as the basic
462 memory management hardware page size.
467 @deftypefn Supplemental char* getpwd (void)
469 Returns the current working directory. This implementation caches the
470 result on the assumption that the process will not call @code{chdir}
471 between calls to @code{getpwd}.
476 @deftypefn Supplemental int gettimeofday (struct timeval *@var{tp}, void *@var{tz})
478 Writes the current time to @var{tp}. This implementation requires
479 that @var{tz} be NULL. Returns 0 on success, -1 on failure.
484 @deftypefn Extension void hex_init (void)
486 Initializes the array mapping the current character set to
487 corresponding hex values. This function must be called before any
488 call to @code{hex_p} or @code{hex_value}. If you fail to call it, a
489 default ASCII-based table will normally be used on ASCII systems.
494 @deftypefn Extension int hex_p (int @var{c})
496 Evaluates to non-zero if the given character is a valid hex character,
497 or zero if it is not. Note that the value you pass will be cast to
498 @code{unsigned char} within the macro.
503 @deftypefn Extension {unsigned int} hex_value (int @var{c})
505 Returns the numeric equivalent of the given character when interpreted
506 as a hexadecimal digit. The result is undefined if you pass an
507 invalid hex digit. Note that the value you pass will be cast to
508 @code{unsigned char} within the macro.
510 The @code{hex_value} macro returns @code{unsigned int}, rather than
511 signed @code{int}, to make it easier to use in parsing addresses from
512 hex dump files: a signed @code{int} would be sign-extended when
513 converted to a wider unsigned type --- like @code{bfd_vma}, on some
519 @defvr Extension HOST_CHARSET
520 This macro indicates the basic character set and encoding used by the
521 host: more precisely, the encoding used for character constants in
522 preprocessor @samp{#if} statements (the C "execution character set").
523 It is defined by @file{safe-ctype.h}, and will be an integer constant
524 with one of the following values:
527 @item HOST_CHARSET_UNKNOWN
528 The host character set is unknown - that is, not one of the next two
531 @item HOST_CHARSET_ASCII
532 The host character set is ASCII.
534 @item HOST_CHARSET_EBCDIC
535 The host character set is some variant of EBCDIC. (Only one of the
536 nineteen EBCDIC varying characters is tested; exercise caution.)
541 @deftypefn Supplemental htab_t htab_create_typed_alloc (size_t @var{size}, @
542 htab_hash @var{hash_f}, htab_eq @var{eq_f}, htab_del @var{del_f}, @
543 htab_alloc @var{alloc_tab_f}, htab_alloc @var{alloc_f}, @
544 htab_free @var{free_f})
546 This function creates a hash table that uses two different allocators
547 @var{alloc_tab_f} and @var{alloc_f} to use for allocating the table itself
548 and its entries respectively. This is useful when variables of different
549 types need to be allocated with different allocators.
551 The created hash table is slightly larger than @var{size} and it is
552 initially empty (all the hash table entries are @code{HTAB_EMPTY_ENTRY}).
553 The function returns the created hash table, or @code{NULL} if memory
559 @deftypefn Supplemental char* index (char *@var{s}, int @var{c})
561 Returns a pointer to the first occurrence of the character @var{c} in
562 the string @var{s}, or @code{NULL} if not found. The use of @code{index} is
563 deprecated in new programs in favor of @code{strchr}.
568 @deftypefn Supplemental void insque (struct qelem *@var{elem}, @
569 struct qelem *@var{pred})
570 @deftypefnx Supplemental void remque (struct qelem *@var{elem})
572 Routines to manipulate queues built from doubly linked lists. The
573 @code{insque} routine inserts @var{elem} in the queue immediately
574 after @var{pred}. The @code{remque} routine removes @var{elem} from
575 its containing queue. These routines expect to be passed pointers to
576 structures which have as their first members a forward pointer and a
577 back pointer, like this prototype (although no prototype is provided):
581 struct qelem *q_forw;
582 struct qelem *q_back;
590 @deffn Extension ISALPHA (@var{c})
591 @deffnx Extension ISALNUM (@var{c})
592 @deffnx Extension ISBLANK (@var{c})
593 @deffnx Extension ISCNTRL (@var{c})
594 @deffnx Extension ISDIGIT (@var{c})
595 @deffnx Extension ISGRAPH (@var{c})
596 @deffnx Extension ISLOWER (@var{c})
597 @deffnx Extension ISPRINT (@var{c})
598 @deffnx Extension ISPUNCT (@var{c})
599 @deffnx Extension ISSPACE (@var{c})
600 @deffnx Extension ISUPPER (@var{c})
601 @deffnx Extension ISXDIGIT (@var{c})
603 These twelve macros are defined by @file{safe-ctype.h}. Each has the
604 same meaning as the corresponding macro (with name in lowercase)
605 defined by the standard header @file{ctype.h}. For example,
606 @code{ISALPHA} returns true for alphabetic characters and false for
607 others. However, there are two differences between these macros and
608 those provided by @file{ctype.h}:
611 @item These macros are guaranteed to have well-defined behavior for all
612 values representable by @code{signed char} and @code{unsigned char}, and
615 @item These macros ignore the current locale; they are true for these
616 fixed sets of characters:
617 @multitable {@code{XDIGIT}} {yada yada yada yada yada yada yada yada}
618 @item @code{ALPHA} @tab @kbd{A-Za-z}
619 @item @code{ALNUM} @tab @kbd{A-Za-z0-9}
620 @item @code{BLANK} @tab @kbd{space tab}
621 @item @code{CNTRL} @tab @code{!PRINT}
622 @item @code{DIGIT} @tab @kbd{0-9}
623 @item @code{GRAPH} @tab @code{ALNUM || PUNCT}
624 @item @code{LOWER} @tab @kbd{a-z}
625 @item @code{PRINT} @tab @code{GRAPH ||} @kbd{space}
626 @item @code{PUNCT} @tab @kbd{`~!@@#$%^&*()_-=+[@{]@}\|;:'",<.>/?}
627 @item @code{SPACE} @tab @kbd{space tab \n \r \f \v}
628 @item @code{UPPER} @tab @kbd{A-Z}
629 @item @code{XDIGIT} @tab @kbd{0-9A-Fa-f}
632 Note that, if the host character set is ASCII or a superset thereof,
633 all these macros will return false for all values of @code{char} outside
634 the range of 7-bit ASCII. In particular, both ISPRINT and ISCNTRL return
635 false for characters with numeric values from 128 to 255.
640 @deffn Extension ISIDNUM (@var{c})
641 @deffnx Extension ISIDST (@var{c})
642 @deffnx Extension IS_VSPACE (@var{c})
643 @deffnx Extension IS_NVSPACE (@var{c})
644 @deffnx Extension IS_SPACE_OR_NUL (@var{c})
645 @deffnx Extension IS_ISOBASIC (@var{c})
646 These six macros are defined by @file{safe-ctype.h} and provide
647 additional character classes which are useful when doing lexical
648 analysis of C or similar languages. They are true for the following
651 @multitable {@code{SPACE_OR_NUL}} {yada yada yada yada yada yada yada yada}
652 @item @code{IDNUM} @tab @kbd{A-Za-z0-9_}
653 @item @code{IDST} @tab @kbd{A-Za-z_}
654 @item @code{VSPACE} @tab @kbd{\r \n}
655 @item @code{NVSPACE} @tab @kbd{space tab \f \v \0}
656 @item @code{SPACE_OR_NUL} @tab @code{VSPACE || NVSPACE}
657 @item @code{ISOBASIC} @tab @code{VSPACE || NVSPACE || PRINT}
662 @deftypefn Replacement {const char*} lbasename (const char *@var{name})
664 Given a pointer to a string containing a typical pathname
665 (@samp{/usr/src/cmd/ls/ls.c} for example), returns a pointer to the
666 last component of the pathname (@samp{ls.c} in this case). The
667 returned pointer is guaranteed to lie within the original
668 string. This latter fact is not true of many vendor C
669 libraries, which return special strings or modify the passed
670 strings for particular input.
672 In particular, the empty string returns the same empty string,
673 and a path ending in @code{/} returns the empty string after it.
678 @deftypefn Replacement {const char*} lrealpath (const char *@var{name})
680 Given a pointer to a string containing a pathname, returns a canonical
681 version of the filename. Symlinks will be resolved, and ``.'' and ``..''
682 components will be simplified. The returned value will be allocated using
683 @code{malloc}, or @code{NULL} will be returned on a memory allocation error.
687 @c make-relative-prefix.c:24
688 @deftypefn Extension {const char*} make_relative_prefix (const char *@var{progname}, @
689 const char *@var{bin_prefix}, const char *@var{prefix})
691 Given three paths @var{progname}, @var{bin_prefix}, @var{prefix},
692 return the path that is in the same position relative to
693 @var{progname}'s directory as @var{prefix} is relative to
694 @var{bin_prefix}. That is, a string starting with the directory
695 portion of @var{progname}, followed by a relative pathname of the
696 difference between @var{bin_prefix} and @var{prefix}.
698 If @var{progname} does not contain any directory separators,
699 @code{make_relative_prefix} will search @env{PATH} to find a program
700 named @var{progname}. Also, if @var{progname} is a symbolic link,
701 the symbolic link will be resolved.
703 For example, if @var{bin_prefix} is @code{/alpha/beta/gamma/gcc/delta},
704 @var{prefix} is @code{/alpha/beta/gamma/omega/}, and @var{progname} is
705 @code{/red/green/blue/gcc}, then this function will return
706 @code{/red/green/blue/../../omega/}.
708 The return value is normally allocated via @code{malloc}. If no
709 relative prefix can be found, return @code{NULL}.
713 @c make-temp-file.c:174
714 @deftypefn Replacement char* make_temp_file (const char *@var{suffix})
716 Return a temporary file name (as a string) or @code{NULL} if unable to
717 create one. @var{suffix} is a suffix to append to the file name. The
718 string is @code{malloc}ed, and the temporary file has been created.
723 @deftypefn Supplemental void* memchr (const void *@var{s}, int @var{c}, @
726 This function searches memory starting at @code{*@var{s}} for the
727 character @var{c}. The search only ends with the first occurrence of
728 @var{c}, or after @var{length} characters; in particular, a null
729 character does not terminate the search. If the character @var{c} is
730 found within @var{length} characters of @code{*@var{s}}, a pointer
731 to the character is returned. If @var{c} is not found, then @code{NULL} is
737 @deftypefn Supplemental int memcmp (const void *@var{x}, const void *@var{y}, @
740 Compares the first @var{count} bytes of two areas of memory. Returns
741 zero if they are the same, a value less than zero if @var{x} is
742 lexically less than @var{y}, or a value greater than zero if @var{x}
743 is lexically greater than @var{y}. Note that lexical order is determined
744 as if comparing unsigned char arrays.
749 @deftypefn Supplemental void* memcpy (void *@var{out}, const void *@var{in}, @
752 Copies @var{length} bytes from memory region @var{in} to region
753 @var{out}. Returns a pointer to @var{out}.
758 @deftypefn Supplemental void* memmem (const void *@var{haystack}, @
759 size_t @var{haystack_len} const void *@var{needle}, size_t @var{needle_len})
761 Returns a pointer to the first occurrence of @var{needle} (length
762 @var{needle_len}) in @var{haystack} (length @var{haystack_len}).
763 Returns @code{NULL} if not found.
768 @deftypefn Supplemental void* memmove (void *@var{from}, const void *@var{to}, @
771 Copies @var{count} bytes from memory area @var{from} to memory area
772 @var{to}, returning a pointer to @var{to}.
777 @deftypefn Supplemental void* mempcpy (void *@var{out}, const void *@var{in}, @
780 Copies @var{length} bytes from memory region @var{in} to region
781 @var{out}. Returns a pointer to @var{out} + @var{length}.
786 @deftypefn Supplemental void* memset (void *@var{s}, int @var{c}, @
789 Sets the first @var{count} bytes of @var{s} to the constant byte
790 @var{c}, returning a pointer to @var{s}.
795 @deftypefn Replacement int mkstemps (char *@var{pattern}, int @var{suffix_len})
797 Generate a unique temporary file name from @var{pattern}.
798 @var{pattern} has the form:
801 @var{path}/ccXXXXXX@var{suffix}
804 @var{suffix_len} tells us how long @var{suffix} is (it can be zero
805 length). The last six characters of @var{pattern} before @var{suffix}
806 must be @samp{XXXXXX}; they are replaced with a string that makes the
807 filename unique. Returns a file descriptor open on the file for
813 @deftypefn Extension void pex_free (struct pex_obj @var{obj})
815 Clean up and free all data associated with @var{obj}. If you have not
816 yet called @code{pex_get_times} or @code{pex_get_status}, this will
817 try to kill the subprocesses.
822 @deftypefn Extension int pex_get_status (struct pex_obj *@var{obj}, @
823 int @var{count}, int *@var{vector})
825 Returns the exit status of all programs run using @var{obj}.
826 @var{count} is the number of results expected. The results will be
827 placed into @var{vector}. The results are in the order of the calls
828 to @code{pex_run}. Returns 0 on error, 1 on success.
833 @deftypefn Extension int pex_get_times (struct pex_obj *@var{obj}, @
834 int @var{count}, struct pex_time *@var{vector})
836 Returns the process execution times of all programs run using
837 @var{obj}. @var{count} is the number of results expected. The
838 results will be placed into @var{vector}. The results are in the
839 order of the calls to @code{pex_run}. Returns 0 on error, 1 on
842 @code{struct pex_time} has the following fields of the type
843 @code{unsigned long}: @code{user_seconds},
844 @code{user_microseconds}, @code{system_seconds},
845 @code{system_microseconds}. On systems which do not support reporting
846 process times, all the fields will be set to @code{0}.
851 @deftypefn Extension {struct pex_obj *} pex_init (int @var{flags}, @
852 const char *@var{pname}, const char *@var{tempbase})
854 Prepare to execute one or more programs, with standard output of each
855 program fed to standard input of the next. This is a system
856 independent interface to execute a pipeline.
858 @var{flags} is a bitwise combination of the following:
862 @vindex PEX_RECORD_TIMES
863 @item PEX_RECORD_TIMES
864 Record subprocess times if possible.
866 @vindex PEX_USE_PIPES
868 Use pipes for communication between processes, if possible.
870 @vindex PEX_SAVE_TEMPS
872 Don't delete temporary files used for communication between
877 @var{pname} is the name of program to be executed, used in error
878 messages. @var{tempbase} is a base name to use for any required
879 temporary files; it may be @code{NULL} to use a randomly chosen name.
884 @deftypefn Extension {FILE *} pex_input_file (struct pex_obj *@var{obj}, @
885 int @var{flags}, const char *@var{in_name})
887 Return a stream for a temporary file to pass to the first program in
888 the pipeline as input.
890 The name of the input file is chosen according to the same rules
891 @code{pex_run} uses to choose output file names, based on
892 @var{in_name}, @var{obj} and the @code{PEX_SUFFIX} bit in @var{flags}.
894 Don't call @code{fclose} on the returned stream; the first call to
895 @code{pex_run} closes it automatically.
897 If @var{flags} includes @code{PEX_BINARY_OUTPUT}, open the stream in
898 binary mode; otherwise, open it in the default mode. Including
899 @code{PEX_BINARY_OUTPUT} in @var{flags} has no effect on Unix.
903 @deftypefn Extension {FILE *} pex_input_pipe (struct pex_obj *@var{obj}, @
906 Return a stream @var{fp} for a pipe connected to the standard input of
907 the first program in the pipeline; @var{fp} is opened for writing.
908 You must have passed @code{PEX_USE_PIPES} to the @code{pex_init} call
909 that returned @var{obj}.
911 You must close @var{fp} using @code{fclose} yourself when you have
912 finished writing data to the pipeline.
914 The file descriptor underlying @var{fp} is marked not to be inherited
917 On systems that do not support pipes, this function returns
918 @code{NULL}, and sets @code{errno} to @code{EINVAL}. If you would
919 like to write code that is portable to all systems the @code{pex}
920 functions support, consider using @code{pex_input_file} instead.
922 There are two opportunities for deadlock using
923 @code{pex_input_pipe}:
927 Most systems' pipes can buffer only a fixed amount of data; a process
928 that writes to a full pipe blocks. Thus, if you write to @file{fp}
929 before starting the first process, you run the risk of blocking when
930 there is no child process yet to read the data and allow you to
931 continue. @code{pex_input_pipe} makes no promises about the
932 size of the pipe's buffer, so if you need to write any data at all
933 before starting the first process in the pipeline, consider using
934 @code{pex_input_file} instead.
937 Using @code{pex_input_pipe} and @code{pex_read_output} together
938 may also cause deadlock. If the output pipe fills up, so that each
939 program in the pipeline is waiting for the next to read more data, and
940 you fill the input pipe by writing more data to @var{fp}, then there
941 is no way to make progress: the only process that could read data from
942 the output pipe is you, but you are blocked on the input pipe.
949 @deftypefn Extension {const char *} pex_one (int @var{flags}, @
950 const char *@var{executable}, char * const *@var{argv}, @
951 const char *@var{pname}, const char *@var{outname}, const char *@var{errname}, @
952 int *@var{status}, int *@var{err})
954 An interface to permit the easy execution of a
955 single program. The return value and most of the parameters are as
956 for a call to @code{pex_run}. @var{flags} is restricted to a
957 combination of @code{PEX_SEARCH}, @code{PEX_STDERR_TO_STDOUT}, and
958 @code{PEX_BINARY_OUTPUT}. @var{outname} is interpreted as if
959 @code{PEX_LAST} were set. On a successful return, @code{*@var{status}} will
960 be set to the exit status of the program.
965 @deftypefn Extension {FILE *} pex_read_err (struct pex_obj *@var{obj}, @
968 Returns a @code{FILE} pointer which may be used to read the standard
969 error of the last program in the pipeline. When this is used,
970 @code{PEX_LAST} should not be used in a call to @code{pex_run}. After
971 this is called, @code{pex_run} may no longer be called with the same
972 @var{obj}. @var{binary} should be non-zero if the file should be
973 opened in binary mode. Don't call @code{fclose} on the returned file;
974 it will be closed by @code{pex_free}.
979 @deftypefn Extension {FILE *} pex_read_output (struct pex_obj *@var{obj}, @
982 Returns a @code{FILE} pointer which may be used to read the standard
983 output of the last program in the pipeline. When this is used,
984 @code{PEX_LAST} should not be used in a call to @code{pex_run}. After
985 this is called, @code{pex_run} may no longer be called with the same
986 @var{obj}. @var{binary} should be non-zero if the file should be
987 opened in binary mode. Don't call @code{fclose} on the returned file;
988 it will be closed by @code{pex_free}.
993 @deftypefn Extension {const char *} pex_run (struct pex_obj *@var{obj}, @
994 int @var{flags}, const char *@var{executable}, char * const *@var{argv}, @
995 const char *@var{outname}, const char *@var{errname}, int *@var{err})
997 Execute one program in a pipeline. On success this returns
998 @code{NULL}. On failure it returns an error message, a statically
1001 @var{obj} is returned by a previous call to @code{pex_init}.
1003 @var{flags} is a bitwise combination of the following:
1009 This must be set on the last program in the pipeline. In particular,
1010 it should be set when executing a single program. The standard output
1011 of the program will be sent to @var{outname}, or, if @var{outname} is
1012 @code{NULL}, to the standard output of the calling program. Do @emph{not}
1013 set this bit if you want to call @code{pex_read_output}
1014 (described below). After a call to @code{pex_run} with this bit set,
1015 @var{pex_run} may no longer be called with the same @var{obj}.
1019 Search for the program using the user's executable search path.
1023 @var{outname} is a suffix. See the description of @var{outname},
1026 @vindex PEX_STDERR_TO_STDOUT
1027 @item PEX_STDERR_TO_STDOUT
1028 Send the program's standard error to standard output, if possible.
1030 @vindex PEX_BINARY_INPUT
1031 @vindex PEX_BINARY_OUTPUT
1032 @vindex PEX_BINARY_ERROR
1033 @item PEX_BINARY_INPUT
1034 @itemx PEX_BINARY_OUTPUT
1035 @itemx PEX_BINARY_ERROR
1036 The standard input (output or error) of the program should be read (written) in
1037 binary mode rather than text mode. These flags are ignored on systems
1038 which do not distinguish binary mode and text mode, such as Unix. For
1039 proper behavior these flags should match appropriately---a call to
1040 @code{pex_run} using @code{PEX_BINARY_OUTPUT} should be followed by a
1041 call using @code{PEX_BINARY_INPUT}.
1043 @vindex PEX_STDERR_TO_PIPE
1044 @item PEX_STDERR_TO_PIPE
1045 Send the program's standard error to a pipe, if possible. This flag
1046 cannot be specified together with @code{PEX_STDERR_TO_STDOUT}. This
1047 flag can be specified only on the last program in pipeline.
1051 @var{executable} is the program to execute. @var{argv} is the set of
1052 arguments to pass to the program; normally @code{@var{argv}[0]} will
1053 be a copy of @var{executable}.
1055 @var{outname} is used to set the name of the file to use for standard
1056 output. There are two cases in which no output file will be used:
1060 if @code{PEX_LAST} is not set in @var{flags}, and @code{PEX_USE_PIPES}
1061 was set in the call to @code{pex_init}, and the system supports pipes
1064 if @code{PEX_LAST} is set in @var{flags}, and @var{outname} is
1069 Otherwise the code will use a file to hold standard
1070 output. If @code{PEX_LAST} is not set, this file is considered to be
1071 a temporary file, and it will be removed when no longer needed, unless
1072 @code{PEX_SAVE_TEMPS} was set in the call to @code{pex_init}.
1074 There are two cases to consider when setting the name of the file to
1075 hold standard output.
1079 @code{PEX_SUFFIX} is set in @var{flags}. In this case
1080 @var{outname} may not be @code{NULL}. If the @var{tempbase} parameter
1081 to @code{pex_init} was not @code{NULL}, then the output file name is
1082 the concatenation of @var{tempbase} and @var{outname}. If
1083 @var{tempbase} was @code{NULL}, then the output file name is a random
1084 file name ending in @var{outname}.
1087 @code{PEX_SUFFIX} was not set in @var{flags}. In this
1088 case, if @var{outname} is not @code{NULL}, it is used as the output
1089 file name. If @var{outname} is @code{NULL}, and @var{tempbase} was
1090 not NULL, the output file name is randomly chosen using
1091 @var{tempbase}. Otherwise the output file name is chosen completely
1095 @var{errname} is the file name to use for standard error output. If
1096 it is @code{NULL}, standard error is the same as the caller's.
1097 Otherwise, standard error is written to the named file.
1099 On an error return, the code sets @code{*@var{err}} to an @code{errno}
1100 value, or to 0 if there is no relevant @code{errno}.
1105 @deftypefn Extension {const char *} pex_run_in_environment (struct pex_obj *@var{obj}, @
1106 int @var{flags}, const char *@var{executable}, char * const *@var{argv}, @
1107 char * const *@var{env}, int @var{env_size}, const char *@var{outname}, @
1108 const char *@var{errname}, int *@var{err})
1110 Execute one program in a pipeline, permitting the environment for the
1111 program to be specified. Behaviour and parameters not listed below are
1112 as for @code{pex_run}.
1114 @var{env} is the environment for the child process, specified as an array of
1115 character pointers. Each element of the array should point to a string of the
1116 form @code{VAR=VALUE}, with the exception of the last element that must be
1122 @deftypefn Extension int pexecute (const char *@var{program}, @
1123 char * const *@var{argv}, const char *@var{this_pname}, @
1124 const char *@var{temp_base}, char **@var{errmsg_fmt}, @
1125 char **@var{errmsg_arg}, int @var{flags})
1127 This is the old interface to execute one or more programs. It is
1128 still supported for compatibility purposes, but is no longer
1134 @deftypefn Supplemental void psignal (int @var{signo}, char *@var{message})
1136 Print @var{message} to the standard error, followed by a colon,
1137 followed by the description of the signal specified by @var{signo},
1138 followed by a newline.
1143 @deftypefn Supplemental int putenv (const char *@var{string})
1145 Uses @code{setenv} or @code{unsetenv} to put @var{string} into
1146 the environment or remove it. If @var{string} is of the form
1147 @samp{name=value} the string is added; if no @samp{=} is present the
1148 name is unset/removed.
1153 @deftypefn Extension int pwait (int @var{pid}, int *@var{status}, int @var{flags})
1155 Another part of the old execution interface.
1160 @deftypefn Supplement {long int} random (void)
1161 @deftypefnx Supplement void srandom (unsigned int @var{seed})
1162 @deftypefnx Supplement void* initstate (unsigned int @var{seed}, @
1163 void *@var{arg_state}, unsigned long @var{n})
1164 @deftypefnx Supplement void* setstate (void *@var{arg_state})
1166 Random number functions. @code{random} returns a random number in the
1167 range 0 to @code{LONG_MAX}. @code{srandom} initializes the random
1168 number generator to some starting point determined by @var{seed}
1169 (else, the values returned by @code{random} are always the same for each
1170 run of the program). @code{initstate} and @code{setstate} allow fine-grained
1171 control over the state of the random number generator.
1176 @deftypefn Extension char* reconcat (char *@var{optr}, const char *@var{s1}, @
1177 @dots{}, @code{NULL})
1179 Same as @code{concat}, except that if @var{optr} is not @code{NULL} it
1180 is freed after the string is created. This is intended to be useful
1181 when you're extending an existing string or building up a string in a
1185 str = reconcat (str, "pre-", str, NULL);
1191 @deftypefn Supplemental int rename (const char *@var{old}, const char *@var{new})
1193 Renames a file from @var{old} to @var{new}. If @var{new} already
1194 exists, it is removed.
1199 @deftypefn Supplemental char* rindex (const char *@var{s}, int @var{c})
1201 Returns a pointer to the last occurrence of the character @var{c} in
1202 the string @var{s}, or @code{NULL} if not found. The use of @code{rindex} is
1203 deprecated in new programs in favor of @code{strrchr}.
1208 @deftypefn Supplemental int setenv (const char *@var{name}, @
1209 const char *@var{value}, int @var{overwrite})
1210 @deftypefnx Supplemental void unsetenv (const char *@var{name})
1212 @code{setenv} adds @var{name} to the environment with value
1213 @var{value}. If the name was already present in the environment,
1214 the new value will be stored only if @var{overwrite} is nonzero.
1215 The companion @code{unsetenv} function removes @var{name} from the
1216 environment. This implementation is not safe for multithreaded code.
1220 @c setproctitle.c:31
1221 @deftypefn Supplemental void setproctitle (const char *@var{fmt}, ...)
1223 Set the title of a process to @var{fmt}. va args not supported for now,
1224 but defined for compatibility with BSD.
1229 @deftypefn Extension int signo_max (void)
1231 Returns the maximum signal value for which a corresponding symbolic
1232 name or message is available. Note that in the case where we use the
1233 @code{sys_siglist} supplied by the system, it is possible for there to
1234 be more symbolic names than messages, or vice versa. In fact, the
1235 manual page for @code{psignal(3b)} explicitly warns that one should
1236 check the size of the table (@code{NSIG}) before indexing it, since
1237 new signal codes may be added to the system before they are added to
1238 the table. Thus @code{NSIG} might be smaller than value implied by
1239 the largest signo value defined in @code{<signal.h>}.
1241 We return the maximum value that can be used to obtain a meaningful
1242 symbolic name or message.
1247 @deftypefn Supplemental int sigsetmask (int @var{set})
1249 Sets the signal mask to the one provided in @var{set} and returns
1250 the old mask (which, for libiberty's implementation, will always
1251 be the value @code{1}).
1255 @c simple-object.txh:96
1256 @deftypefn Extension {const char *} simple_object_attributes_compare @
1257 (simple_object_attributes *@var{attrs1}, simple_object_attributes *@var{attrs2}, @
1260 Compare @var{attrs1} and @var{attrs2}. If they could be linked
1261 together without error, return @code{NULL}. Otherwise, return an
1262 error message and set @code{*@var{err}} to an errno value or @code{0}
1263 if there is no relevant errno.
1267 @c simple-object.txh:81
1268 @deftypefn Extension {simple_object_attributes *} simple_object_fetch_attributes @
1269 (simple_object_read *@var{simple_object}, const char **@var{errmsg}, int *@var{err})
1271 Fetch the attributes of @var{simple_object}. The attributes are
1272 internal information such as the format of the object file, or the
1273 architecture it was compiled for. This information will persist until
1274 @code{simple_object_attributes_release} is called, even if
1275 @var{simple_object} itself is released.
1277 On error this returns @code{NULL}, sets @code{*@var{errmsg}} to an
1278 error message, and sets @code{*@var{err}} to an errno value or
1279 @code{0} if there is no relevant errno.
1283 @c simple-object.txh:49
1284 @deftypefn Extension {int} simple_object_find_section @
1285 (simple_object_read *@var{simple_object} off_t *@var{offset}, @
1286 off_t *@var{length}, const char **@var{errmsg}, int *@var{err})
1288 Look for the section @var{name} in @var{simple_object}. This returns
1289 information for the first section with that name.
1291 If found, return 1 and set @code{*@var{offset}} to the offset in the
1292 file of the section contents and set @code{*@var{length}} to the
1293 length of the section contents. The value in @code{*@var{offset}}
1294 will be relative to the offset passed to
1295 @code{simple_object_open_read}.
1297 If the section is not found, and no error occurs,
1298 @code{simple_object_find_section} returns @code{0} and set
1299 @code{*@var{errmsg}} to @code{NULL}.
1301 If an error occurs, @code{simple_object_find_section} returns
1302 @code{0}, sets @code{*@var{errmsg}} to an error message, and sets
1303 @code{*@var{err}} to an errno value or @code{0} if there is no
1308 @c simple-object.txh:27
1309 @deftypefn Extension {const char *} simple_object_find_sections @
1310 (simple_object_read *@var{simple_object}, int (*@var{pfn}) (void *@var{data}, @
1311 const char *@var{name}, off_t @var{offset}, off_t @var{length}), @
1312 void *@var{data}, int *@var{err})
1314 This function calls @var{pfn} for each section in @var{simple_object}.
1315 It calls @var{pfn} with the section name, the offset within the file
1316 of the section contents, and the length of the section contents. The
1317 offset within the file is relative to the offset passed to
1318 @code{simple_object_open_read}. The @var{data} argument to this
1319 function is passed along to @var{pfn}.
1321 If @var{pfn} returns @code{0}, the loop over the sections stops and
1322 @code{simple_object_find_sections} returns. If @var{pfn} returns some
1323 other value, the loop continues.
1325 On success @code{simple_object_find_sections} returns. On error it
1326 returns an error string, and sets @code{*@var{err}} to an errno value
1327 or @code{0} if there is no relevant errno.
1331 @c simple-object.txh:2
1332 @deftypefn Extension {simple_object_read *} simple_object_open_read @
1333 (int @var{descriptor}, off_t @var{offset}, const char *{segment_name}, @
1334 const char **@var{errmsg}, int *@var{err})
1336 Opens an object file for reading. Creates and returns an
1337 @code{simple_object_read} pointer which may be passed to other
1338 functions to extract data from the object file.
1340 @var{descriptor} holds a file descriptor which permits reading.
1342 @var{offset} is the offset into the file; this will be @code{0} in the
1343 normal case, but may be a different value when reading an object file
1346 @var{segment_name} is only used with the Mach-O file format used on
1347 Darwin aka Mac OS X. It is required on that platform, and means to
1348 only look at sections within the segment with that name. The
1349 parameter is ignored on other systems.
1351 If an error occurs, this functions returns @code{NULL} and sets
1352 @code{*@var{errmsg}} to an error string and sets @code{*@var{err}} to
1353 an errno value or @code{0} if there is no relevant errno.
1357 @c simple-object.txh:107
1358 @deftypefn Extension {void} simple_object_release_attributes @
1359 (simple_object_attributes *@var{attrs})
1361 Release all resources associated with @var{attrs}.
1365 @c simple-object.txh:73
1366 @deftypefn Extension {void} simple_object_release_read @
1367 (simple_object_read *@var{simple_object})
1369 Release all resources associated with @var{simple_object}. This does
1370 not close the file descriptor.
1374 @c simple-object.txh:184
1375 @deftypefn Extension {void} simple_object_release_write @
1376 (simple_object_write *@var{simple_object})
1378 Release all resources associated with @var{simple_object}.
1382 @c simple-object.txh:114
1383 @deftypefn Extension {simple_object_write *} simple_object_start_write @
1384 (simple_object_attributes @var{attrs}, const char *@var{segment_name}, @
1385 const char **@var{errmsg}, int *@var{err})
1387 Start creating a new object file using the object file format
1388 described in @var{attrs}. You must fetch attribute information from
1389 an existing object file before you can create a new one. There is
1390 currently no support for creating an object file de novo.
1392 @var{segment_name} is only used with Mach-O as found on Darwin aka Mac
1393 OS X. The parameter is required on that target. It means that all
1394 sections are created within the named segment. It is ignored for
1395 other object file formats.
1397 On error @code{simple_object_start_write} returns @code{NULL}, sets
1398 @code{*@var{ERRMSG}} to an error message, and sets @code{*@var{err}}
1399 to an errno value or @code{0} if there is no relevant errno.
1403 @c simple-object.txh:153
1404 @deftypefn Extension {const char *} simple_object_write_add_data @
1405 (simple_object_write *@var{simple_object}, @
1406 simple_object_write_section *@var{section}, const void *@var{buffer}, @
1407 size_t @var{size}, int @var{copy}, int *@var{err})
1409 Add data @var{buffer}/@var{size} to @var{section} in
1410 @var{simple_object}. If @var{copy} is non-zero, the data will be
1411 copied into memory if necessary. If @var{copy} is zero, @var{buffer}
1412 must persist until @code{simple_object_write_to_file} is called. is
1415 On success this returns @code{NULL}. On error this returns an error
1416 message, and sets @code{*@var{err}} to an errno value or 0 if there is
1421 @c simple-object.txh:134
1422 @deftypefn Extension {simple_object_write_section *} simple_object_write_create_section @
1423 (simple_object_write *@var{simple_object}, const char *@var{name}, @
1424 unsigned int @var{align}, const char **@var{errmsg}, int *@var{err})
1426 Add a section to @var{simple_object}. @var{name} is the name of the
1427 new section. @var{align} is the required alignment expressed as the
1428 number of required low-order 0 bits (e.g., 2 for alignment to a 32-bit
1431 The section is created as containing data, readable, not writable, not
1432 executable, not loaded at runtime. The section is not written to the
1433 file until @code{simple_object_write_to_file} is called.
1435 On error this returns @code{NULL}, sets @code{*@var{errmsg}} to an
1436 error message, and sets @code{*@var{err}} to an errno value or
1437 @code{0} if there is no relevant errno.
1441 @c simple-object.txh:170
1442 @deftypefn Extension {const char *} simple_object_write_to_file @
1443 (simple_object_write *@var{simple_object}, int @var{descriptor}, int *@var{err})
1445 Write the complete object file to @var{descriptor}, an open file
1446 descriptor. This writes out all the data accumulated by calls to
1447 @code{simple_object_write_create_section} and
1448 @var{simple_object_write_add_data}.
1450 This returns @code{NULL} on success. On error this returns an error
1451 message and sets @code{*@var{err}} to an errno value or @code{0} if
1452 there is no relevant errno.
1457 @deftypefn Supplemental int snprintf (char *@var{buf}, size_t @var{n}, @
1458 const char *@var{format}, ...)
1460 This function is similar to @code{sprintf}, but it will write to
1461 @var{buf} at most @code{@var{n}-1} bytes of text, followed by a
1462 terminating null byte, for a total of @var{n} bytes.
1463 On error the return value is -1, otherwise it returns the number of
1464 bytes, not including the terminating null byte, that would have been
1465 written had @var{n} been sufficiently large, regardless of the actual
1466 value of @var{n}. Note some pre-C99 system libraries do not implement
1467 this correctly so users cannot generally rely on the return value if
1468 the system version of this function is used.
1473 @deftypefn Extension char* spaces (int @var{count})
1475 Returns a pointer to a memory region filled with the specified
1476 number of spaces and null terminated. The returned pointer is
1477 valid until at least the next call.
1482 @deftypefn Supplemental splay_tree splay_tree_new_with_typed_alloc @
1483 (splay_tree_compare_fn @var{compare_fn}, @
1484 splay_tree_delete_key_fn @var{delete_key_fn}, @
1485 splay_tree_delete_value_fn @var{delete_value_fn}, @
1486 splay_tree_allocate_fn @var{tree_allocate_fn}, @
1487 splay_tree_allocate_fn @var{node_allocate_fn}, @
1488 splay_tree_deallocate_fn @var{deallocate_fn}, @
1489 void * @var{allocate_data})
1491 This function creates a splay tree that uses two different allocators
1492 @var{tree_allocate_fn} and @var{node_allocate_fn} to use for allocating the
1493 tree itself and its nodes respectively. This is useful when variables of
1494 different types need to be allocated with different allocators.
1496 The splay tree will use @var{compare_fn} to compare nodes,
1497 @var{delete_key_fn} to deallocate keys, and @var{delete_value_fn} to
1503 @deftypefn Extension void stack_limit_increase (unsigned long @var{pref})
1505 Attempt to increase stack size limit to @var{pref} bytes if possible.
1510 @deftypefn Supplemental char* stpcpy (char *@var{dst}, const char *@var{src})
1512 Copies the string @var{src} into @var{dst}. Returns a pointer to
1513 @var{dst} + strlen(@var{src}).
1518 @deftypefn Supplemental char* stpncpy (char *@var{dst}, const char *@var{src}, @
1521 Copies the string @var{src} into @var{dst}, copying exactly @var{len}
1522 and padding with zeros if necessary. If @var{len} < strlen(@var{src})
1523 then return @var{dst} + @var{len}, otherwise returns @var{dst} +
1529 @deftypefn Supplemental int strcasecmp (const char *@var{s1}, const char *@var{s2})
1531 A case-insensitive @code{strcmp}.
1536 @deftypefn Supplemental char* strchr (const char *@var{s}, int @var{c})
1538 Returns a pointer to the first occurrence of the character @var{c} in
1539 the string @var{s}, or @code{NULL} if not found. If @var{c} is itself the
1540 null character, the results are undefined.
1545 @deftypefn Supplemental char* strdup (const char *@var{s})
1547 Returns a pointer to a copy of @var{s} in memory obtained from
1548 @code{malloc}, or @code{NULL} if insufficient memory was available.
1553 @deftypefn Replacement {const char*} strerrno (int @var{errnum})
1555 Given an error number returned from a system call (typically returned
1556 in @code{errno}), returns a pointer to a string containing the
1557 symbolic name of that error number, as found in @code{<errno.h>}.
1559 If the supplied error number is within the valid range of indices for
1560 symbolic names, but no name is available for the particular error
1561 number, then returns the string @samp{Error @var{num}}, where @var{num}
1562 is the error number.
1564 If the supplied error number is not within the range of valid
1565 indices, then returns @code{NULL}.
1567 The contents of the location pointed to are only guaranteed to be
1568 valid until the next call to @code{strerrno}.
1573 @deftypefn Supplemental char* strerror (int @var{errnoval})
1575 Maps an @code{errno} number to an error message string, the contents
1576 of which are implementation defined. On systems which have the
1577 external variables @code{sys_nerr} and @code{sys_errlist}, these
1578 strings will be the same as the ones used by @code{perror}.
1580 If the supplied error number is within the valid range of indices for
1581 the @code{sys_errlist}, but no message is available for the particular
1582 error number, then returns the string @samp{Error @var{num}}, where
1583 @var{num} is the error number.
1585 If the supplied error number is not a valid index into
1586 @code{sys_errlist}, returns @code{NULL}.
1588 The returned string is only guaranteed to be valid only until the
1589 next call to @code{strerror}.
1594 @deftypefn Supplemental int strncasecmp (const char *@var{s1}, const char *@var{s2})
1596 A case-insensitive @code{strncmp}.
1601 @deftypefn Supplemental int strncmp (const char *@var{s1}, @
1602 const char *@var{s2}, size_t @var{n})
1604 Compares the first @var{n} bytes of two strings, returning a value as
1610 @deftypefn Extension char* strndup (const char *@var{s}, size_t @var{n})
1612 Returns a pointer to a copy of @var{s} with at most @var{n} characters
1613 in memory obtained from @code{malloc}, or @code{NULL} if insufficient
1614 memory was available. The result is always NUL terminated.
1619 @deftypefn Supplemental size_t strnlen (const char *@var{s}, size_t @var{maxlen})
1621 Returns the length of @var{s}, as with @code{strlen}, but never looks
1622 past the first @var{maxlen} characters in the string. If there is no
1623 '\0' character in the first @var{maxlen} characters, returns
1629 @deftypefn Supplemental char* strrchr (const char *@var{s}, int @var{c})
1631 Returns a pointer to the last occurrence of the character @var{c} in
1632 the string @var{s}, or @code{NULL} if not found. If @var{c} is itself the
1633 null character, the results are undefined.
1638 @deftypefn Supplemental {const char *} strsignal (int @var{signo})
1640 Maps an signal number to an signal message string, the contents of
1641 which are implementation defined. On systems which have the external
1642 variable @code{sys_siglist}, these strings will be the same as the
1643 ones used by @code{psignal()}.
1645 If the supplied signal number is within the valid range of indices for
1646 the @code{sys_siglist}, but no message is available for the particular
1647 signal number, then returns the string @samp{Signal @var{num}}, where
1648 @var{num} is the signal number.
1650 If the supplied signal number is not a valid index into
1651 @code{sys_siglist}, returns @code{NULL}.
1653 The returned string is only guaranteed to be valid only until the next
1654 call to @code{strsignal}.
1659 @deftypefn Extension {const char*} strsigno (int @var{signo})
1661 Given an signal number, returns a pointer to a string containing the
1662 symbolic name of that signal number, as found in @code{<signal.h>}.
1664 If the supplied signal number is within the valid range of indices for
1665 symbolic names, but no name is available for the particular signal
1666 number, then returns the string @samp{Signal @var{num}}, where
1667 @var{num} is the signal number.
1669 If the supplied signal number is not within the range of valid
1670 indices, then returns @code{NULL}.
1672 The contents of the location pointed to are only guaranteed to be
1673 valid until the next call to @code{strsigno}.
1678 @deftypefn Supplemental char* strstr (const char *@var{string}, const char *@var{sub})
1680 This function searches for the substring @var{sub} in the string
1681 @var{string}, not including the terminating null characters. A pointer
1682 to the first occurrence of @var{sub} is returned, or @code{NULL} if the
1683 substring is absent. If @var{sub} points to a string with zero
1684 length, the function returns @var{string}.
1689 @deftypefn Supplemental double strtod (const char *@var{string}, @
1690 char **@var{endptr})
1692 This ISO C function converts the initial portion of @var{string} to a
1693 @code{double}. If @var{endptr} is not @code{NULL}, a pointer to the
1694 character after the last character used in the conversion is stored in
1695 the location referenced by @var{endptr}. If no conversion is
1696 performed, zero is returned and the value of @var{string} is stored in
1697 the location referenced by @var{endptr}.
1702 @deftypefn Extension int strtoerrno (const char *@var{name})
1704 Given the symbolic name of a error number (e.g., @code{EACCES}), map it
1705 to an errno value. If no translation is found, returns 0.
1710 @deftypefn Supplemental {long int} strtol (const char *@var{string}, @
1711 char **@var{endptr}, int @var{base})
1712 @deftypefnx Supplemental {unsigned long int} strtoul (const char *@var{string}, @
1713 char **@var{endptr}, int @var{base})
1715 The @code{strtol} function converts the string in @var{string} to a
1716 long integer value according to the given @var{base}, which must be
1717 between 2 and 36 inclusive, or be the special value 0. If @var{base}
1718 is 0, @code{strtol} will look for the prefixes @code{0} and @code{0x}
1719 to indicate bases 8 and 16, respectively, else default to base 10.
1720 When the base is 16 (either explicitly or implicitly), a prefix of
1721 @code{0x} is allowed. The handling of @var{endptr} is as that of
1722 @code{strtod} above. The @code{strtoul} function is the same, except
1723 that the converted value is unsigned.
1728 @deftypefn Supplemental {long long int} strtoll (const char *@var{string}, @
1729 char **@var{endptr}, int @var{base})
1730 @deftypefnx Supplemental {unsigned long long int} strtoul (@
1731 const char *@var{string}, char **@var{endptr}, int @var{base})
1733 The @code{strtoll} function converts the string in @var{string} to a
1734 long long integer value according to the given @var{base}, which must be
1735 between 2 and 36 inclusive, or be the special value 0. If @var{base}
1736 is 0, @code{strtoll} will look for the prefixes @code{0} and @code{0x}
1737 to indicate bases 8 and 16, respectively, else default to base 10.
1738 When the base is 16 (either explicitly or implicitly), a prefix of
1739 @code{0x} is allowed. The handling of @var{endptr} is as that of
1740 @code{strtod} above. The @code{strtoull} function is the same, except
1741 that the converted value is unsigned.
1746 @deftypefn Extension int strtosigno (const char *@var{name})
1748 Given the symbolic name of a signal, map it to a signal number. If no
1749 translation is found, returns 0.
1754 @deftypefun int strverscmp (const char *@var{s1}, const char *@var{s2})
1755 The @code{strverscmp} function compares the string @var{s1} against
1756 @var{s2}, considering them as holding indices/version numbers. Return
1757 value follows the same conventions as found in the @code{strverscmp}
1758 function. In fact, if @var{s1} and @var{s2} contain no digits,
1759 @code{strverscmp} behaves like @code{strcmp}.
1761 Basically, we compare strings normally (character by character), until
1762 we find a digit in each string - then we enter a special comparison
1763 mode, where each sequence of digits is taken as a whole. If we reach the
1764 end of these two parts without noticing a difference, we return to the
1765 standard comparison mode. There are two types of numeric parts:
1766 "integral" and "fractional" (those begin with a '0'). The types
1767 of the numeric parts affect the way we sort them:
1771 integral/integral: we compare values as you would expect.
1774 fractional/integral: the fractional part is less than the integral one.
1778 fractional/fractional: the things become a bit more complex.
1779 If the common prefix contains only leading zeroes, the longest part is less
1780 than the other one; else the comparison behaves normally.
1784 strverscmp ("no digit", "no digit")
1785 @result{} 0 // @r{same behavior as strcmp.}
1786 strverscmp ("item#99", "item#100")
1787 @result{} <0 // @r{same prefix, but 99 < 100.}
1788 strverscmp ("alpha1", "alpha001")
1789 @result{} >0 // @r{fractional part inferior to integral one.}
1790 strverscmp ("part1_f012", "part1_f01")
1791 @result{} >0 // @r{two fractional parts.}
1792 strverscmp ("foo.009", "foo.0")
1793 @result{} <0 // @r{idem, but with leading zeroes only.}
1796 This function is especially useful when dealing with filename sorting,
1797 because filenames frequently hold indices/version numbers.
1800 @c timeval-utils.c:43
1801 @deftypefn Extension void timeval_add (struct timeval *@var{a}, @
1802 struct timeval *@var{b}, struct timeval *@var{result})
1804 Adds @var{a} to @var{b} and stores the result in @var{result}.
1808 @c timeval-utils.c:67
1809 @deftypefn Extension void timeval_sub (struct timeval *@var{a}, @
1810 struct timeval *@var{b}, struct timeval *@var{result})
1812 Subtracts @var{b} from @var{a} and stores the result in @var{result}.
1817 @deftypefn Supplemental char* tmpnam (char *@var{s})
1819 This function attempts to create a name for a temporary file, which
1820 will be a valid file name yet not exist when @code{tmpnam} checks for
1821 it. @var{s} must point to a buffer of at least @code{L_tmpnam} bytes,
1822 or be @code{NULL}. Use of this function creates a security risk, and it must
1823 not be used in new projects. Use @code{mkstemp} instead.
1827 @c unlink-if-ordinary.c:27
1828 @deftypefn Supplemental int unlink_if_ordinary (const char*)
1830 Unlinks the named file, unless it is special (e.g. a device file).
1831 Returns 0 when the file was unlinked, a negative value (and errno set) when
1832 there was an error deleting the file, and a positive value if no attempt
1833 was made to unlink the file because it is special.
1837 @c fopen_unlocked.c:31
1838 @deftypefn Extension void unlock_std_streams (void)
1840 If the OS supports it, ensure that the standard I/O streams,
1841 @code{stdin}, @code{stdout} and @code{stderr} are setup to avoid any
1842 multi-threaded locking. Otherwise do nothing.
1846 @c fopen_unlocked.c:23
1847 @deftypefn Extension void unlock_stream (FILE * @var{stream})
1849 If the OS supports it, ensure that the supplied stream is setup to
1850 avoid any multi-threaded locking. Otherwise leave the @code{FILE}
1851 pointer unchanged. If the @var{stream} is @code{NULL} do nothing.
1856 @deftypefn Extension int vasprintf (char **@var{resptr}, @
1857 const char *@var{format}, va_list @var{args})
1859 Like @code{vsprintf}, but instead of passing a pointer to a buffer,
1860 you pass a pointer to a pointer. This function will compute the size
1861 of the buffer needed, allocate memory with @code{malloc}, and store a
1862 pointer to the allocated memory in @code{*@var{resptr}}. The value
1863 returned is the same as @code{vsprintf} would return. If memory could
1864 not be allocated, minus one is returned and @code{NULL} is stored in
1865 @code{*@var{resptr}}.
1870 @deftypefn Supplemental int vfork (void)
1872 Emulates @code{vfork} by calling @code{fork} and returning its value.
1877 @deftypefn Supplemental int vprintf (const char *@var{format}, va_list @var{ap})
1878 @deftypefnx Supplemental int vfprintf (FILE *@var{stream}, @
1879 const char *@var{format}, va_list @var{ap})
1880 @deftypefnx Supplemental int vsprintf (char *@var{str}, @
1881 const char *@var{format}, va_list @var{ap})
1883 These functions are the same as @code{printf}, @code{fprintf}, and
1884 @code{sprintf}, respectively, except that they are called with a
1885 @code{va_list} instead of a variable number of arguments. Note that
1886 they do not call @code{va_end}; this is the application's
1887 responsibility. In @libib{} they are implemented in terms of the
1888 nonstandard but common function @code{_doprnt}.
1893 @deftypefn Supplemental int vsnprintf (char *@var{buf}, size_t @var{n}, @
1894 const char *@var{format}, va_list @var{ap})
1896 This function is similar to @code{vsprintf}, but it will write to
1897 @var{buf} at most @code{@var{n}-1} bytes of text, followed by a
1898 terminating null byte, for a total of @var{n} bytes. On error the
1899 return value is -1, otherwise it returns the number of characters that
1900 would have been printed had @var{n} been sufficiently large,
1901 regardless of the actual value of @var{n}. Note some pre-C99 system
1902 libraries do not implement this correctly so users cannot generally
1903 rely on the return value if the system version of this function is
1909 @deftypefn Supplemental int waitpid (int @var{pid}, int *@var{status}, int)
1911 This is a wrapper around the @code{wait} function. Any ``special''
1912 values of @var{pid} depend on your implementation of @code{wait}, as
1913 does the return value. The third argument is unused in @libib{}.
1918 @deftypefn Extension int writeargv (char * const *@var{argv}, FILE *@var{file})
1920 Write each member of ARGV, handling all necessary quoting, to the file
1921 named by FILE, separated by whitespace. Return 0 on success, non-zero
1922 if an error occurred while writing to FILE.
1927 @deftypefn Replacement char* xasprintf (const char *@var{format}, ...)
1929 Print to allocated string without fail. If @code{xasprintf} fails,
1930 this will print a message to @code{stderr} (using the name set by
1931 @code{xmalloc_set_program_name}, if any) and then call @code{xexit}.
1936 @deftypefun int xatexit (void (*@var{fn}) (void))
1938 Behaves as the standard @code{atexit} function, but with no limit on
1939 the number of registered functions. Returns 0 on success, or @minus{}1 on
1940 failure. If you use @code{xatexit} to register functions, you must use
1941 @code{xexit} to terminate your program.
1946 @deftypefn Replacement void* xcalloc (size_t @var{nelem}, size_t @var{elsize})
1948 Allocate memory without fail, and set it to zero. This routine functions
1949 like @code{calloc}, but will behave the same as @code{xmalloc} if memory
1955 @deftypefn Replacement void xexit (int @var{code})
1957 Terminates the program. If any functions have been registered with
1958 the @code{xatexit} replacement function, they will be called first.
1959 Termination is handled via the system's normal @code{exit} call.
1964 @deftypefn Replacement void* xmalloc (size_t)
1966 Allocate memory without fail. If @code{malloc} fails, this will print
1967 a message to @code{stderr} (using the name set by
1968 @code{xmalloc_set_program_name},
1969 if any) and then call @code{xexit}. Note that it is therefore safe for
1970 a program to contain @code{#define malloc xmalloc} in its source.
1975 @deftypefn Replacement void xmalloc_failed (size_t)
1977 This function is not meant to be called by client code, and is listed
1978 here for completeness only. If any of the allocation routines fail, this
1979 function will be called to print an error message and terminate execution.
1984 @deftypefn Replacement void xmalloc_set_program_name (const char *@var{name})
1986 You can use this to set the name of the program used by
1987 @code{xmalloc_failed} when printing a failure message.
1992 @deftypefn Replacement void* xmemdup (void *@var{input}, @
1993 size_t @var{copy_size}, size_t @var{alloc_size})
1995 Duplicates a region of memory without fail. First, @var{alloc_size} bytes
1996 are allocated, then @var{copy_size} bytes from @var{input} are copied into
1997 it, and the new memory is returned. If fewer bytes are copied than were
1998 allocated, the remaining memory is zeroed.
2003 @deftypefn Replacement void* xrealloc (void *@var{ptr}, size_t @var{size})
2004 Reallocate memory without fail. This routine functions like @code{realloc},
2005 but will behave the same as @code{xmalloc} if memory cannot be found.
2010 @deftypefn Replacement char* xstrdup (const char *@var{s})
2012 Duplicates a character string without fail, using @code{xmalloc} to
2018 @deftypefn Replacement char* xstrerror (int @var{errnum})
2020 Behaves exactly like the standard @code{strerror} function, but
2021 will never return a @code{NULL} pointer.
2026 @deftypefn Replacement char* xstrndup (const char *@var{s}, size_t @var{n})
2028 Returns a pointer to a copy of @var{s} with at most @var{n} characters
2029 without fail, using @code{xmalloc} to obtain memory. The result is
2030 always NUL terminated.
2035 @deftypefn Replacement char* xvasprintf (const char *@var{format}, va_list @var{args})
2037 Print to allocated string without fail. If @code{xvasprintf} fails,
2038 this will print a message to @code{stderr} (using the name set by
2039 @code{xmalloc_set_program_name}, if any) and then call @code{xexit}.