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 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 13 normal circumstances. 14 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. 21 22 @end deftypefn 23 24 @c asprintf.c:32 25 @deftypefn Extension int asprintf (char **@var{resptr}, const char *@var{format}, ...) 26 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 33 @code{*@var{resptr}}. 34 35 @end deftypefn 36 37 @c atexit.c:6 38 @deftypefn Supplemental int atexit (void (*@var{f})()) 39 40 Causes 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 47 Returns a pointer to the last component of pathname @var{name}. 48 Behavior 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 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}). 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 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. 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 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. 84 85 @end deftypefn 86 87 @c argv.c:135 88 @deftypefn Extension char** buildargv (char *@var{sp}) 89 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 95 @code{NULL} element. 96 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. 101 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. 105 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 108 string. 109 110 @end deftypefn 111 112 @c bzero.c:6 113 @deftypefn Supplemental void bzero (char *@var{mem}, int @var{count}) 114 115 Zeros @var{count} bytes starting at @var{mem}. Use of this function 116 is deprecated in favor of @code{memset}. 117 118 @end deftypefn 119 120 @c calloc.c:6 121 @deftypefn Supplemental void* calloc (size_t @var{nelem}, size_t @var{elsize}) 122 123 Uses @code{malloc} to allocate storage for @var{nelem} objects of 124 @var{elsize} bytes each, then zeros the memory. 125 126 @end deftypefn 127 128 @c filename_cmp.c:201 129 @deftypefn Extension int canonical_filename_eq (const char *@var{a}, const char *@var{b}) 130 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. 135 136 @end deftypefn 137 138 @c choose-temp.c:45 139 @deftypefn Extension char* choose_temp_base (void) 140 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}. 145 146 This function is provided for backwards compatibility only. Its use is 147 not recommended. 148 149 @end deftypefn 150 151 @c make-temp-file.c:96 152 @deftypefn Replacement const char* choose_tmpdir () 153 154 Returns a pointer to a directory path suitable for creating temporary 155 files in. 156 157 @end deftypefn 158 159 @c clock.c:27 160 @deftypefn Supplemental long clock (void) 161 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. 165 166 @end deftypefn 167 168 @c concat.c:24 169 @deftypefn Extension char* concat (const char *@var{s1}, const char *@var{s2}, @ 170 @dots{}, @code{NULL}) 171 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. 175 176 @end deftypefn 177 178 @c argv.c:470 179 @deftypefn Extension int countargv (char **@var{argv}) 180 181 Return the number of elements in @var{argv}. 182 Returns zero if @var{argv} is NULL. 183 184 @end deftypefn 185 186 @c crc32.c:141 187 @deftypefn Extension {unsigned int} crc32 (const unsigned char *@var{buf}, @ 188 int @var{len}, unsigned int @var{init}) 189 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. 194 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}. 199 200 This CRC can be specified as: 201 202 Width : 32 203 Poly : 0x04c11db7 204 Init : parameter, typically 0xffffffff 205 RefIn : false 206 RefOut : false 207 XorOut : 0 208 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. 212 213 @end deftypefn 214 215 @c argv.c:52 216 @deftypefn Extension char** dupargv (char **@var{vector}) 217 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 222 argument vector. 223 224 @end deftypefn 225 226 @c strerror.c:567 227 @deftypefn Extension int errno_max (void) 228 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>}. 238 239 We return the maximum value that can be used to obtain a meaningful 240 symbolic name or message. 241 242 @end deftypefn 243 244 @c argv.c:341 245 @deftypefn Extension void expandargv (int *@var{argcp}, char ***@var{argvp}) 246 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. 261 262 @end deftypefn 263 264 @c fdmatch.c:23 265 @deftypefn Extension int fdmatch (int @var{fd1}, int @var{fd2}) 266 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 275 and inode numbers. 276 277 @end deftypefn 278 279 @c fopen_unlocked.c:49 280 @deftypefn Extension {FILE *} fdopen_unlocked (int @var{fildes}, @ 281 const char * @var{mode}) 282 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 286 unchanged. 287 288 @end deftypefn 289 290 @c ffs.c:3 291 @deftypefn Supplemental int ffs (int @var{valu}) 292 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. 296 297 @end deftypefn 298 299 @c filename_cmp.c:37 300 @deftypefn Extension int filename_cmp (const char *@var{s1}, const char *@var{s2}) 301 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 306 @var{s2}. 307 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. 313 314 @end deftypefn 315 316 @c filename_cmp.c:183 317 @deftypefn Extension int filename_eq (const void *@var{s1}, const void *@var{s2}) 318 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. 321 322 @end deftypefn 323 324 @c filename_cmp.c:152 325 @deftypefn Extension hashval_t filename_hash (const void *@var{s}) 326 327 Return the hash value for file name @var{s} that will be compared 328 using filename_cmp. 329 This function is for use with hashtab.c hash tables. 330 331 @end deftypefn 332 333 @c filename_cmp.c:94 334 @deftypefn Extension int filename_ncmp (const char *@var{s1}, const char *@var{s2}, size_t @var{n}) 335 336 Return zero if the two file names @var{s1} and @var{s2} are equivalent 337 in range @var{n}. 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 341 @var{s2}. 342 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. 348 349 @end deftypefn 350 351 @c fnmatch.txh:1 352 @deftypefn Replacement int fnmatch (const char *@var{pattern}, @ 353 const char *@var{string}, int @var{flags}) 354 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{\\}. 369 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 372 @code{<fnmatch.h>}): 373 374 @table @code 375 376 @item FNM_PATHNAME 377 @itemx FNM_FILE_NAME 378 @var{string} is assumed to be a path name. No wildcard will ever match 379 @code{/}. 380 381 @item FNM_NOESCAPE 382 Do not interpret backslashes as quoting the following special character. 383 384 @item FNM_PERIOD 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. 388 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}. 394 395 @item FNM_CASEFOLD 396 Ignores case when performing the comparison. 397 398 @end table 399 400 @end deftypefn 401 402 @c fopen_unlocked.c:39 403 @deftypefn Extension {FILE *} fopen_unlocked (const char *@var{path}, @ 404 const char * @var{mode}) 405 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 409 unchanged. 410 411 @end deftypefn 412 413 @c argv.c:90 414 @deftypefn Extension void freeargv (char **@var{vector}) 415 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} 419 itself. 420 421 @end deftypefn 422 423 @c fopen_unlocked.c:59 424 @deftypefn Extension {FILE *} freopen_unlocked (const char * @var{path}, @ 425 const char * @var{mode}, FILE * @var{stream}) 426 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 430 unchanged. 431 432 @end deftypefn 433 434 @c getruntime.c:82 435 @deftypefn Replacement long get_run_time (void) 436 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 439 process started. 440 441 @end deftypefn 442 443 @c getcwd.c:6 444 @deftypefn Supplemental char* getcwd (char *@var{pathname}, int @var{len}) 445 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 452 @code{malloc}. 453 454 @end deftypefn 455 456 @c getpagesize.c:5 457 @deftypefn Supplemental int getpagesize (void) 458 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. 463 464 @end deftypefn 465 466 @c getpwd.c:5 467 @deftypefn Supplemental char* getpwd (void) 468 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}. 472 473 @end deftypefn 474 475 @c gettimeofday.c:12 476 @deftypefn Supplemental int gettimeofday (struct timeval *@var{tp}, void *@var{tz}) 477 478 Writes the current time to @var{tp}. This implementation requires 479 that @var{tz} be NULL. Returns 0 on success, -1 on failure. 480 481 @end deftypefn 482 483 @c hex.c:33 484 @deftypefn Extension void hex_init (void) 485 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. 490 491 @end deftypefn 492 493 @c hex.c:42 494 @deftypefn Extension int hex_p (int @var{c}) 495 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. 499 500 @end deftypefn 501 502 @c hex.c:50 503 @deftypefn Extension {unsigned int} hex_value (int @var{c}) 504 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. 509 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 514 systems. 515 516 @end deftypefn 517 518 @c safe-ctype.c:25 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: 525 526 @ftable @code 527 @item HOST_CHARSET_UNKNOWN 528 The host character set is unknown - that is, not one of the next two 529 possibilities. 530 531 @item HOST_CHARSET_ASCII 532 The host character set is ASCII. 533 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.) 537 @end ftable 538 @end defvr 539 540 @c hashtab.c:328 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}) 545 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. 550 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 554 allocation fails. 555 556 @end deftypefn 557 558 @c index.c:5 559 @deftypefn Supplemental char* index (char *@var{s}, int @var{c}) 560 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}. 564 565 @end deftypefn 566 567 @c insque.c:6 568 @deftypefn Supplemental void insque (struct qelem *@var{elem}, @ 569 struct qelem *@var{pred}) 570 @deftypefnx Supplemental void remque (struct qelem *@var{elem}) 571 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): 578 579 @example 580 struct qelem @{ 581 struct qelem *q_forw; 582 struct qelem *q_back; 583 char q_data[]; 584 @}; 585 @end example 586 587 @end deftypefn 588 589 @c safe-ctype.c:46 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}) 602 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}: 609 610 @itemize @bullet 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 613 for @code{EOF}. 614 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} 630 @end multitable 631 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. 636 @end itemize 637 @end deffn 638 639 @c safe-ctype.c:95 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 649 sets of characters: 650 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} 658 @end multitable 659 @end deffn 660 661 @c lbasename.c:23 662 @deftypefn Replacement {const char*} lbasename (const char *@var{name}) 663 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. 671 672 In particular, the empty string returns the same empty string, 673 and a path ending in @code{/} returns the empty string after it. 674 675 @end deftypefn 676 677 @c lrealpath.c:25 678 @deftypefn Replacement {const char*} lrealpath (const char *@var{name}) 679 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. 684 685 @end deftypefn 686 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}) 690 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}. 697 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. 702 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/}. 707 708 The return value is normally allocated via @code{malloc}. If no 709 relative prefix can be found, return @code{NULL}. 710 711 @end deftypefn 712 713 @c make-temp-file.c:174 714 @deftypefn Replacement char* make_temp_file (const char *@var{suffix}) 715 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. 719 720 @end deftypefn 721 722 @c memchr.c:3 723 @deftypefn Supplemental void* memchr (const void *@var{s}, int @var{c}, @ 724 size_t @var{n}) 725 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 732 returned. 733 734 @end deftypefn 735 736 @c memcmp.c:6 737 @deftypefn Supplemental int memcmp (const void *@var{x}, const void *@var{y}, @ 738 size_t @var{count}) 739 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. 745 746 @end deftypefn 747 748 @c memcpy.c:6 749 @deftypefn Supplemental void* memcpy (void *@var{out}, const void *@var{in}, @ 750 size_t @var{length}) 751 752 Copies @var{length} bytes from memory region @var{in} to region 753 @var{out}. Returns a pointer to @var{out}. 754 755 @end deftypefn 756 757 @c memmem.c:20 758 @deftypefn Supplemental void* memmem (const void *@var{haystack}, @ 759 size_t @var{haystack_len} const void *@var{needle}, size_t @var{needle_len}) 760 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. 764 765 @end deftypefn 766 767 @c memmove.c:6 768 @deftypefn Supplemental void* memmove (void *@var{from}, const void *@var{to}, @ 769 size_t @var{count}) 770 771 Copies @var{count} bytes from memory area @var{from} to memory area 772 @var{to}, returning a pointer to @var{to}. 773 774 @end deftypefn 775 776 @c mempcpy.c:23 777 @deftypefn Supplemental void* mempcpy (void *@var{out}, const void *@var{in}, @ 778 size_t @var{length}) 779 780 Copies @var{length} bytes from memory region @var{in} to region 781 @var{out}. Returns a pointer to @var{out} + @var{length}. 782 783 @end deftypefn 784 785 @c memset.c:6 786 @deftypefn Supplemental void* memset (void *@var{s}, int @var{c}, @ 787 size_t @var{count}) 788 789 Sets the first @var{count} bytes of @var{s} to the constant byte 790 @var{c}, returning a pointer to @var{s}. 791 792 @end deftypefn 793 794 @c mkstemps.c:58 795 @deftypefn Replacement int mkstemps (char *@var{pattern}, int @var{suffix_len}) 796 797 Generate a unique temporary file name from @var{pattern}. 798 @var{pattern} has the form: 799 800 @example 801 @var{path}/ccXXXXXX@var{suffix} 802 @end example 803 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 808 reading and writing. 809 810 @end deftypefn 811 812 @c pexecute.txh:278 813 @deftypefn Extension void pex_free (struct pex_obj @var{obj}) 814 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. 818 819 @end deftypefn 820 821 @c pexecute.txh:251 822 @deftypefn Extension int pex_get_status (struct pex_obj *@var{obj}, @ 823 int @var{count}, int *@var{vector}) 824 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. 829 830 @end deftypefn 831 832 @c pexecute.txh:261 833 @deftypefn Extension int pex_get_times (struct pex_obj *@var{obj}, @ 834 int @var{count}, struct pex_time *@var{vector}) 835 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 840 success. 841 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}. 847 848 @end deftypefn 849 850 @c pexecute.txh:2 851 @deftypefn Extension {struct pex_obj *} pex_init (int @var{flags}, @ 852 const char *@var{pname}, const char *@var{tempbase}) 853 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. 857 858 @var{flags} is a bitwise combination of the following: 859 860 @table @code 861 862 @vindex PEX_RECORD_TIMES 863 @item PEX_RECORD_TIMES 864 Record subprocess times if possible. 865 866 @vindex PEX_USE_PIPES 867 @item PEX_USE_PIPES 868 Use pipes for communication between processes, if possible. 869 870 @vindex PEX_SAVE_TEMPS 871 @item PEX_SAVE_TEMPS 872 Don't delete temporary files used for communication between 873 processes. 874 875 @end table 876 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. 880 881 @end deftypefn 882 883 @c pexecute.txh:161 884 @deftypefn Extension {FILE *} pex_input_file (struct pex_obj *@var{obj}, @ 885 int @var{flags}, const char *@var{in_name}) 886 887 Return a stream for a temporary file to pass to the first program in 888 the pipeline as input. 889 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}. 893 894 Don't call @code{fclose} on the returned stream; the first call to 895 @code{pex_run} closes it automatically. 896 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. 900 @end deftypefn 901 902 @c pexecute.txh:179 903 @deftypefn Extension {FILE *} pex_input_pipe (struct pex_obj *@var{obj}, @ 904 int @var{binary}) 905 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}. 910 911 You must close @var{fp} using @code{fclose} yourself when you have 912 finished writing data to the pipeline. 913 914 The file descriptor underlying @var{fp} is marked not to be inherited 915 by child processes. 916 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. 921 922 There are two opportunities for deadlock using 923 @code{pex_input_pipe}: 924 925 @itemize @bullet 926 @item 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. 935 936 @item 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. 943 944 @end itemize 945 946 @end deftypefn 947 948 @c pexecute.txh:286 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}) 953 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. 961 962 @end deftypefn 963 964 @c pexecute.txh:237 965 @deftypefn Extension {FILE *} pex_read_err (struct pex_obj *@var{obj}, @ 966 int @var{binary}) 967 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}. 975 976 @end deftypefn 977 978 @c pexecute.txh:224 979 @deftypefn Extension {FILE *} pex_read_output (struct pex_obj *@var{obj}, @ 980 int @var{binary}) 981 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}. 989 990 @end deftypefn 991 992 @c pexecute.txh:34 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}) 996 997 Execute one program in a pipeline. On success this returns 998 @code{NULL}. On failure it returns an error message, a statically 999 allocated string. 1000 1001 @var{obj} is returned by a previous call to @code{pex_init}. 1002 1003 @var{flags} is a bitwise combination of the following: 1004 1005 @table @code 1006 1007 @vindex PEX_LAST 1008 @item PEX_LAST 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}. 1016 1017 @vindex PEX_SEARCH 1018 @item PEX_SEARCH 1019 Search for the program using the user's executable search path. 1020 1021 @vindex PEX_SUFFIX 1022 @item PEX_SUFFIX 1023 @var{outname} is a suffix. See the description of @var{outname}, 1024 below. 1025 1026 @vindex PEX_STDERR_TO_STDOUT 1027 @item PEX_STDERR_TO_STDOUT 1028 Send the program's standard error to standard output, if possible. 1029 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}. 1042 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. 1048 1049 @end table 1050 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}. 1054 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: 1057 1058 @enumerate 1059 @item 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 1062 1063 @item 1064 if @code{PEX_LAST} is set in @var{flags}, and @var{outname} is 1065 @code{NULL} 1066 @end enumerate 1067 1068 @noindent 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}. 1073 1074 There are two cases to consider when setting the name of the file to 1075 hold standard output. 1076 1077 @enumerate 1078 @item 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}. 1085 1086 @item 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 1092 at random. 1093 @end enumerate 1094 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. 1098 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}. 1101 1102 @end deftypefn 1103 1104 @c pexecute.txh:145 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}) 1109 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}. 1113 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 1117 @code{NULL}. 1118 1119 @end deftypefn 1120 1121 @c pexecute.txh:301 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}) 1126 1127 This is the old interface to execute one or more programs. It is 1128 still supported for compatibility purposes, but is no longer 1129 documented. 1130 1131 @end deftypefn 1132 1133 @c strsignal.c:541 1134 @deftypefn Supplemental void psignal (int @var{signo}, char *@var{message}) 1135 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. 1139 1140 @end deftypefn 1141 1142 @c putenv.c:21 1143 @deftypefn Supplemental int putenv (const char *@var{string}) 1144 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. 1149 1150 @end deftypefn 1151 1152 @c pexecute.txh:312 1153 @deftypefn Extension int pwait (int @var{pid}, int *@var{status}, int @var{flags}) 1154 1155 Another part of the old execution interface. 1156 1157 @end deftypefn 1158 1159 @c random.c:39 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}) 1165 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. 1172 1173 @end deftypefn 1174 1175 @c concat.c:160 1176 @deftypefn Extension char* reconcat (char *@var{optr}, const char *@var{s1}, @ 1177 @dots{}, @code{NULL}) 1178 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 1182 loop: 1183 1184 @example 1185 str = reconcat (str, "pre-", str, NULL); 1186 @end example 1187 1188 @end deftypefn 1189 1190 @c rename.c:6 1191 @deftypefn Supplemental int rename (const char *@var{old}, const char *@var{new}) 1192 1193 Renames a file from @var{old} to @var{new}. If @var{new} already 1194 exists, it is removed. 1195 1196 @end deftypefn 1197 1198 @c rindex.c:5 1199 @deftypefn Supplemental char* rindex (const char *@var{s}, int @var{c}) 1200 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}. 1204 1205 @end deftypefn 1206 1207 @c setenv.c:23 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}) 1211 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. 1217 1218 @end deftypefn 1219 1220 @c setproctitle.c:31 1221 @deftypefn Supplemental void setproctitle (const char *@var{fmt}, ...) 1222 1223 Set the title of a process to @var{fmt}. va args not supported for now, 1224 but defined for compatibility with BSD. 1225 1226 @end deftypefn 1227 1228 @c strsignal.c:348 1229 @deftypefn Extension int signo_max (void) 1230 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>}. 1240 1241 We return the maximum value that can be used to obtain a meaningful 1242 symbolic name or message. 1243 1244 @end deftypefn 1245 1246 @c sigsetmask.c:8 1247 @deftypefn Supplemental int sigsetmask (int @var{set}) 1248 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}). 1252 1253 @end deftypefn 1254 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}, @ 1258 int *@var{err}) 1259 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. 1264 1265 @end deftypefn 1266 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}) 1270 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. 1276 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. 1280 1281 @end deftypefn 1282 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}) 1287 1288 Look for the section @var{name} in @var{simple_object}. This returns 1289 information for the first section with that name. 1290 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}. 1296 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}. 1300 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 1304 relevant errno. 1305 1306 @end deftypefn 1307 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}) 1313 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}. 1320 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. 1324 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. 1328 1329 @end deftypefn 1330 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}) 1335 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. 1339 1340 @var{descriptor} holds a file descriptor which permits reading. 1341 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 1344 in an archive file. 1345 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. 1350 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. 1354 1355 @end deftypefn 1356 1357 @c simple-object.txh:107 1358 @deftypefn Extension {void} simple_object_release_attributes @ 1359 (simple_object_attributes *@var{attrs}) 1360 1361 Release all resources associated with @var{attrs}. 1362 1363 @end deftypefn 1364 1365 @c simple-object.txh:73 1366 @deftypefn Extension {void} simple_object_release_read @ 1367 (simple_object_read *@var{simple_object}) 1368 1369 Release all resources associated with @var{simple_object}. This does 1370 not close the file descriptor. 1371 1372 @end deftypefn 1373 1374 @c simple-object.txh:184 1375 @deftypefn Extension {void} simple_object_release_write @ 1376 (simple_object_write *@var{simple_object}) 1377 1378 Release all resources associated with @var{simple_object}. 1379 1380 @end deftypefn 1381 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}) 1386 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. 1391 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. 1396 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. 1400 1401 @end deftypefn 1402 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}) 1408 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 1413 released. 1414 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 1417 no relevant erro. 1418 1419 @end deftypefn 1420 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}) 1425 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 1429 boundary). 1430 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. 1434 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. 1438 1439 @end deftypefn 1440 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}) 1444 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}. 1449 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. 1453 1454 @end deftypefn 1455 1456 @c snprintf.c:28 1457 @deftypefn Supplemental int snprintf (char *@var{buf}, size_t @var{n}, @ 1458 const char *@var{format}, ...) 1459 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. 1469 1470 @end deftypefn 1471 1472 @c spaces.c:22 1473 @deftypefn Extension char* spaces (int @var{count}) 1474 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. 1478 1479 @end deftypefn 1480 1481 @c splay-tree.c:303 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}) 1490 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. 1495 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 1498 deallocate values. 1499 1500 @end deftypefn 1501 1502 @c stack-limit.c:28 1503 @deftypefn Extension void stack_limit_increase (unsigned long @var{pref}) 1504 1505 Attempt to increase stack size limit to @var{pref} bytes if possible. 1506 1507 @end deftypefn 1508 1509 @c stpcpy.c:23 1510 @deftypefn Supplemental char* stpcpy (char *@var{dst}, const char *@var{src}) 1511 1512 Copies the string @var{src} into @var{dst}. Returns a pointer to 1513 @var{dst} + strlen(@var{src}). 1514 1515 @end deftypefn 1516 1517 @c stpncpy.c:23 1518 @deftypefn Supplemental char* stpncpy (char *@var{dst}, const char *@var{src}, @ 1519 size_t @var{len}) 1520 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} + 1524 strlen(@var{src}). 1525 1526 @end deftypefn 1527 1528 @c strcasecmp.c:15 1529 @deftypefn Supplemental int strcasecmp (const char *@var{s1}, const char *@var{s2}) 1530 1531 A case-insensitive @code{strcmp}. 1532 1533 @end deftypefn 1534 1535 @c strchr.c:6 1536 @deftypefn Supplemental char* strchr (const char *@var{s}, int @var{c}) 1537 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. 1541 1542 @end deftypefn 1543 1544 @c strdup.c:3 1545 @deftypefn Supplemental char* strdup (const char *@var{s}) 1546 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. 1549 1550 @end deftypefn 1551 1552 @c strerror.c:670 1553 @deftypefn Replacement {const char*} strerrno (int @var{errnum}) 1554 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>}. 1558 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. 1563 1564 If the supplied error number is not within the range of valid 1565 indices, then returns @code{NULL}. 1566 1567 The contents of the location pointed to are only guaranteed to be 1568 valid until the next call to @code{strerrno}. 1569 1570 @end deftypefn 1571 1572 @c strerror.c:603 1573 @deftypefn Supplemental char* strerror (int @var{errnoval}) 1574 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}. 1579 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. 1584 1585 If the supplied error number is not a valid index into 1586 @code{sys_errlist}, returns @code{NULL}. 1587 1588 The returned string is only guaranteed to be valid only until the 1589 next call to @code{strerror}. 1590 1591 @end deftypefn 1592 1593 @c strncasecmp.c:15 1594 @deftypefn Supplemental int strncasecmp (const char *@var{s1}, const char *@var{s2}) 1595 1596 A case-insensitive @code{strncmp}. 1597 1598 @end deftypefn 1599 1600 @c strncmp.c:6 1601 @deftypefn Supplemental int strncmp (const char *@var{s1}, @ 1602 const char *@var{s2}, size_t @var{n}) 1603 1604 Compares the first @var{n} bytes of two strings, returning a value as 1605 @code{strcmp}. 1606 1607 @end deftypefn 1608 1609 @c strndup.c:23 1610 @deftypefn Extension char* strndup (const char *@var{s}, size_t @var{n}) 1611 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. 1615 1616 @end deftypefn 1617 1618 @c strnlen.c:6 1619 @deftypefn Supplemental size_t strnlen (const char *@var{s}, size_t @var{maxlen}) 1620 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 1624 @var{maxlen}. 1625 1626 @end deftypefn 1627 1628 @c strrchr.c:6 1629 @deftypefn Supplemental char* strrchr (const char *@var{s}, int @var{c}) 1630 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. 1634 1635 @end deftypefn 1636 1637 @c strsignal.c:383 1638 @deftypefn Supplemental {const char *} strsignal (int @var{signo}) 1639 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()}. 1644 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. 1649 1650 If the supplied signal number is not a valid index into 1651 @code{sys_siglist}, returns @code{NULL}. 1652 1653 The returned string is only guaranteed to be valid only until the next 1654 call to @code{strsignal}. 1655 1656 @end deftypefn 1657 1658 @c strsignal.c:448 1659 @deftypefn Extension {const char*} strsigno (int @var{signo}) 1660 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>}. 1663 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. 1668 1669 If the supplied signal number is not within the range of valid 1670 indices, then returns @code{NULL}. 1671 1672 The contents of the location pointed to are only guaranteed to be 1673 valid until the next call to @code{strsigno}. 1674 1675 @end deftypefn 1676 1677 @c strstr.c:6 1678 @deftypefn Supplemental char* strstr (const char *@var{string}, const char *@var{sub}) 1679 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}. 1685 1686 @end deftypefn 1687 1688 @c strtod.c:27 1689 @deftypefn Supplemental double strtod (const char *@var{string}, @ 1690 char **@var{endptr}) 1691 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}. 1698 1699 @end deftypefn 1700 1701 @c strerror.c:729 1702 @deftypefn Extension int strtoerrno (const char *@var{name}) 1703 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. 1706 1707 @end deftypefn 1708 1709 @c strtol.c:33 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}) 1714 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. 1724 1725 @end deftypefn 1726 1727 @c strtoll.c:33 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}) 1732 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. 1742 1743 @end deftypefn 1744 1745 @c strsignal.c:502 1746 @deftypefn Extension int strtosigno (const char *@var{name}) 1747 1748 Given the symbolic name of a signal, map it to a signal number. If no 1749 translation is found, returns 0. 1750 1751 @end deftypefn 1752 1753 @c strverscmp.c:25 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}. 1760 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: 1768 1769 @itemize @bullet 1770 @item 1771 integral/integral: we compare values as you would expect. 1772 1773 @item 1774 fractional/integral: the fractional part is less than the integral one. 1775 Again, no surprise. 1776 1777 @item 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. 1781 @end itemize 1782 1783 @smallexample 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.} 1794 @end smallexample 1795 1796 This function is especially useful when dealing with filename sorting, 1797 because filenames frequently hold indices/version numbers. 1798 @end deftypefun 1799 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}) 1803 1804 Adds @var{a} to @var{b} and stores the result in @var{result}. 1805 1806 @end deftypefn 1807 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}) 1811 1812 Subtracts @var{b} from @var{a} and stores the result in @var{result}. 1813 1814 @end deftypefn 1815 1816 @c tmpnam.c:3 1817 @deftypefn Supplemental char* tmpnam (char *@var{s}) 1818 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. 1824 1825 @end deftypefn 1826 1827 @c unlink-if-ordinary.c:27 1828 @deftypefn Supplemental int unlink_if_ordinary (const char*) 1829 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. 1834 1835 @end deftypefn 1836 1837 @c fopen_unlocked.c:31 1838 @deftypefn Extension void unlock_std_streams (void) 1839 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. 1843 1844 @end deftypefn 1845 1846 @c fopen_unlocked.c:23 1847 @deftypefn Extension void unlock_stream (FILE * @var{stream}) 1848 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. 1852 1853 @end deftypefn 1854 1855 @c vasprintf.c:47 1856 @deftypefn Extension int vasprintf (char **@var{resptr}, @ 1857 const char *@var{format}, va_list @var{args}) 1858 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}}. 1866 1867 @end deftypefn 1868 1869 @c vfork.c:6 1870 @deftypefn Supplemental int vfork (void) 1871 1872 Emulates @code{vfork} by calling @code{fork} and returning its value. 1873 1874 @end deftypefn 1875 1876 @c vprintf.c:3 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}) 1882 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}. 1889 1890 @end deftypefn 1891 1892 @c vsnprintf.c:28 1893 @deftypefn Supplemental int vsnprintf (char *@var{buf}, size_t @var{n}, @ 1894 const char *@var{format}, va_list @var{ap}) 1895 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 1904 used. 1905 1906 @end deftypefn 1907 1908 @c waitpid.c:3 1909 @deftypefn Supplemental int waitpid (int @var{pid}, int *@var{status}, int) 1910 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{}. 1914 1915 @end deftypefn 1916 1917 @c argv.c:286 1918 @deftypefn Extension int writeargv (const char **@var{argv}, FILE *@var{file}) 1919 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. 1923 1924 @end deftypefn 1925 1926 @c xatexit.c:11 1927 @deftypefun int xatexit (void (*@var{fn}) (void)) 1928 1929 Behaves as the standard @code{atexit} function, but with no limit on 1930 the number of registered functions. Returns 0 on success, or @minus{}1 on 1931 failure. If you use @code{xatexit} to register functions, you must use 1932 @code{xexit} to terminate your program. 1933 1934 @end deftypefun 1935 1936 @c xmalloc.c:38 1937 @deftypefn Replacement void* xcalloc (size_t @var{nelem}, size_t @var{elsize}) 1938 1939 Allocate memory without fail, and set it to zero. This routine functions 1940 like @code{calloc}, but will behave the same as @code{xmalloc} if memory 1941 cannot be found. 1942 1943 @end deftypefn 1944 1945 @c xexit.c:22 1946 @deftypefn Replacement void xexit (int @var{code}) 1947 1948 Terminates the program. If any functions have been registered with 1949 the @code{xatexit} replacement function, they will be called first. 1950 Termination is handled via the system's normal @code{exit} call. 1951 1952 @end deftypefn 1953 1954 @c xmalloc.c:22 1955 @deftypefn Replacement void* xmalloc (size_t) 1956 1957 Allocate memory without fail. If @code{malloc} fails, this will print 1958 a message to @code{stderr} (using the name set by 1959 @code{xmalloc_set_program_name}, 1960 if any) and then call @code{xexit}. Note that it is therefore safe for 1961 a program to contain @code{#define malloc xmalloc} in its source. 1962 1963 @end deftypefn 1964 1965 @c xmalloc.c:53 1966 @deftypefn Replacement void xmalloc_failed (size_t) 1967 1968 This function is not meant to be called by client code, and is listed 1969 here for completeness only. If any of the allocation routines fail, this 1970 function will be called to print an error message and terminate execution. 1971 1972 @end deftypefn 1973 1974 @c xmalloc.c:46 1975 @deftypefn Replacement void xmalloc_set_program_name (const char *@var{name}) 1976 1977 You can use this to set the name of the program used by 1978 @code{xmalloc_failed} when printing a failure message. 1979 1980 @end deftypefn 1981 1982 @c xmemdup.c:7 1983 @deftypefn Replacement void* xmemdup (void *@var{input}, @ 1984 size_t @var{copy_size}, size_t @var{alloc_size}) 1985 1986 Duplicates a region of memory without fail. First, @var{alloc_size} bytes 1987 are allocated, then @var{copy_size} bytes from @var{input} are copied into 1988 it, and the new memory is returned. If fewer bytes are copied than were 1989 allocated, the remaining memory is zeroed. 1990 1991 @end deftypefn 1992 1993 @c xmalloc.c:32 1994 @deftypefn Replacement void* xrealloc (void *@var{ptr}, size_t @var{size}) 1995 Reallocate memory without fail. This routine functions like @code{realloc}, 1996 but will behave the same as @code{xmalloc} if memory cannot be found. 1997 1998 @end deftypefn 1999 2000 @c xstrdup.c:7 2001 @deftypefn Replacement char* xstrdup (const char *@var{s}) 2002 2003 Duplicates a character string without fail, using @code{xmalloc} to 2004 obtain memory. 2005 2006 @end deftypefn 2007 2008 @c xstrerror.c:7 2009 @deftypefn Replacement char* xstrerror (int @var{errnum}) 2010 2011 Behaves exactly like the standard @code{strerror} function, but 2012 will never return a @code{NULL} pointer. 2013 2014 @end deftypefn 2015 2016 @c xstrndup.c:23 2017 @deftypefn Replacement char* xstrndup (const char *@var{s}, size_t @var{n}) 2018 2019 Returns a pointer to a copy of @var{s} with at most @var{n} characters 2020 without fail, using @code{xmalloc} to obtain memory. The result is 2021 always NUL terminated. 2022 2023 @end deftypefn 2024 2025 2026