libiberty.h revision 1.2
1/* Function declarations for libiberty. 2 Written by Cygnus Support, 1994. 3 4 The libiberty library provides a number of functions which are 5 missing on some operating systems. We do not declare those here, 6 to avoid conflicts with the system header files on operating 7 systems that do support those functions. In this file we only 8 declare those functions which are specific to libiberty. */ 9 10#ifndef LIBIBERTY_H 11#define LIBIBERTY_H 12 13#include "ansidecl.h" 14 15/* Build an argument vector from a string. Allocates memory using 16 malloc. Use freeargv to free the vector. */ 17 18extern char **buildargv PARAMS ((char *)); 19 20/* Free a vector returned by buildargv. */ 21 22extern void freeargv PARAMS ((char **)); 23 24/* Return the last component of a path name. */ 25 26extern char *basename (); 27 28/* Concatenate an arbitrary number of strings, up to (char *) NULL. 29 Allocates memory using xmalloc. */ 30 31extern char *concat PARAMS ((const char *, ...)); 32 33/* Check whether two file descriptors refer to the same file. */ 34 35extern int fdmatch PARAMS ((int fd1, int fd2)); 36 37/* Get the amount of time the process has run, in microseconds. */ 38 39extern long get_run_time PARAMS ((void)); 40 41/* Choose a temporary directory to use for scratch files. */ 42 43extern char *choose_temp_base PARAMS ((void)); 44 45/* Allocate memory filled with spaces. Allocates using malloc. */ 46 47extern const char *spaces PARAMS ((int count)); 48 49/* Return the maximum error number for which strerror will return a 50 string. */ 51 52extern int errno_max PARAMS ((void)); 53 54/* Return the name of an errno value (e.g., strerrno (EINVAL) returns 55 "EINVAL"). */ 56 57extern const char *strerrno PARAMS ((int)); 58 59/* Given the name of an errno value, return the value. */ 60 61extern int strtoerrno PARAMS ((const char *)); 62 63/* ANSI's strerror(), but more robust. */ 64 65extern char *xstrerror PARAMS ((int)); 66 67/* Return the maximum signal number for which strsignal will return a 68 string. */ 69 70extern int signo_max PARAMS ((void)); 71 72/* Return a signal message string for a signal number 73 (e.g., strsignal (SIGHUP) returns something like "Hangup"). */ 74/* This is commented out as it can conflict with one in system headers. 75 We still document its existence though. */ 76 77/*extern const char *strsignal PARAMS ((int));*/ 78 79/* Return the name of a signal number (e.g., strsigno (SIGHUP) returns 80 "SIGHUP"). */ 81 82extern const char *strsigno PARAMS ((int)); 83 84/* Given the name of a signal, return its number. */ 85 86extern int strtosigno PARAMS ((const char *)); 87 88/* Register a function to be run by xexit. Returns 0 on success. */ 89 90extern int xatexit PARAMS ((void (*fn) (void))); 91 92/* Exit, calling all the functions registered with xatexit. */ 93 94#ifndef __GNUC__ 95extern void xexit PARAMS ((int status)); 96#else 97typedef void libiberty_voidfn PARAMS ((int status)); 98__volatile__ libiberty_voidfn xexit; 99#endif 100 101/* Set the program name used by xmalloc. */ 102 103extern void xmalloc_set_program_name PARAMS ((const char *)); 104 105/* Allocate memory without fail. If malloc fails, this will print a 106 message to stderr (using the name set by xmalloc_set_program_name, 107 if any) and then call xexit. 108 109 FIXME: We do not declare the parameter type (size_t) in order to 110 avoid conflicts with other declarations of xmalloc that exist in 111 programs which use libiberty. */ 112 113extern PTR xmalloc (); 114 115/* Reallocate memory without fail. This works like xmalloc. 116 117 FIXME: We do not declare the parameter types for the same reason as 118 xmalloc. */ 119 120extern PTR xrealloc (); 121 122/* Copy a string into a memory buffer without fail. */ 123 124extern char *xstrdup PARAMS ((const char *)); 125 126/* hex character manipulation routines */ 127 128#define _hex_array_size 256 129#define _hex_bad 99 130extern char _hex_value[_hex_array_size]; 131extern void hex_init PARAMS ((void)); 132#define hex_p(c) (hex_value (c) != _hex_bad) 133/* If you change this, note well: Some code relies on side effects in 134 the argument being performed exactly once. */ 135#define hex_value(c) (_hex_value[(unsigned char) (c)]) 136 137#endif /* ! defined (LIBIBERTY_H) */ 138