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. 5 6@c alloca.c:26 7@deftypefn Replacement void* alloca (size_t @var{size}) 8 9This function allocates memory which will be automatically reclaimed 10after the procedure exits. The @libib{} implementation does not free 11the memory immediately but will do so eventually during subsequent 12calls to this function. Memory is allocated using @code{xmalloc} under 13normal circumstances. 14 15The header file @file{alloca-conf.h} can be used in conjunction with the 16GNU Autoconf test @code{AC_FUNC_ALLOCA} to test for and properly make 17available this function. The @code{AC_FUNC_ALLOCA} test requires that 18client code use a block of preprocessor code to be safe (see the Autoconf 19manual for more); this header incorporates that logic and more, including 20the possibility of a GCC built-in function. 21 22@end deftypefn 23 24@c asprintf.c:32 25@deftypefn Extension int asprintf (char **@var{resptr}, const char *@var{format}, ...) 26 27Like @code{sprintf}, but instead of passing a pointer to a buffer, you 28pass a pointer to a pointer. This function will compute the size of 29the buffer needed, allocate memory with @code{malloc}, and store a 30pointer to the allocated memory in @code{*@var{resptr}}. The value 31returned is the same as @code{sprintf} would return. If memory could 32not be allocated, minus one is returned and @code{NULL} is stored in 33@code{*@var{resptr}}. 34 35@end deftypefn 36 37@c atexit.c:6 38@deftypefn Supplemental int atexit (void (*@var{f})()) 39 40Causes function @var{f} to be called at exit. Returns 0. 41 42@end deftypefn 43 44@c basename.c:6 45@deftypefn Supplemental char* basename (const char *@var{name}) 46 47Returns a pointer to the last component of pathname @var{name}. 48Behavior is undefined if the pathname ends in a directory separator. 49 50@end deftypefn 51 52@c bcmp.c:6 53@deftypefn Supplemental int bcmp (char *@var{x}, char *@var{y}, int @var{count}) 54 55Compares the first @var{count} bytes of two areas of memory. Returns 56zero if they are the same, nonzero otherwise. Returns zero if 57@var{count} is zero. A nonzero result only indicates a difference, 58it does not indicate any sorting order (say, by having a positive 59result mean @var{x} sorts before @var{y}). 60 61@end deftypefn 62 63@c bcopy.c:3 64@deftypefn Supplemental void bcopy (char *@var{in}, char *@var{out}, int @var{length}) 65 66Copies @var{length} bytes from memory region @var{in} to region 67@var{out}. The use of @code{bcopy} is deprecated in new programs. 68 69@end deftypefn 70 71@c bsearch.c:33 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 *)) 75 76Performs 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}. 78The size of each member is specified by @var{size}. The array contents 79should be sorted in ascending order according to the @var{compar} 80comparison function. This routine should take two arguments pointing to 81the @var{key} and to an array member, in that order, and should return an 82integer less than, equal to, or greater than zero if the @var{key} object 83is respectively less than, matching, or greater than the array member. 84 85@end deftypefn 86 87@c bsearch_r.c:33 88@deftypefn Supplemental void* bsearch_r (const void *@var{key}, @ 89 const void *@var{base}, size_t @var{nmemb}, size_t @var{size}, @ 90 int (*@var{compar})(const void *, const void *, void *), void *@var{arg}) 91 92Performs a search over an array of @var{nmemb} elements pointed to by 93@var{base} for a member that matches the object pointed to by @var{key}. 94The size of each member is specified by @var{size}. The array contents 95should be sorted in ascending order according to the @var{compar} 96comparison function. This routine should take three arguments: the first 97two point to the @var{key} and to an array member, and the last is passed 98down unchanged from @code{bsearch_r}'s last argument. It should return an 99integer less than, equal to, or greater than zero if the @var{key} object 100is respectively less than, matching, or greater than the array member. 101 102@end deftypefn 103 104@c argv.c:138 105@deftypefn Extension char** buildargv (char *@var{sp}) 106 107Given a pointer to a string, parse the string extracting fields 108separated by whitespace and optionally enclosed within either single 109or double quotes (which are stripped off), and build a vector of 110pointers to copies of the string for each field. The input string 111remains unchanged. The last element of the vector is followed by a 112@code{NULL} element. 113 114All of the memory for the pointer array and copies of the string 115is obtained from @code{xmalloc}. All of the memory can be returned to the 116system with the single function call @code{freeargv}, which takes the 117returned result of @code{buildargv}, as it's argument. 118 119Returns a pointer to the argument vector if successful. Returns 120@code{NULL} if @var{sp} is @code{NULL} or if there is insufficient 121memory to complete building the argument vector. 122 123If the input is a null string (as opposed to a @code{NULL} pointer), 124then buildarg returns an argument vector that has one arg, a null 125string. 126 127@end deftypefn 128 129@c bzero.c:6 130@deftypefn Supplemental void bzero (char *@var{mem}, int @var{count}) 131 132Zeros @var{count} bytes starting at @var{mem}. Use of this function 133is deprecated in favor of @code{memset}. 134 135@end deftypefn 136 137@c calloc.c:6 138@deftypefn Supplemental void* calloc (size_t @var{nelem}, size_t @var{elsize}) 139 140Uses @code{malloc} to allocate storage for @var{nelem} objects of 141@var{elsize} bytes each, then zeros the memory. 142 143@end deftypefn 144 145@c filename_cmp.c:201 146@deftypefn Extension int canonical_filename_eq (const char *@var{a}, const char *@var{b}) 147 148Return non-zero if file names @var{a} and @var{b} are equivalent. 149This function compares the canonical versions of the filenames as returned by 150@code{lrealpath()}, so that so that different file names pointing to the same 151underlying file are treated as being identical. 152 153@end deftypefn 154 155@c choose-temp.c:45 156@deftypefn Extension char* choose_temp_base (void) 157 158Return a prefix for temporary file names or @code{NULL} if unable to 159find one. The current directory is chosen if all else fails so the 160program is exited if a temporary directory can't be found (@code{mktemp} 161fails). The buffer for the result is obtained with @code{xmalloc}. 162 163This function is provided for backwards compatibility only. Its use is 164not recommended. 165 166@end deftypefn 167 168@c make-temp-file.c:95 169@deftypefn Replacement const char* choose_tmpdir () 170 171Returns a pointer to a directory path suitable for creating temporary 172files in. 173 174@end deftypefn 175 176@c clock.c:27 177@deftypefn Supplemental long clock (void) 178 179Returns an approximation of the CPU time used by the process as a 180@code{clock_t}; divide this number by @samp{CLOCKS_PER_SEC} to get the 181number of seconds used. 182 183@end deftypefn 184 185@c concat.c:24 186@deftypefn Extension char* concat (const char *@var{s1}, const char *@var{s2}, @ 187 @dots{}, @code{NULL}) 188 189Concatenate zero or more of strings and return the result in freshly 190@code{xmalloc}ed memory. The argument list is terminated by the first 191@code{NULL} pointer encountered. Pointers to empty strings are ignored. 192 193@end deftypefn 194 195@c argv.c:495 196@deftypefn Extension int countargv (char * const *@var{argv}) 197 198Return the number of elements in @var{argv}. 199Returns zero if @var{argv} is NULL. 200 201@end deftypefn 202 203@c crc32.c:140 204@deftypefn Extension {unsigned int} crc32 (const unsigned char *@var{buf}, @ 205 int @var{len}, unsigned int @var{init}) 206 207Compute the 32-bit CRC of @var{buf} which has length @var{len}. The 208starting value is @var{init}; this may be used to compute the CRC of 209data split across multiple buffers by passing the return value of each 210call as the @var{init} parameter of the next. 211 212This is used by the @command{gdb} remote protocol for the @samp{qCRC} 213command. In order to get the same results as gdb for a block of data, 214you must pass the first CRC parameter as @code{0xffffffff}. 215 216This CRC can be specified as: 217 218 Width : 32 219 Poly : 0x04c11db7 220 Init : parameter, typically 0xffffffff 221 RefIn : false 222 RefOut : false 223 XorOut : 0 224 225This differs from the "standard" CRC-32 algorithm in that the values 226are not reflected, and there is no final XOR value. These differences 227make it easy to compose the values of multiple blocks. 228 229@end deftypefn 230 231@c argv.c:59 232@deftypefn Extension char** dupargv (char * const *@var{vector}) 233 234Duplicate an argument vector. Simply scans through @var{vector}, 235duplicating each argument until the terminating @code{NULL} is found. 236Returns a pointer to the argument vector if successful. Returns 237@code{NULL} if there is insufficient memory to complete building the 238argument vector. 239 240@end deftypefn 241 242@c strerror.c:572 243@deftypefn Extension int errno_max (void) 244 245Returns the maximum @code{errno} value for which a corresponding 246symbolic name or message is available. Note that in the case where we 247use the @code{sys_errlist} supplied by the system, it is possible for 248there to be more symbolic names than messages, or vice versa. In 249fact, the manual page for @code{perror(3C)} explicitly warns that one 250should check the size of the table (@code{sys_nerr}) before indexing 251it, since new error codes may be added to the system before they are 252added to the table. Thus @code{sys_nerr} might be smaller than value 253implied by the largest @code{errno} value defined in @code{<errno.h>}. 254 255We return the maximum value that can be used to obtain a meaningful 256symbolic name or message. 257 258@end deftypefn 259 260@c argv.c:352 261@deftypefn Extension void expandargv (int *@var{argcp}, char ***@var{argvp}) 262 263The @var{argcp} and @code{argvp} arguments are pointers to the usual 264@code{argc} and @code{argv} arguments to @code{main}. This function 265looks for arguments that begin with the character @samp{@@}. Any such 266arguments are interpreted as ``response files''. The contents of the 267response file are interpreted as additional command line options. In 268particular, the file is separated into whitespace-separated strings; 269each such string is taken as a command-line option. The new options 270are inserted in place of the option naming the response file, and 271@code{*argcp} and @code{*argvp} will be updated. If the value of 272@code{*argvp} is modified by this function, then the new value has 273been dynamically allocated and can be deallocated by the caller with 274@code{freeargv}. However, most callers will simply call 275@code{expandargv} near the beginning of @code{main} and allow the 276operating system to free the memory when the program exits. 277 278@end deftypefn 279 280@c fdmatch.c:23 281@deftypefn Extension int fdmatch (int @var{fd1}, int @var{fd2}) 282 283Check to see if two open file descriptors refer to the same file. 284This is useful, for example, when we have an open file descriptor for 285an unnamed file, and the name of a file that we believe to correspond 286to that fd. This can happen when we are exec'd with an already open 287file (@code{stdout} for example) or from the SVR4 @file{/proc} calls 288that return open file descriptors for mapped address spaces. All we 289have to do is open the file by name and check the two file descriptors 290for a match, which is done by comparing major and minor device numbers 291and inode numbers. 292 293@end deftypefn 294 295@c fopen_unlocked.c:49 296@deftypefn Extension {FILE *} fdopen_unlocked (int @var{fildes}, @ 297 const char * @var{mode}) 298 299Opens and returns a @code{FILE} pointer via @code{fdopen}. If the 300operating system supports it, ensure that the stream is setup to avoid 301any multi-threaded locking. Otherwise return the @code{FILE} pointer 302unchanged. 303 304@end deftypefn 305 306@c ffs.c:3 307@deftypefn Supplemental int ffs (int @var{valu}) 308 309Find the first (least significant) bit set in @var{valu}. Bits are 310numbered from right to left, starting with bit 1 (corresponding to the 311value 1). If @var{valu} is zero, zero is returned. 312 313@end deftypefn 314 315@c filename_cmp.c:37 316@deftypefn Extension int filename_cmp (const char *@var{s1}, const char *@var{s2}) 317 318Return zero if the two file names @var{s1} and @var{s2} are equivalent. 319If not equivalent, the returned value is similar to what @code{strcmp} 320would return. In other words, it returns a negative value if @var{s1} 321is less than @var{s2}, or a positive value if @var{s2} is greater than 322@var{s2}. 323 324This function does not normalize file names. As a result, this function 325will treat filenames that are spelled differently as different even in 326the case when the two filenames point to the same underlying file. 327However, it does handle the fact that on DOS-like file systems, forward 328and backward slashes are equal. 329 330@end deftypefn 331 332@c filename_cmp.c:183 333@deftypefn Extension int filename_eq (const void *@var{s1}, const void *@var{s2}) 334 335Return non-zero if file names @var{s1} and @var{s2} are equivalent. 336This function is for use with hashtab.c hash tables. 337 338@end deftypefn 339 340@c filename_cmp.c:152 341@deftypefn Extension hashval_t filename_hash (const void *@var{s}) 342 343Return the hash value for file name @var{s} that will be compared 344using filename_cmp. 345This function is for use with hashtab.c hash tables. 346 347@end deftypefn 348 349@c filename_cmp.c:94 350@deftypefn Extension int filename_ncmp (const char *@var{s1}, const char *@var{s2}, size_t @var{n}) 351 352Return zero if the two file names @var{s1} and @var{s2} are equivalent 353in range @var{n}. 354If not equivalent, the returned value is similar to what @code{strncmp} 355would return. In other words, it returns a negative value if @var{s1} 356is less than @var{s2}, or a positive value if @var{s2} is greater than 357@var{s2}. 358 359This function does not normalize file names. As a result, this function 360will treat filenames that are spelled differently as different even in 361the case when the two filenames point to the same underlying file. 362However, it does handle the fact that on DOS-like file systems, forward 363and backward slashes are equal. 364 365@end deftypefn 366 367@c fnmatch.txh:1 368@deftypefn Replacement int fnmatch (const char *@var{pattern}, @ 369 const char *@var{string}, int @var{flags}) 370 371Matches @var{string} against @var{pattern}, returning zero if it 372matches, @code{FNM_NOMATCH} if not. @var{pattern} may contain the 373wildcards @code{?} to match any one character, @code{*} to match any 374zero or more characters, or a set of alternate characters in square 375brackets, like @samp{[a-gt8]}, which match one character (@code{a} 376through @code{g}, or @code{t}, or @code{8}, in this example) if that one 377character is in the set. A set may be inverted (i.e., match anything 378except what's in the set) by giving @code{^} or @code{!} as the first 379character in the set. To include those characters in the set, list them 380as anything other than the first character of the set. To include a 381dash in the set, list it last in the set. A backslash character makes 382the following character not special, so for example you could match 383against a literal asterisk with @samp{\*}. To match a literal 384backslash, use @samp{\\}. 385 386@code{flags} controls various aspects of the matching process, and is a 387boolean OR of zero or more of the following values (defined in 388@code{<fnmatch.h>}): 389 390@table @code 391 392@item FNM_PATHNAME 393@itemx FNM_FILE_NAME 394@var{string} is assumed to be a path name. No wildcard will ever match 395@code{/}. 396 397@item FNM_NOESCAPE 398Do not interpret backslashes as quoting the following special character. 399 400@item FNM_PERIOD 401A leading period (at the beginning of @var{string}, or if 402@code{FNM_PATHNAME} after a slash) is not matched by @code{*} or 403@code{?} but must be matched explicitly. 404 405@item FNM_LEADING_DIR 406Means that @var{string} also matches @var{pattern} if some initial part 407of @var{string} matches, and is followed by @code{/} and zero or more 408characters. For example, @samp{foo*} would match either @samp{foobar} 409or @samp{foobar/grill}. 410 411@item FNM_CASEFOLD 412Ignores case when performing the comparison. 413 414@end table 415 416@end deftypefn 417 418@c fopen_unlocked.c:39 419@deftypefn Extension {FILE *} fopen_unlocked (const char *@var{path}, @ 420 const char * @var{mode}) 421 422Opens and returns a @code{FILE} pointer via @code{fopen}. If the 423operating system supports it, ensure that the stream is setup to avoid 424any multi-threaded locking. Otherwise return the @code{FILE} pointer 425unchanged. 426 427@end deftypefn 428 429@c argv.c:93 430@deftypefn Extension void freeargv (char **@var{vector}) 431 432Free an argument vector that was built using @code{buildargv}. Simply 433scans through @var{vector}, freeing the memory for each argument until 434the terminating @code{NULL} is found, and then frees @var{vector} 435itself. 436 437@end deftypefn 438 439@c fopen_unlocked.c:59 440@deftypefn Extension {FILE *} freopen_unlocked (const char * @var{path}, @ 441 const char * @var{mode}, FILE * @var{stream}) 442 443Opens and returns a @code{FILE} pointer via @code{freopen}. If the 444operating system supports it, ensure that the stream is setup to avoid 445any multi-threaded locking. Otherwise return the @code{FILE} pointer 446unchanged. 447 448@end deftypefn 449 450@c getruntime.c:86 451@deftypefn Replacement long get_run_time (void) 452 453Returns the time used so far, in microseconds. If possible, this is 454the time used by this process, else it is the elapsed time since the 455process started. 456 457@end deftypefn 458 459@c getcwd.c:6 460@deftypefn Supplemental char* getcwd (char *@var{pathname}, int @var{len}) 461 462Copy the absolute pathname for the current working directory into 463@var{pathname}, which is assumed to point to a buffer of at least 464@var{len} bytes, and return a pointer to the buffer. If the current 465directory's path doesn't fit in @var{len} characters, the result is 466@code{NULL} and @code{errno} is set. If @var{pathname} is a null pointer, 467@code{getcwd} will obtain @var{len} bytes of space using 468@code{malloc}. 469 470@end deftypefn 471 472@c getpagesize.c:5 473@deftypefn Supplemental int getpagesize (void) 474 475Returns the number of bytes in a page of memory. This is the 476granularity of many of the system memory management routines. No 477guarantee is made as to whether or not it is the same as the basic 478memory management hardware page size. 479 480@end deftypefn 481 482@c getpwd.c:5 483@deftypefn Supplemental char* getpwd (void) 484 485Returns the current working directory. This implementation caches the 486result on the assumption that the process will not call @code{chdir} 487between calls to @code{getpwd}. 488 489@end deftypefn 490 491@c gettimeofday.c:12 492@deftypefn Supplemental int gettimeofday (struct timeval *@var{tp}, void *@var{tz}) 493 494Writes the current time to @var{tp}. This implementation requires 495that @var{tz} be NULL. Returns 0 on success, -1 on failure. 496 497@end deftypefn 498 499@c hex.c:33 500@deftypefn Extension void hex_init (void) 501 502Initializes the array mapping the current character set to 503corresponding hex values. This function must be called before any 504call to @code{hex_p} or @code{hex_value}. If you fail to call it, a 505default ASCII-based table will normally be used on ASCII systems. 506 507@end deftypefn 508 509@c hex.c:42 510@deftypefn Extension int hex_p (int @var{c}) 511 512Evaluates to non-zero if the given character is a valid hex character, 513or zero if it is not. Note that the value you pass will be cast to 514@code{unsigned char} within the macro. 515 516@end deftypefn 517 518@c hex.c:50 519@deftypefn Extension {unsigned int} hex_value (int @var{c}) 520 521Returns the numeric equivalent of the given character when interpreted 522as a hexadecimal digit. The result is undefined if you pass an 523invalid hex digit. Note that the value you pass will be cast to 524@code{unsigned char} within the macro. 525 526The @code{hex_value} macro returns @code{unsigned int}, rather than 527signed @code{int}, to make it easier to use in parsing addresses from 528hex dump files: a signed @code{int} would be sign-extended when 529converted to a wider unsigned type --- like @code{bfd_vma}, on some 530systems. 531 532@end deftypefn 533 534@c safe-ctype.c:24 535@defvr Extension HOST_CHARSET 536This macro indicates the basic character set and encoding used by the 537host: more precisely, the encoding used for character constants in 538preprocessor @samp{#if} statements (the C "execution character set"). 539It is defined by @file{safe-ctype.h}, and will be an integer constant 540with one of the following values: 541 542@ftable @code 543@item HOST_CHARSET_UNKNOWN 544The host character set is unknown - that is, not one of the next two 545possibilities. 546 547@item HOST_CHARSET_ASCII 548The host character set is ASCII. 549 550@item HOST_CHARSET_EBCDIC 551The host character set is some variant of EBCDIC. (Only one of the 552nineteen EBCDIC varying characters is tested; exercise caution.) 553@end ftable 554@end defvr 555 556@c hashtab.c:327 557@deftypefn Supplemental htab_t htab_create_typed_alloc (size_t @var{size}, @ 558htab_hash @var{hash_f}, htab_eq @var{eq_f}, htab_del @var{del_f}, @ 559htab_alloc @var{alloc_tab_f}, htab_alloc @var{alloc_f}, @ 560htab_free @var{free_f}) 561 562This function creates a hash table that uses two different allocators 563@var{alloc_tab_f} and @var{alloc_f} to use for allocating the table itself 564and its entries respectively. This is useful when variables of different 565types need to be allocated with different allocators. 566 567The created hash table is slightly larger than @var{size} and it is 568initially empty (all the hash table entries are @code{HTAB_EMPTY_ENTRY}). 569The function returns the created hash table, or @code{NULL} if memory 570allocation fails. 571 572@end deftypefn 573 574@c index.c:5 575@deftypefn Supplemental char* index (char *@var{s}, int @var{c}) 576 577Returns a pointer to the first occurrence of the character @var{c} in 578the string @var{s}, or @code{NULL} if not found. The use of @code{index} is 579deprecated in new programs in favor of @code{strchr}. 580 581@end deftypefn 582 583@c insque.c:6 584@deftypefn Supplemental void insque (struct qelem *@var{elem}, @ 585 struct qelem *@var{pred}) 586@deftypefnx Supplemental void remque (struct qelem *@var{elem}) 587 588Routines to manipulate queues built from doubly linked lists. The 589@code{insque} routine inserts @var{elem} in the queue immediately 590after @var{pred}. The @code{remque} routine removes @var{elem} from 591its containing queue. These routines expect to be passed pointers to 592structures which have as their first members a forward pointer and a 593back pointer, like this prototype (although no prototype is provided): 594 595@example 596struct qelem @{ 597 struct qelem *q_forw; 598 struct qelem *q_back; 599 char q_data[]; 600@}; 601@end example 602 603@end deftypefn 604 605@c safe-ctype.c:45 606@deffn Extension ISALPHA (@var{c}) 607@deffnx Extension ISALNUM (@var{c}) 608@deffnx Extension ISBLANK (@var{c}) 609@deffnx Extension ISCNTRL (@var{c}) 610@deffnx Extension ISDIGIT (@var{c}) 611@deffnx Extension ISGRAPH (@var{c}) 612@deffnx Extension ISLOWER (@var{c}) 613@deffnx Extension ISPRINT (@var{c}) 614@deffnx Extension ISPUNCT (@var{c}) 615@deffnx Extension ISSPACE (@var{c}) 616@deffnx Extension ISUPPER (@var{c}) 617@deffnx Extension ISXDIGIT (@var{c}) 618 619These twelve macros are defined by @file{safe-ctype.h}. Each has the 620same meaning as the corresponding macro (with name in lowercase) 621defined by the standard header @file{ctype.h}. For example, 622@code{ISALPHA} returns true for alphabetic characters and false for 623others. However, there are two differences between these macros and 624those provided by @file{ctype.h}: 625 626@itemize @bullet 627@item These macros are guaranteed to have well-defined behavior for all 628values representable by @code{signed char} and @code{unsigned char}, and 629for @code{EOF}. 630 631@item These macros ignore the current locale; they are true for these 632fixed sets of characters: 633@multitable {@code{XDIGIT}} {yada yada yada yada yada yada yada yada} 634@item @code{ALPHA} @tab @kbd{A-Za-z} 635@item @code{ALNUM} @tab @kbd{A-Za-z0-9} 636@item @code{BLANK} @tab @kbd{space tab} 637@item @code{CNTRL} @tab @code{!PRINT} 638@item @code{DIGIT} @tab @kbd{0-9} 639@item @code{GRAPH} @tab @code{ALNUM || PUNCT} 640@item @code{LOWER} @tab @kbd{a-z} 641@item @code{PRINT} @tab @code{GRAPH ||} @kbd{space} 642@item @code{PUNCT} @tab @kbd{`~!@@#$%^&*()_-=+[@{]@}\|;:'",<.>/?} 643@item @code{SPACE} @tab @kbd{space tab \n \r \f \v} 644@item @code{UPPER} @tab @kbd{A-Z} 645@item @code{XDIGIT} @tab @kbd{0-9A-Fa-f} 646@end multitable 647 648Note that, if the host character set is ASCII or a superset thereof, 649all these macros will return false for all values of @code{char} outside 650the range of 7-bit ASCII. In particular, both ISPRINT and ISCNTRL return 651false for characters with numeric values from 128 to 255. 652@end itemize 653@end deffn 654 655@c safe-ctype.c:94 656@deffn Extension ISIDNUM (@var{c}) 657@deffnx Extension ISIDST (@var{c}) 658@deffnx Extension IS_VSPACE (@var{c}) 659@deffnx Extension IS_NVSPACE (@var{c}) 660@deffnx Extension IS_SPACE_OR_NUL (@var{c}) 661@deffnx Extension IS_ISOBASIC (@var{c}) 662These six macros are defined by @file{safe-ctype.h} and provide 663additional character classes which are useful when doing lexical 664analysis of C or similar languages. They are true for the following 665sets of characters: 666 667@multitable {@code{SPACE_OR_NUL}} {yada yada yada yada yada yada yada yada} 668@item @code{IDNUM} @tab @kbd{A-Za-z0-9_} 669@item @code{IDST} @tab @kbd{A-Za-z_} 670@item @code{VSPACE} @tab @kbd{\r \n} 671@item @code{NVSPACE} @tab @kbd{space tab \f \v \0} 672@item @code{SPACE_OR_NUL} @tab @code{VSPACE || NVSPACE} 673@item @code{ISOBASIC} @tab @code{VSPACE || NVSPACE || PRINT} 674@end multitable 675@end deffn 676 677@c lbasename.c:23 678@deftypefn Replacement {const char*} lbasename (const char *@var{name}) 679 680Given a pointer to a string containing a typical pathname 681(@samp{/usr/src/cmd/ls/ls.c} for example), returns a pointer to the 682last component of the pathname (@samp{ls.c} in this case). The 683returned pointer is guaranteed to lie within the original 684string. This latter fact is not true of many vendor C 685libraries, which return special strings or modify the passed 686strings for particular input. 687 688In particular, the empty string returns the same empty string, 689and a path ending in @code{/} returns the empty string after it. 690 691@end deftypefn 692 693@c lrealpath.c:25 694@deftypefn Replacement {const char*} lrealpath (const char *@var{name}) 695 696Given a pointer to a string containing a pathname, returns a canonical 697version of the filename. Symlinks will be resolved, and ``.'' and ``..'' 698components will be simplified. The returned value will be allocated using 699@code{malloc}, or @code{NULL} will be returned on a memory allocation error. 700 701@end deftypefn 702 703@c make-relative-prefix.c:23 704@deftypefn Extension {const char*} make_relative_prefix (const char *@var{progname}, @ 705 const char *@var{bin_prefix}, const char *@var{prefix}) 706 707Given three paths @var{progname}, @var{bin_prefix}, @var{prefix}, 708return the path that is in the same position relative to 709@var{progname}'s directory as @var{prefix} is relative to 710@var{bin_prefix}. That is, a string starting with the directory 711portion of @var{progname}, followed by a relative pathname of the 712difference between @var{bin_prefix} and @var{prefix}. 713 714If @var{progname} does not contain any directory separators, 715@code{make_relative_prefix} will search @env{PATH} to find a program 716named @var{progname}. Also, if @var{progname} is a symbolic link, 717the symbolic link will be resolved. 718 719For example, if @var{bin_prefix} is @code{/alpha/beta/gamma/gcc/delta}, 720@var{prefix} is @code{/alpha/beta/gamma/omega/}, and @var{progname} is 721@code{/red/green/blue/gcc}, then this function will return 722@code{/red/green/blue/../../omega/}. 723 724The return value is normally allocated via @code{malloc}. If no 725relative prefix can be found, return @code{NULL}. 726 727@end deftypefn 728 729@c make-temp-file.c:173 730@deftypefn Replacement char* make_temp_file (const char *@var{suffix}) 731 732Return a temporary file name (as a string) or @code{NULL} if unable to 733create one. @var{suffix} is a suffix to append to the file name. The 734string is @code{malloc}ed, and the temporary file has been created. 735 736@end deftypefn 737 738@c memchr.c:3 739@deftypefn Supplemental void* memchr (const void *@var{s}, int @var{c}, @ 740 size_t @var{n}) 741 742This function searches memory starting at @code{*@var{s}} for the 743character @var{c}. The search only ends with the first occurrence of 744@var{c}, or after @var{length} characters; in particular, a null 745character does not terminate the search. If the character @var{c} is 746found within @var{length} characters of @code{*@var{s}}, a pointer 747to the character is returned. If @var{c} is not found, then @code{NULL} is 748returned. 749 750@end deftypefn 751 752@c memcmp.c:6 753@deftypefn Supplemental int memcmp (const void *@var{x}, const void *@var{y}, @ 754 size_t @var{count}) 755 756Compares the first @var{count} bytes of two areas of memory. Returns 757zero if they are the same, a value less than zero if @var{x} is 758lexically less than @var{y}, or a value greater than zero if @var{x} 759is lexically greater than @var{y}. Note that lexical order is determined 760as if comparing unsigned char arrays. 761 762@end deftypefn 763 764@c memcpy.c:6 765@deftypefn Supplemental void* memcpy (void *@var{out}, const void *@var{in}, @ 766 size_t @var{length}) 767 768Copies @var{length} bytes from memory region @var{in} to region 769@var{out}. Returns a pointer to @var{out}. 770 771@end deftypefn 772 773@c memmem.c:20 774@deftypefn Supplemental void* memmem (const void *@var{haystack}, @ 775 size_t @var{haystack_len} const void *@var{needle}, size_t @var{needle_len}) 776 777Returns a pointer to the first occurrence of @var{needle} (length 778@var{needle_len}) in @var{haystack} (length @var{haystack_len}). 779Returns @code{NULL} if not found. 780 781@end deftypefn 782 783@c memmove.c:6 784@deftypefn Supplemental void* memmove (void *@var{from}, const void *@var{to}, @ 785 size_t @var{count}) 786 787Copies @var{count} bytes from memory area @var{from} to memory area 788@var{to}, returning a pointer to @var{to}. 789 790@end deftypefn 791 792@c mempcpy.c:23 793@deftypefn Supplemental void* mempcpy (void *@var{out}, const void *@var{in}, @ 794 size_t @var{length}) 795 796Copies @var{length} bytes from memory region @var{in} to region 797@var{out}. Returns a pointer to @var{out} + @var{length}. 798 799@end deftypefn 800 801@c memset.c:6 802@deftypefn Supplemental void* memset (void *@var{s}, int @var{c}, @ 803 size_t @var{count}) 804 805Sets the first @var{count} bytes of @var{s} to the constant byte 806@var{c}, returning a pointer to @var{s}. 807 808@end deftypefn 809 810@c mkstemps.c:60 811@deftypefn Replacement int mkstemps (char *@var{pattern}, int @var{suffix_len}) 812 813Generate a unique temporary file name from @var{pattern}. 814@var{pattern} has the form: 815 816@example 817 @var{path}/ccXXXXXX@var{suffix} 818@end example 819 820@var{suffix_len} tells us how long @var{suffix} is (it can be zero 821length). The last six characters of @var{pattern} before @var{suffix} 822must be @samp{XXXXXX}; they are replaced with a string that makes the 823filename unique. Returns a file descriptor open on the file for 824reading and writing. 825 826@end deftypefn 827 828@c pexecute.txh:278 829@deftypefn Extension void pex_free (struct pex_obj @var{obj}) 830 831Clean up and free all data associated with @var{obj}. If you have not 832yet called @code{pex_get_times} or @code{pex_get_status}, this will 833try to kill the subprocesses. 834 835@end deftypefn 836 837@c pexecute.txh:251 838@deftypefn Extension int pex_get_status (struct pex_obj *@var{obj}, @ 839 int @var{count}, int *@var{vector}) 840 841Returns the exit status of all programs run using @var{obj}. 842@var{count} is the number of results expected. The results will be 843placed into @var{vector}. The results are in the order of the calls 844to @code{pex_run}. Returns 0 on error, 1 on success. 845 846@end deftypefn 847 848@c pexecute.txh:261 849@deftypefn Extension int pex_get_times (struct pex_obj *@var{obj}, @ 850 int @var{count}, struct pex_time *@var{vector}) 851 852Returns the process execution times of all programs run using 853@var{obj}. @var{count} is the number of results expected. The 854results will be placed into @var{vector}. The results are in the 855order of the calls to @code{pex_run}. Returns 0 on error, 1 on 856success. 857 858@code{struct pex_time} has the following fields of the type 859@code{unsigned long}: @code{user_seconds}, 860@code{user_microseconds}, @code{system_seconds}, 861@code{system_microseconds}. On systems which do not support reporting 862process times, all the fields will be set to @code{0}. 863 864@end deftypefn 865 866@c pexecute.txh:2 867@deftypefn Extension {struct pex_obj *} pex_init (int @var{flags}, @ 868 const char *@var{pname}, const char *@var{tempbase}) 869 870Prepare to execute one or more programs, with standard output of each 871program fed to standard input of the next. This is a system 872independent interface to execute a pipeline. 873 874@var{flags} is a bitwise combination of the following: 875 876@table @code 877 878@vindex PEX_RECORD_TIMES 879@item PEX_RECORD_TIMES 880Record subprocess times if possible. 881 882@vindex PEX_USE_PIPES 883@item PEX_USE_PIPES 884Use pipes for communication between processes, if possible. 885 886@vindex PEX_SAVE_TEMPS 887@item PEX_SAVE_TEMPS 888Don't delete temporary files used for communication between 889processes. 890 891@end table 892 893@var{pname} is the name of program to be executed, used in error 894messages. @var{tempbase} is a base name to use for any required 895temporary files; it may be @code{NULL} to use a randomly chosen name. 896 897@end deftypefn 898 899@c pexecute.txh:161 900@deftypefn Extension {FILE *} pex_input_file (struct pex_obj *@var{obj}, @ 901 int @var{flags}, const char *@var{in_name}) 902 903Return a stream for a temporary file to pass to the first program in 904the pipeline as input. 905 906The name of the input file is chosen according to the same rules 907@code{pex_run} uses to choose output file names, based on 908@var{in_name}, @var{obj} and the @code{PEX_SUFFIX} bit in @var{flags}. 909 910Don't call @code{fclose} on the returned stream; the first call to 911@code{pex_run} closes it automatically. 912 913If @var{flags} includes @code{PEX_BINARY_OUTPUT}, open the stream in 914binary mode; otherwise, open it in the default mode. Including 915@code{PEX_BINARY_OUTPUT} in @var{flags} has no effect on Unix. 916@end deftypefn 917 918@c pexecute.txh:179 919@deftypefn Extension {FILE *} pex_input_pipe (struct pex_obj *@var{obj}, @ 920 int @var{binary}) 921 922Return a stream @var{fp} for a pipe connected to the standard input of 923the first program in the pipeline; @var{fp} is opened for writing. 924You must have passed @code{PEX_USE_PIPES} to the @code{pex_init} call 925that returned @var{obj}. 926 927You must close @var{fp} using @code{fclose} yourself when you have 928finished writing data to the pipeline. 929 930The file descriptor underlying @var{fp} is marked not to be inherited 931by child processes. 932 933On systems that do not support pipes, this function returns 934@code{NULL}, and sets @code{errno} to @code{EINVAL}. If you would 935like to write code that is portable to all systems the @code{pex} 936functions support, consider using @code{pex_input_file} instead. 937 938There are two opportunities for deadlock using 939@code{pex_input_pipe}: 940 941@itemize @bullet 942@item 943Most systems' pipes can buffer only a fixed amount of data; a process 944that writes to a full pipe blocks. Thus, if you write to @file{fp} 945before starting the first process, you run the risk of blocking when 946there is no child process yet to read the data and allow you to 947continue. @code{pex_input_pipe} makes no promises about the 948size of the pipe's buffer, so if you need to write any data at all 949before starting the first process in the pipeline, consider using 950@code{pex_input_file} instead. 951 952@item 953Using @code{pex_input_pipe} and @code{pex_read_output} together 954may also cause deadlock. If the output pipe fills up, so that each 955program in the pipeline is waiting for the next to read more data, and 956you fill the input pipe by writing more data to @var{fp}, then there 957is no way to make progress: the only process that could read data from 958the output pipe is you, but you are blocked on the input pipe. 959 960@end itemize 961 962@end deftypefn 963 964@c pexecute.txh:286 965@deftypefn Extension {const char *} pex_one (int @var{flags}, @ 966 const char *@var{executable}, char * const *@var{argv}, @ 967 const char *@var{pname}, const char *@var{outname}, const char *@var{errname}, @ 968 int *@var{status}, int *@var{err}) 969 970An interface to permit the easy execution of a 971single program. The return value and most of the parameters are as 972for a call to @code{pex_run}. @var{flags} is restricted to a 973combination of @code{PEX_SEARCH}, @code{PEX_STDERR_TO_STDOUT}, and 974@code{PEX_BINARY_OUTPUT}. @var{outname} is interpreted as if 975@code{PEX_LAST} were set. On a successful return, @code{*@var{status}} will 976be set to the exit status of the program. 977 978@end deftypefn 979 980@c pexecute.txh:237 981@deftypefn Extension {FILE *} pex_read_err (struct pex_obj *@var{obj}, @ 982 int @var{binary}) 983 984Returns a @code{FILE} pointer which may be used to read the standard 985error of the last program in the pipeline. When this is used, 986@code{PEX_LAST} should not be used in a call to @code{pex_run}. After 987this is called, @code{pex_run} may no longer be called with the same 988@var{obj}. @var{binary} should be non-zero if the file should be 989opened in binary mode. Don't call @code{fclose} on the returned file; 990it will be closed by @code{pex_free}. 991 992@end deftypefn 993 994@c pexecute.txh:224 995@deftypefn Extension {FILE *} pex_read_output (struct pex_obj *@var{obj}, @ 996 int @var{binary}) 997 998Returns a @code{FILE} pointer which may be used to read the standard 999output of the last program in the pipeline. When this is used, 1000@code{PEX_LAST} should not be used in a call to @code{pex_run}. After 1001this is called, @code{pex_run} may no longer be called with the same 1002@var{obj}. @var{binary} should be non-zero if the file should be 1003opened in binary mode. Don't call @code{fclose} on the returned file; 1004it will be closed by @code{pex_free}. 1005 1006@end deftypefn 1007 1008@c pexecute.txh:34 1009@deftypefn Extension {const char *} pex_run (struct pex_obj *@var{obj}, @ 1010 int @var{flags}, const char *@var{executable}, char * const *@var{argv}, @ 1011 const char *@var{outname}, const char *@var{errname}, int *@var{err}) 1012 1013Execute one program in a pipeline. On success this returns 1014@code{NULL}. On failure it returns an error message, a statically 1015allocated string. 1016 1017@var{obj} is returned by a previous call to @code{pex_init}. 1018 1019@var{flags} is a bitwise combination of the following: 1020 1021@table @code 1022 1023@vindex PEX_LAST 1024@item PEX_LAST 1025This must be set on the last program in the pipeline. In particular, 1026it should be set when executing a single program. The standard output 1027of the program will be sent to @var{outname}, or, if @var{outname} is 1028@code{NULL}, to the standard output of the calling program. Do @emph{not} 1029set this bit if you want to call @code{pex_read_output} 1030(described below). After a call to @code{pex_run} with this bit set, 1031@var{pex_run} may no longer be called with the same @var{obj}. 1032 1033@vindex PEX_SEARCH 1034@item PEX_SEARCH 1035Search for the program using the user's executable search path. 1036 1037@vindex PEX_SUFFIX 1038@item PEX_SUFFIX 1039@var{outname} is a suffix. See the description of @var{outname}, 1040below. 1041 1042@vindex PEX_STDERR_TO_STDOUT 1043@item PEX_STDERR_TO_STDOUT 1044Send the program's standard error to standard output, if possible. 1045 1046@vindex PEX_BINARY_INPUT 1047@vindex PEX_BINARY_OUTPUT 1048@vindex PEX_BINARY_ERROR 1049@item PEX_BINARY_INPUT 1050@itemx PEX_BINARY_OUTPUT 1051@itemx PEX_BINARY_ERROR 1052The standard input (output or error) of the program should be read (written) in 1053binary mode rather than text mode. These flags are ignored on systems 1054which do not distinguish binary mode and text mode, such as Unix. For 1055proper behavior these flags should match appropriately---a call to 1056@code{pex_run} using @code{PEX_BINARY_OUTPUT} should be followed by a 1057call using @code{PEX_BINARY_INPUT}. 1058 1059@vindex PEX_STDERR_TO_PIPE 1060@item PEX_STDERR_TO_PIPE 1061Send the program's standard error to a pipe, if possible. This flag 1062cannot be specified together with @code{PEX_STDERR_TO_STDOUT}. This 1063flag can be specified only on the last program in pipeline. 1064 1065@end table 1066 1067@var{executable} is the program to execute. @var{argv} is the set of 1068arguments to pass to the program; normally @code{@var{argv}[0]} will 1069be a copy of @var{executable}. 1070 1071@var{outname} is used to set the name of the file to use for standard 1072output. There are two cases in which no output file will be used: 1073 1074@enumerate 1075@item 1076if @code{PEX_LAST} is not set in @var{flags}, and @code{PEX_USE_PIPES} 1077was set in the call to @code{pex_init}, and the system supports pipes 1078 1079@item 1080if @code{PEX_LAST} is set in @var{flags}, and @var{outname} is 1081@code{NULL} 1082@end enumerate 1083 1084@noindent 1085Otherwise the code will use a file to hold standard 1086output. If @code{PEX_LAST} is not set, this file is considered to be 1087a temporary file, and it will be removed when no longer needed, unless 1088@code{PEX_SAVE_TEMPS} was set in the call to @code{pex_init}. 1089 1090There are two cases to consider when setting the name of the file to 1091hold standard output. 1092 1093@enumerate 1094@item 1095@code{PEX_SUFFIX} is set in @var{flags}. In this case 1096@var{outname} may not be @code{NULL}. If the @var{tempbase} parameter 1097to @code{pex_init} was not @code{NULL}, then the output file name is 1098the concatenation of @var{tempbase} and @var{outname}. If 1099@var{tempbase} was @code{NULL}, then the output file name is a random 1100file name ending in @var{outname}. 1101 1102@item 1103@code{PEX_SUFFIX} was not set in @var{flags}. In this 1104case, if @var{outname} is not @code{NULL}, it is used as the output 1105file name. If @var{outname} is @code{NULL}, and @var{tempbase} was 1106not NULL, the output file name is randomly chosen using 1107@var{tempbase}. Otherwise the output file name is chosen completely 1108at random. 1109@end enumerate 1110 1111@var{errname} is the file name to use for standard error output. If 1112it is @code{NULL}, standard error is the same as the caller's. 1113Otherwise, standard error is written to the named file. 1114 1115On an error return, the code sets @code{*@var{err}} to an @code{errno} 1116value, or to 0 if there is no relevant @code{errno}. 1117 1118@end deftypefn 1119 1120@c pexecute.txh:145 1121@deftypefn Extension {const char *} pex_run_in_environment (struct pex_obj *@var{obj}, @ 1122 int @var{flags}, const char *@var{executable}, char * const *@var{argv}, @ 1123 char * const *@var{env}, int @var{env_size}, const char *@var{outname}, @ 1124 const char *@var{errname}, int *@var{err}) 1125 1126Execute one program in a pipeline, permitting the environment for the 1127program to be specified. Behaviour and parameters not listed below are 1128as for @code{pex_run}. 1129 1130@var{env} is the environment for the child process, specified as an array of 1131character pointers. Each element of the array should point to a string of the 1132form @code{VAR=VALUE}, with the exception of the last element that must be 1133@code{NULL}. 1134 1135@end deftypefn 1136 1137@c pexecute.txh:301 1138@deftypefn Extension int pexecute (const char *@var{program}, @ 1139 char * const *@var{argv}, const char *@var{this_pname}, @ 1140 const char *@var{temp_base}, char **@var{errmsg_fmt}, @ 1141 char **@var{errmsg_arg}, int @var{flags}) 1142 1143This is the old interface to execute one or more programs. It is 1144still supported for compatibility purposes, but is no longer 1145documented. 1146 1147@end deftypefn 1148 1149@c strsignal.c:541 1150@deftypefn Supplemental void psignal (int @var{signo}, char *@var{message}) 1151 1152Print @var{message} to the standard error, followed by a colon, 1153followed by the description of the signal specified by @var{signo}, 1154followed by a newline. 1155 1156@end deftypefn 1157 1158@c putenv.c:21 1159@deftypefn Supplemental int putenv (const char *@var{string}) 1160 1161Uses @code{setenv} or @code{unsetenv} to put @var{string} into 1162the environment or remove it. If @var{string} is of the form 1163@samp{name=value} the string is added; if no @samp{=} is present the 1164name is unset/removed. 1165 1166@end deftypefn 1167 1168@c pexecute.txh:312 1169@deftypefn Extension int pwait (int @var{pid}, int *@var{status}, int @var{flags}) 1170 1171Another part of the old execution interface. 1172 1173@end deftypefn 1174 1175@c random.c:39 1176@deftypefn Supplement {long int} random (void) 1177@deftypefnx Supplement void srandom (unsigned int @var{seed}) 1178@deftypefnx Supplement void* initstate (unsigned int @var{seed}, @ 1179 void *@var{arg_state}, unsigned long @var{n}) 1180@deftypefnx Supplement void* setstate (void *@var{arg_state}) 1181 1182Random number functions. @code{random} returns a random number in the 1183range 0 to @code{LONG_MAX}. @code{srandom} initializes the random 1184number generator to some starting point determined by @var{seed} 1185(else, the values returned by @code{random} are always the same for each 1186run of the program). @code{initstate} and @code{setstate} allow fine-grained 1187control over the state of the random number generator. 1188 1189@end deftypefn 1190 1191@c concat.c:160 1192@deftypefn Extension char* reconcat (char *@var{optr}, const char *@var{s1}, @ 1193 @dots{}, @code{NULL}) 1194 1195Same as @code{concat}, except that if @var{optr} is not @code{NULL} it 1196is freed after the string is created. This is intended to be useful 1197when you're extending an existing string or building up a string in a 1198loop: 1199 1200@example 1201 str = reconcat (str, "pre-", str, NULL); 1202@end example 1203 1204@end deftypefn 1205 1206@c rename.c:6 1207@deftypefn Supplemental int rename (const char *@var{old}, const char *@var{new}) 1208 1209Renames a file from @var{old} to @var{new}. If @var{new} already 1210exists, it is removed. 1211 1212@end deftypefn 1213 1214@c rindex.c:5 1215@deftypefn Supplemental char* rindex (const char *@var{s}, int @var{c}) 1216 1217Returns a pointer to the last occurrence of the character @var{c} in 1218the string @var{s}, or @code{NULL} if not found. The use of @code{rindex} is 1219deprecated in new programs in favor of @code{strrchr}. 1220 1221@end deftypefn 1222 1223@c setenv.c:22 1224@deftypefn Supplemental int setenv (const char *@var{name}, @ 1225 const char *@var{value}, int @var{overwrite}) 1226@deftypefnx Supplemental void unsetenv (const char *@var{name}) 1227 1228@code{setenv} adds @var{name} to the environment with value 1229@var{value}. If the name was already present in the environment, 1230the new value will be stored only if @var{overwrite} is nonzero. 1231The companion @code{unsetenv} function removes @var{name} from the 1232environment. This implementation is not safe for multithreaded code. 1233 1234@end deftypefn 1235 1236@c setproctitle.c:31 1237@deftypefn Supplemental void setproctitle (const char *@var{fmt}, ...) 1238 1239Set the title of a process to @var{fmt}. va args not supported for now, 1240but defined for compatibility with BSD. 1241 1242@end deftypefn 1243 1244@c strsignal.c:348 1245@deftypefn Extension int signo_max (void) 1246 1247Returns the maximum signal value for which a corresponding symbolic 1248name or message is available. Note that in the case where we use the 1249@code{sys_siglist} supplied by the system, it is possible for there to 1250be more symbolic names than messages, or vice versa. In fact, the 1251manual page for @code{psignal(3b)} explicitly warns that one should 1252check the size of the table (@code{NSIG}) before indexing it, since 1253new signal codes may be added to the system before they are added to 1254the table. Thus @code{NSIG} might be smaller than value implied by 1255the largest signo value defined in @code{<signal.h>}. 1256 1257We return the maximum value that can be used to obtain a meaningful 1258symbolic name or message. 1259 1260@end deftypefn 1261 1262@c sigsetmask.c:8 1263@deftypefn Supplemental int sigsetmask (int @var{set}) 1264 1265Sets the signal mask to the one provided in @var{set} and returns 1266the old mask (which, for libiberty's implementation, will always 1267be the value @code{1}). 1268 1269@end deftypefn 1270 1271@c simple-object.txh:96 1272@deftypefn Extension {const char *} simple_object_attributes_compare @ 1273 (simple_object_attributes *@var{attrs1}, simple_object_attributes *@var{attrs2}, @ 1274 int *@var{err}) 1275 1276Compare @var{attrs1} and @var{attrs2}. If they could be linked 1277together without error, return @code{NULL}. Otherwise, return an 1278error message and set @code{*@var{err}} to an errno value or @code{0} 1279if there is no relevant errno. 1280 1281@end deftypefn 1282 1283@c simple-object.txh:81 1284@deftypefn Extension {simple_object_attributes *} simple_object_fetch_attributes @ 1285 (simple_object_read *@var{simple_object}, const char **@var{errmsg}, int *@var{err}) 1286 1287Fetch the attributes of @var{simple_object}. The attributes are 1288internal information such as the format of the object file, or the 1289architecture it was compiled for. This information will persist until 1290@code{simple_object_attributes_release} is called, even if 1291@var{simple_object} itself is released. 1292 1293On error this returns @code{NULL}, sets @code{*@var{errmsg}} to an 1294error message, and sets @code{*@var{err}} to an errno value or 1295@code{0} if there is no relevant errno. 1296 1297@end deftypefn 1298 1299@c simple-object.txh:49 1300@deftypefn Extension {int} simple_object_find_section @ 1301 (simple_object_read *@var{simple_object} off_t *@var{offset}, @ 1302 off_t *@var{length}, const char **@var{errmsg}, int *@var{err}) 1303 1304Look for the section @var{name} in @var{simple_object}. This returns 1305information for the first section with that name. 1306 1307If found, return 1 and set @code{*@var{offset}} to the offset in the 1308file of the section contents and set @code{*@var{length}} to the 1309length of the section contents. The value in @code{*@var{offset}} 1310will be relative to the offset passed to 1311@code{simple_object_open_read}. 1312 1313If the section is not found, and no error occurs, 1314@code{simple_object_find_section} returns @code{0} and set 1315@code{*@var{errmsg}} to @code{NULL}. 1316 1317If an error occurs, @code{simple_object_find_section} returns 1318@code{0}, sets @code{*@var{errmsg}} to an error message, and sets 1319@code{*@var{err}} to an errno value or @code{0} if there is no 1320relevant errno. 1321 1322@end deftypefn 1323 1324@c simple-object.txh:27 1325@deftypefn Extension {const char *} simple_object_find_sections @ 1326 (simple_object_read *@var{simple_object}, int (*@var{pfn}) (void *@var{data}, @ 1327 const char *@var{name}, off_t @var{offset}, off_t @var{length}), @ 1328 void *@var{data}, int *@var{err}) 1329 1330This function calls @var{pfn} for each section in @var{simple_object}. 1331It calls @var{pfn} with the section name, the offset within the file 1332of the section contents, and the length of the section contents. The 1333offset within the file is relative to the offset passed to 1334@code{simple_object_open_read}. The @var{data} argument to this 1335function is passed along to @var{pfn}. 1336 1337If @var{pfn} returns @code{0}, the loop over the sections stops and 1338@code{simple_object_find_sections} returns. If @var{pfn} returns some 1339other value, the loop continues. 1340 1341On success @code{simple_object_find_sections} returns. On error it 1342returns an error string, and sets @code{*@var{err}} to an errno value 1343or @code{0} if there is no relevant errno. 1344 1345@end deftypefn 1346 1347@c simple-object.txh:2 1348@deftypefn Extension {simple_object_read *} simple_object_open_read @ 1349 (int @var{descriptor}, off_t @var{offset}, const char *{segment_name}, @ 1350 const char **@var{errmsg}, int *@var{err}) 1351 1352Opens an object file for reading. Creates and returns an 1353@code{simple_object_read} pointer which may be passed to other 1354functions to extract data from the object file. 1355 1356@var{descriptor} holds a file descriptor which permits reading. 1357 1358@var{offset} is the offset into the file; this will be @code{0} in the 1359normal case, but may be a different value when reading an object file 1360in an archive file. 1361 1362@var{segment_name} is only used with the Mach-O file format used on 1363Darwin aka Mac OS X. It is required on that platform, and means to 1364only look at sections within the segment with that name. The 1365parameter is ignored on other systems. 1366 1367If an error occurs, this functions returns @code{NULL} and sets 1368@code{*@var{errmsg}} to an error string and sets @code{*@var{err}} to 1369an errno value or @code{0} if there is no relevant errno. 1370 1371@end deftypefn 1372 1373@c simple-object.txh:107 1374@deftypefn Extension {void} simple_object_release_attributes @ 1375 (simple_object_attributes *@var{attrs}) 1376 1377Release all resources associated with @var{attrs}. 1378 1379@end deftypefn 1380 1381@c simple-object.txh:73 1382@deftypefn Extension {void} simple_object_release_read @ 1383 (simple_object_read *@var{simple_object}) 1384 1385Release all resources associated with @var{simple_object}. This does 1386not close the file descriptor. 1387 1388@end deftypefn 1389 1390@c simple-object.txh:184 1391@deftypefn Extension {void} simple_object_release_write @ 1392 (simple_object_write *@var{simple_object}) 1393 1394Release all resources associated with @var{simple_object}. 1395 1396@end deftypefn 1397 1398@c simple-object.txh:114 1399@deftypefn Extension {simple_object_write *} simple_object_start_write @ 1400 (simple_object_attributes @var{attrs}, const char *@var{segment_name}, @ 1401 const char **@var{errmsg}, int *@var{err}) 1402 1403Start creating a new object file using the object file format 1404described in @var{attrs}. You must fetch attribute information from 1405an existing object file before you can create a new one. There is 1406currently no support for creating an object file de novo. 1407 1408@var{segment_name} is only used with Mach-O as found on Darwin aka Mac 1409OS X. The parameter is required on that target. It means that all 1410sections are created within the named segment. It is ignored for 1411other object file formats. 1412 1413On error @code{simple_object_start_write} returns @code{NULL}, sets 1414@code{*@var{ERRMSG}} to an error message, and sets @code{*@var{err}} 1415to an errno value or @code{0} if there is no relevant errno. 1416 1417@end deftypefn 1418 1419@c simple-object.txh:153 1420@deftypefn Extension {const char *} simple_object_write_add_data @ 1421 (simple_object_write *@var{simple_object}, @ 1422 simple_object_write_section *@var{section}, const void *@var{buffer}, @ 1423 size_t @var{size}, int @var{copy}, int *@var{err}) 1424 1425Add data @var{buffer}/@var{size} to @var{section} in 1426@var{simple_object}. If @var{copy} is non-zero, the data will be 1427copied into memory if necessary. If @var{copy} is zero, @var{buffer} 1428must persist until @code{simple_object_write_to_file} is called. is 1429released. 1430 1431On success this returns @code{NULL}. On error this returns an error 1432message, and sets @code{*@var{err}} to an errno value or 0 if there is 1433no relevant erro. 1434 1435@end deftypefn 1436 1437@c simple-object.txh:134 1438@deftypefn Extension {simple_object_write_section *} simple_object_write_create_section @ 1439 (simple_object_write *@var{simple_object}, const char *@var{name}, @ 1440 unsigned int @var{align}, const char **@var{errmsg}, int *@var{err}) 1441 1442Add a section to @var{simple_object}. @var{name} is the name of the 1443new section. @var{align} is the required alignment expressed as the 1444number of required low-order 0 bits (e.g., 2 for alignment to a 32-bit 1445boundary). 1446 1447The section is created as containing data, readable, not writable, not 1448executable, not loaded at runtime. The section is not written to the 1449file until @code{simple_object_write_to_file} is called. 1450 1451On error this returns @code{NULL}, sets @code{*@var{errmsg}} to an 1452error message, and sets @code{*@var{err}} to an errno value or 1453@code{0} if there is no relevant errno. 1454 1455@end deftypefn 1456 1457@c simple-object.txh:170 1458@deftypefn Extension {const char *} simple_object_write_to_file @ 1459 (simple_object_write *@var{simple_object}, int @var{descriptor}, int *@var{err}) 1460 1461Write the complete object file to @var{descriptor}, an open file 1462descriptor. This writes out all the data accumulated by calls to 1463@code{simple_object_write_create_section} and 1464@var{simple_object_write_add_data}. 1465 1466This returns @code{NULL} on success. On error this returns an error 1467message and sets @code{*@var{err}} to an errno value or @code{0} if 1468there is no relevant errno. 1469 1470@end deftypefn 1471 1472@c snprintf.c:28 1473@deftypefn Supplemental int snprintf (char *@var{buf}, size_t @var{n}, @ 1474 const char *@var{format}, ...) 1475 1476This function is similar to @code{sprintf}, but it will write to 1477@var{buf} at most @code{@var{n}-1} bytes of text, followed by a 1478terminating null byte, for a total of @var{n} bytes. 1479On error the return value is -1, otherwise it returns the number of 1480bytes, not including the terminating null byte, that would have been 1481written had @var{n} been sufficiently large, regardless of the actual 1482value of @var{n}. Note some pre-C99 system libraries do not implement 1483this correctly so users cannot generally rely on the return value if 1484the system version of this function is used. 1485 1486@end deftypefn 1487 1488@c spaces.c:22 1489@deftypefn Extension char* spaces (int @var{count}) 1490 1491Returns a pointer to a memory region filled with the specified 1492number of spaces and null terminated. The returned pointer is 1493valid until at least the next call. 1494 1495@end deftypefn 1496 1497@c splay-tree.c:305 1498@deftypefn Supplemental splay_tree splay_tree_new_with_typed_alloc @ 1499(splay_tree_compare_fn @var{compare_fn}, @ 1500splay_tree_delete_key_fn @var{delete_key_fn}, @ 1501splay_tree_delete_value_fn @var{delete_value_fn}, @ 1502splay_tree_allocate_fn @var{tree_allocate_fn}, @ 1503splay_tree_allocate_fn @var{node_allocate_fn}, @ 1504splay_tree_deallocate_fn @var{deallocate_fn}, @ 1505void * @var{allocate_data}) 1506 1507This function creates a splay tree that uses two different allocators 1508@var{tree_allocate_fn} and @var{node_allocate_fn} to use for allocating the 1509tree itself and its nodes respectively. This is useful when variables of 1510different types need to be allocated with different allocators. 1511 1512The splay tree will use @var{compare_fn} to compare nodes, 1513@var{delete_key_fn} to deallocate keys, and @var{delete_value_fn} to 1514deallocate values. Keys and values will be deallocated when the 1515tree is deleted using splay_tree_delete or when a node is removed 1516using splay_tree_remove. splay_tree_insert will release the previously 1517inserted key and value using @var{delete_key_fn} and @var{delete_value_fn} 1518if the inserted key is already found in the tree. 1519 1520@end deftypefn 1521 1522@c stack-limit.c:28 1523@deftypefn Extension void stack_limit_increase (unsigned long @var{pref}) 1524 1525Attempt to increase stack size limit to @var{pref} bytes if possible. 1526 1527@end deftypefn 1528 1529@c stpcpy.c:23 1530@deftypefn Supplemental char* stpcpy (char *@var{dst}, const char *@var{src}) 1531 1532Copies the string @var{src} into @var{dst}. Returns a pointer to 1533@var{dst} + strlen(@var{src}). 1534 1535@end deftypefn 1536 1537@c stpncpy.c:23 1538@deftypefn Supplemental char* stpncpy (char *@var{dst}, const char *@var{src}, @ 1539 size_t @var{len}) 1540 1541Copies the string @var{src} into @var{dst}, copying exactly @var{len} 1542and padding with zeros if necessary. If @var{len} < strlen(@var{src}) 1543then return @var{dst} + @var{len}, otherwise returns @var{dst} + 1544strlen(@var{src}). 1545 1546@end deftypefn 1547 1548@c strcasecmp.c:15 1549@deftypefn Supplemental int strcasecmp (const char *@var{s1}, const char *@var{s2}) 1550 1551A case-insensitive @code{strcmp}. 1552 1553@end deftypefn 1554 1555@c strchr.c:6 1556@deftypefn Supplemental char* strchr (const char *@var{s}, int @var{c}) 1557 1558Returns a pointer to the first occurrence of the character @var{c} in 1559the string @var{s}, or @code{NULL} if not found. If @var{c} is itself the 1560null character, the results are undefined. 1561 1562@end deftypefn 1563 1564@c strdup.c:3 1565@deftypefn Supplemental char* strdup (const char *@var{s}) 1566 1567Returns a pointer to a copy of @var{s} in memory obtained from 1568@code{malloc}, or @code{NULL} if insufficient memory was available. 1569 1570@end deftypefn 1571 1572@c strerror.c:675 1573@deftypefn Replacement {const char*} strerrno (int @var{errnum}) 1574 1575Given an error number returned from a system call (typically returned 1576in @code{errno}), returns a pointer to a string containing the 1577symbolic name of that error number, as found in @code{<errno.h>}. 1578 1579If the supplied error number is within the valid range of indices for 1580symbolic names, but no name is available for the particular error 1581number, then returns the string @samp{Error @var{num}}, where @var{num} 1582is the error number. 1583 1584If the supplied error number is not within the range of valid 1585indices, then returns @code{NULL}. 1586 1587The contents of the location pointed to are only guaranteed to be 1588valid until the next call to @code{strerrno}. 1589 1590@end deftypefn 1591 1592@c strerror.c:608 1593@deftypefn Supplemental char* strerror (int @var{errnoval}) 1594 1595Maps an @code{errno} number to an error message string, the contents 1596of which are implementation defined. On systems which have the 1597external variables @code{sys_nerr} and @code{sys_errlist}, these 1598strings will be the same as the ones used by @code{perror}. 1599 1600If the supplied error number is within the valid range of indices for 1601the @code{sys_errlist}, but no message is available for the particular 1602error number, then returns the string @samp{Error @var{num}}, where 1603@var{num} is the error number. 1604 1605If the supplied error number is not a valid index into 1606@code{sys_errlist}, returns @code{NULL}. 1607 1608The returned string is only guaranteed to be valid only until the 1609next call to @code{strerror}. 1610 1611@end deftypefn 1612 1613@c strncasecmp.c:15 1614@deftypefn Supplemental int strncasecmp (const char *@var{s1}, const char *@var{s2}) 1615 1616A case-insensitive @code{strncmp}. 1617 1618@end deftypefn 1619 1620@c strncmp.c:6 1621@deftypefn Supplemental int strncmp (const char *@var{s1}, @ 1622 const char *@var{s2}, size_t @var{n}) 1623 1624Compares the first @var{n} bytes of two strings, returning a value as 1625@code{strcmp}. 1626 1627@end deftypefn 1628 1629@c strndup.c:23 1630@deftypefn Extension char* strndup (const char *@var{s}, size_t @var{n}) 1631 1632Returns a pointer to a copy of @var{s} with at most @var{n} characters 1633in memory obtained from @code{malloc}, or @code{NULL} if insufficient 1634memory was available. The result is always NUL terminated. 1635 1636@end deftypefn 1637 1638@c strnlen.c:6 1639@deftypefn Supplemental size_t strnlen (const char *@var{s}, size_t @var{maxlen}) 1640 1641Returns the length of @var{s}, as with @code{strlen}, but never looks 1642past the first @var{maxlen} characters in the string. If there is no 1643'\0' character in the first @var{maxlen} characters, returns 1644@var{maxlen}. 1645 1646@end deftypefn 1647 1648@c strrchr.c:6 1649@deftypefn Supplemental char* strrchr (const char *@var{s}, int @var{c}) 1650 1651Returns a pointer to the last occurrence of the character @var{c} in 1652the string @var{s}, or @code{NULL} if not found. If @var{c} is itself the 1653null character, the results are undefined. 1654 1655@end deftypefn 1656 1657@c strsignal.c:383 1658@deftypefn Supplemental {const char *} strsignal (int @var{signo}) 1659 1660Maps an signal number to an signal message string, the contents of 1661which are implementation defined. On systems which have the external 1662variable @code{sys_siglist}, these strings will be the same as the 1663ones used by @code{psignal()}. 1664 1665If the supplied signal number is within the valid range of indices for 1666the @code{sys_siglist}, but no message is available for the particular 1667signal number, then returns the string @samp{Signal @var{num}}, where 1668@var{num} is the signal number. 1669 1670If the supplied signal number is not a valid index into 1671@code{sys_siglist}, returns @code{NULL}. 1672 1673The returned string is only guaranteed to be valid only until the next 1674call to @code{strsignal}. 1675 1676@end deftypefn 1677 1678@c strsignal.c:448 1679@deftypefn Extension {const char*} strsigno (int @var{signo}) 1680 1681Given an signal number, returns a pointer to a string containing the 1682symbolic name of that signal number, as found in @code{<signal.h>}. 1683 1684If the supplied signal number is within the valid range of indices for 1685symbolic names, but no name is available for the particular signal 1686number, then returns the string @samp{Signal @var{num}}, where 1687@var{num} is the signal number. 1688 1689If the supplied signal number is not within the range of valid 1690indices, then returns @code{NULL}. 1691 1692The contents of the location pointed to are only guaranteed to be 1693valid until the next call to @code{strsigno}. 1694 1695@end deftypefn 1696 1697@c strstr.c:6 1698@deftypefn Supplemental char* strstr (const char *@var{string}, const char *@var{sub}) 1699 1700This function searches for the substring @var{sub} in the string 1701@var{string}, not including the terminating null characters. A pointer 1702to the first occurrence of @var{sub} is returned, or @code{NULL} if the 1703substring is absent. If @var{sub} points to a string with zero 1704length, the function returns @var{string}. 1705 1706@end deftypefn 1707 1708@c strtod.c:27 1709@deftypefn Supplemental double strtod (const char *@var{string}, @ 1710 char **@var{endptr}) 1711 1712This ISO C function converts the initial portion of @var{string} to a 1713@code{double}. If @var{endptr} is not @code{NULL}, a pointer to the 1714character after the last character used in the conversion is stored in 1715the location referenced by @var{endptr}. If no conversion is 1716performed, zero is returned and the value of @var{string} is stored in 1717the location referenced by @var{endptr}. 1718 1719@end deftypefn 1720 1721@c strerror.c:734 1722@deftypefn Extension int strtoerrno (const char *@var{name}) 1723 1724Given the symbolic name of a error number (e.g., @code{EACCES}), map it 1725to an errno value. If no translation is found, returns 0. 1726 1727@end deftypefn 1728 1729@c strtol.c:33 1730@deftypefn Supplemental {long int} strtol (const char *@var{string}, @ 1731 char **@var{endptr}, int @var{base}) 1732@deftypefnx Supplemental {unsigned long int} strtoul (const char *@var{string}, @ 1733 char **@var{endptr}, int @var{base}) 1734 1735The @code{strtol} function converts the string in @var{string} to a 1736long integer value according to the given @var{base}, which must be 1737between 2 and 36 inclusive, or be the special value 0. If @var{base} 1738is 0, @code{strtol} will look for the prefixes @code{0} and @code{0x} 1739to indicate bases 8 and 16, respectively, else default to base 10. 1740When the base is 16 (either explicitly or implicitly), a prefix of 1741@code{0x} is allowed. The handling of @var{endptr} is as that of 1742@code{strtod} above. The @code{strtoul} function is the same, except 1743that the converted value is unsigned. 1744 1745@end deftypefn 1746 1747@c strtoll.c:33 1748@deftypefn Supplemental {long long int} strtoll (const char *@var{string}, @ 1749 char **@var{endptr}, int @var{base}) 1750@deftypefnx Supplemental {unsigned long long int} strtoul (@ 1751 const char *@var{string}, char **@var{endptr}, int @var{base}) 1752 1753The @code{strtoll} function converts the string in @var{string} to a 1754long long integer value according to the given @var{base}, which must be 1755between 2 and 36 inclusive, or be the special value 0. If @var{base} 1756is 0, @code{strtoll} will look for the prefixes @code{0} and @code{0x} 1757to indicate bases 8 and 16, respectively, else default to base 10. 1758When the base is 16 (either explicitly or implicitly), a prefix of 1759@code{0x} is allowed. The handling of @var{endptr} is as that of 1760@code{strtod} above. The @code{strtoull} function is the same, except 1761that the converted value is unsigned. 1762 1763@end deftypefn 1764 1765@c strsignal.c:502 1766@deftypefn Extension int strtosigno (const char *@var{name}) 1767 1768Given the symbolic name of a signal, map it to a signal number. If no 1769translation is found, returns 0. 1770 1771@end deftypefn 1772 1773@c strverscmp.c:25 1774@deftypefun int strverscmp (const char *@var{s1}, const char *@var{s2}) 1775The @code{strverscmp} function compares the string @var{s1} against 1776@var{s2}, considering them as holding indices/version numbers. Return 1777value follows the same conventions as found in the @code{strverscmp} 1778function. In fact, if @var{s1} and @var{s2} contain no digits, 1779@code{strverscmp} behaves like @code{strcmp}. 1780 1781Basically, we compare strings normally (character by character), until 1782we find a digit in each string - then we enter a special comparison 1783mode, where each sequence of digits is taken as a whole. If we reach the 1784end of these two parts without noticing a difference, we return to the 1785standard comparison mode. There are two types of numeric parts: 1786"integral" and "fractional" (those begin with a '0'). The types 1787of the numeric parts affect the way we sort them: 1788 1789@itemize @bullet 1790@item 1791integral/integral: we compare values as you would expect. 1792 1793@item 1794fractional/integral: the fractional part is less than the integral one. 1795Again, no surprise. 1796 1797@item 1798fractional/fractional: the things become a bit more complex. 1799If the common prefix contains only leading zeroes, the longest part is less 1800than the other one; else the comparison behaves normally. 1801@end itemize 1802 1803@smallexample 1804strverscmp ("no digit", "no digit") 1805 @result{} 0 // @r{same behavior as strcmp.} 1806strverscmp ("item#99", "item#100") 1807 @result{} <0 // @r{same prefix, but 99 < 100.} 1808strverscmp ("alpha1", "alpha001") 1809 @result{} >0 // @r{fractional part inferior to integral one.} 1810strverscmp ("part1_f012", "part1_f01") 1811 @result{} >0 // @r{two fractional parts.} 1812strverscmp ("foo.009", "foo.0") 1813 @result{} <0 // @r{idem, but with leading zeroes only.} 1814@end smallexample 1815 1816This function is especially useful when dealing with filename sorting, 1817because filenames frequently hold indices/version numbers. 1818@end deftypefun 1819 1820@c timeval-utils.c:43 1821@deftypefn Extension void timeval_add (struct timeval *@var{a}, @ 1822 struct timeval *@var{b}, struct timeval *@var{result}) 1823 1824Adds @var{a} to @var{b} and stores the result in @var{result}. 1825 1826@end deftypefn 1827 1828@c timeval-utils.c:67 1829@deftypefn Extension void timeval_sub (struct timeval *@var{a}, @ 1830 struct timeval *@var{b}, struct timeval *@var{result}) 1831 1832Subtracts @var{b} from @var{a} and stores the result in @var{result}. 1833 1834@end deftypefn 1835 1836@c tmpnam.c:3 1837@deftypefn Supplemental char* tmpnam (char *@var{s}) 1838 1839This function attempts to create a name for a temporary file, which 1840will be a valid file name yet not exist when @code{tmpnam} checks for 1841it. @var{s} must point to a buffer of at least @code{L_tmpnam} bytes, 1842or be @code{NULL}. Use of this function creates a security risk, and it must 1843not be used in new projects. Use @code{mkstemp} instead. 1844 1845@end deftypefn 1846 1847@c unlink-if-ordinary.c:27 1848@deftypefn Supplemental int unlink_if_ordinary (const char*) 1849 1850Unlinks the named file, unless it is special (e.g. a device file). 1851Returns 0 when the file was unlinked, a negative value (and errno set) when 1852there was an error deleting the file, and a positive value if no attempt 1853was made to unlink the file because it is special. 1854 1855@end deftypefn 1856 1857@c fopen_unlocked.c:31 1858@deftypefn Extension void unlock_std_streams (void) 1859 1860If the OS supports it, ensure that the standard I/O streams, 1861@code{stdin}, @code{stdout} and @code{stderr} are setup to avoid any 1862multi-threaded locking. Otherwise do nothing. 1863 1864@end deftypefn 1865 1866@c fopen_unlocked.c:23 1867@deftypefn Extension void unlock_stream (FILE * @var{stream}) 1868 1869If the OS supports it, ensure that the supplied stream is setup to 1870avoid any multi-threaded locking. Otherwise leave the @code{FILE} 1871pointer unchanged. If the @var{stream} is @code{NULL} do nothing. 1872 1873@end deftypefn 1874 1875@c vasprintf.c:47 1876@deftypefn Extension int vasprintf (char **@var{resptr}, @ 1877 const char *@var{format}, va_list @var{args}) 1878 1879Like @code{vsprintf}, but instead of passing a pointer to a buffer, 1880you pass a pointer to a pointer. This function will compute the size 1881of the buffer needed, allocate memory with @code{malloc}, and store a 1882pointer to the allocated memory in @code{*@var{resptr}}. The value 1883returned is the same as @code{vsprintf} would return. If memory could 1884not be allocated, minus one is returned and @code{NULL} is stored in 1885@code{*@var{resptr}}. 1886 1887@end deftypefn 1888 1889@c vfork.c:6 1890@deftypefn Supplemental int vfork (void) 1891 1892Emulates @code{vfork} by calling @code{fork} and returning its value. 1893 1894@end deftypefn 1895 1896@c vprintf.c:3 1897@deftypefn Supplemental int vprintf (const char *@var{format}, va_list @var{ap}) 1898@deftypefnx Supplemental int vfprintf (FILE *@var{stream}, @ 1899 const char *@var{format}, va_list @var{ap}) 1900@deftypefnx Supplemental int vsprintf (char *@var{str}, @ 1901 const char *@var{format}, va_list @var{ap}) 1902 1903These functions are the same as @code{printf}, @code{fprintf}, and 1904@code{sprintf}, respectively, except that they are called with a 1905@code{va_list} instead of a variable number of arguments. Note that 1906they do not call @code{va_end}; this is the application's 1907responsibility. In @libib{} they are implemented in terms of the 1908nonstandard but common function @code{_doprnt}. 1909 1910@end deftypefn 1911 1912@c vsnprintf.c:28 1913@deftypefn Supplemental int vsnprintf (char *@var{buf}, size_t @var{n}, @ 1914 const char *@var{format}, va_list @var{ap}) 1915 1916This function is similar to @code{vsprintf}, but it will write to 1917@var{buf} at most @code{@var{n}-1} bytes of text, followed by a 1918terminating null byte, for a total of @var{n} bytes. On error the 1919return value is -1, otherwise it returns the number of characters that 1920would have been printed had @var{n} been sufficiently large, 1921regardless of the actual value of @var{n}. Note some pre-C99 system 1922libraries do not implement this correctly so users cannot generally 1923rely on the return value if the system version of this function is 1924used. 1925 1926@end deftypefn 1927 1928@c waitpid.c:3 1929@deftypefn Supplemental int waitpid (int @var{pid}, int *@var{status}, int) 1930 1931This is a wrapper around the @code{wait} function. Any ``special'' 1932values of @var{pid} depend on your implementation of @code{wait}, as 1933does the return value. The third argument is unused in @libib{}. 1934 1935@end deftypefn 1936 1937@c argv.c:289 1938@deftypefn Extension int writeargv (char * const *@var{argv}, FILE *@var{file}) 1939 1940Write each member of ARGV, handling all necessary quoting, to the file 1941named by FILE, separated by whitespace. Return 0 on success, non-zero 1942if an error occurred while writing to FILE. 1943 1944@end deftypefn 1945 1946@c xasprintf.c:31 1947@deftypefn Replacement char* xasprintf (const char *@var{format}, ...) 1948 1949Print to allocated string without fail. If @code{xasprintf} fails, 1950this will print a message to @code{stderr} (using the name set by 1951@code{xmalloc_set_program_name}, if any) and then call @code{xexit}. 1952 1953@end deftypefn 1954 1955@c xatexit.c:11 1956@deftypefun int xatexit (void (*@var{fn}) (void)) 1957 1958Behaves as the standard @code{atexit} function, but with no limit on 1959the number of registered functions. Returns 0 on success, or @minus{}1 on 1960failure. If you use @code{xatexit} to register functions, you must use 1961@code{xexit} to terminate your program. 1962 1963@end deftypefun 1964 1965@c xmalloc.c:38 1966@deftypefn Replacement void* xcalloc (size_t @var{nelem}, size_t @var{elsize}) 1967 1968Allocate memory without fail, and set it to zero. This routine functions 1969like @code{calloc}, but will behave the same as @code{xmalloc} if memory 1970cannot be found. 1971 1972@end deftypefn 1973 1974@c xexit.c:22 1975@deftypefn Replacement void xexit (int @var{code}) 1976 1977Terminates the program. If any functions have been registered with 1978the @code{xatexit} replacement function, they will be called first. 1979Termination is handled via the system's normal @code{exit} call. 1980 1981@end deftypefn 1982 1983@c xmalloc.c:22 1984@deftypefn Replacement void* xmalloc (size_t) 1985 1986Allocate memory without fail. If @code{malloc} fails, this will print 1987a message to @code{stderr} (using the name set by 1988@code{xmalloc_set_program_name}, 1989if any) and then call @code{xexit}. Note that it is therefore safe for 1990a program to contain @code{#define malloc xmalloc} in its source. 1991 1992@end deftypefn 1993 1994@c xmalloc.c:53 1995@deftypefn Replacement void xmalloc_failed (size_t) 1996 1997This function is not meant to be called by client code, and is listed 1998here for completeness only. If any of the allocation routines fail, this 1999function will be called to print an error message and terminate execution. 2000 2001@end deftypefn 2002 2003@c xmalloc.c:46 2004@deftypefn Replacement void xmalloc_set_program_name (const char *@var{name}) 2005 2006You can use this to set the name of the program used by 2007@code{xmalloc_failed} when printing a failure message. 2008 2009@end deftypefn 2010 2011@c xmemdup.c:7 2012@deftypefn Replacement void* xmemdup (void *@var{input}, @ 2013 size_t @var{copy_size}, size_t @var{alloc_size}) 2014 2015Duplicates a region of memory without fail. First, @var{alloc_size} bytes 2016are allocated, then @var{copy_size} bytes from @var{input} are copied into 2017it, and the new memory is returned. If fewer bytes are copied than were 2018allocated, the remaining memory is zeroed. 2019 2020@end deftypefn 2021 2022@c xmalloc.c:32 2023@deftypefn Replacement void* xrealloc (void *@var{ptr}, size_t @var{size}) 2024Reallocate memory without fail. This routine functions like @code{realloc}, 2025but will behave the same as @code{xmalloc} if memory cannot be found. 2026 2027@end deftypefn 2028 2029@c xstrdup.c:7 2030@deftypefn Replacement char* xstrdup (const char *@var{s}) 2031 2032Duplicates a character string without fail, using @code{xmalloc} to 2033obtain memory. 2034 2035@end deftypefn 2036 2037@c xstrerror.c:7 2038@deftypefn Replacement char* xstrerror (int @var{errnum}) 2039 2040Behaves exactly like the standard @code{strerror} function, but 2041will never return a @code{NULL} pointer. 2042 2043@end deftypefn 2044 2045@c xstrndup.c:23 2046@deftypefn Replacement char* xstrndup (const char *@var{s}, size_t @var{n}) 2047 2048Returns a pointer to a copy of @var{s} with at most @var{n} characters 2049without fail, using @code{xmalloc} to obtain memory. The result is 2050always NUL terminated. 2051 2052@end deftypefn 2053 2054@c xvasprintf.c:38 2055@deftypefn Replacement char* xvasprintf (const char *@var{format}, va_list @var{args}) 2056 2057Print to allocated string without fail. If @code{xvasprintf} fails, 2058this will print a message to @code{stderr} (using the name set by 2059@code{xmalloc_set_program_name}, if any) and then call @code{xexit}. 2060 2061@end deftypefn 2062 2063 2064