diff options
Diffstat (limited to 'gnu/usr.bin/ld/etc.c')
| -rw-r--r-- | gnu/usr.bin/ld/etc.c | 153 |
1 files changed, 34 insertions, 119 deletions
diff --git a/gnu/usr.bin/ld/etc.c b/gnu/usr.bin/ld/etc.c index 27e2c5661895..b33db7618eda 100644 --- a/gnu/usr.bin/ld/etc.c +++ b/gnu/usr.bin/ld/etc.c @@ -1,151 +1,66 @@ /* - * $Id: etc.c,v 1.7 1994/02/13 20:41:05 jkh Exp $ + * $Id: etc.c,v 1.8 1994/06/15 22:39:32 rich Exp $ */ -#include <sys/param.h> -#include <stdio.h> +#include <err.h> #include <stdlib.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/file.h> -#include <sys/time.h> -#include <fcntl.h> -#include <ar.h> -#include <ranlib.h> -#include <a.out.h> -#include <stab.h> #include <string.h> -#if __STDC__ -#include <stdarg.h> -#else -#include <varargs.h> -#endif - -#include "ld.h" /* - * Report a nonfatal error. + * Like malloc but get fatal error if memory is exhausted. */ - -void -#if __STDC__ -error(char *fmt, ...) -#else -error(fmt, va_alist) - char *fmt; - va_dcl -#endif +void * +xmalloc(size) + size_t size; { - va_list ap; -#if __STDC__ - va_start(ap, fmt); -#else - va_start(ap); -#endif - (void)fprintf(stderr, "%s: ", progname); - (void)vfprintf(stderr, fmt, ap); - (void)fprintf(stderr, "\n"); - va_end(ap); + register void *result = (void *)malloc(size); + + if (!result) + errx(1, "virtual memory exhausted"); + + return result; } -void (*fatal_cleanup_hook)__P((void)); /* - * Report a fatal error. + * Like realloc but get fatal error if memory is exhausted. */ - -void -#if __STDC__ -fatal(char *fmt, ...) -#else -fatal(fmt, va_alist) - char *fmt; - va_dcl -#endif +void * +xrealloc(ptr, size) + void *ptr; + size_t size; { - va_list ap; -#if __STDC__ - va_start(ap, fmt); -#else - va_start(ap); -#endif - (void)fprintf(stderr, "%s: ", progname); - (void)vfprintf(stderr, fmt, ap); - (void)fprintf(stderr, "\n"); - va_end(ap); + register void *result; - if (fatal_cleanup_hook) - (*fatal_cleanup_hook)(); - exit(1); -} + if (ptr == NULL) + result = (void *)malloc(size); + else + result = (void *)realloc(ptr, size); + if (!result) + errx(1, "virtual memory exhausted"); + + return result; +} /* * Return a newly-allocated string whose contents concatenate * the strings S1, S2, S3. */ - char * concat(s1, s2, s3) const char *s1, *s2, *s3; { - register int len1 = strlen (s1), - len2 = strlen (s2), - len3 = strlen (s3); + register int len1 = strlen(s1), + len2 = strlen(s2), + len3 = strlen(s3); - register char *result = (char *) xmalloc (len1 + len2 + len3 + 1); + register char *result = (char *)xmalloc(len1 + len2 + len3 + 1); - strcpy (result, s1); - strcpy (result + len1, s2); - strcpy (result + len1 + len2, s3); + strcpy(result, s1); + strcpy(result + len1, s2); + strcpy(result + len1 + len2, s3); result[len1 + len2 + len3] = 0; return result; } -/* Parse the string ARG using scanf format FORMAT, and return the result. - If it does not parse, report fatal error - generating the error message using format string ERROR and ARG as arg. */ - -int -parse(arg, format, error) - char *arg, *format, *error; -{ - int x; - if (1 != sscanf (arg, format, &x)) - fatal (error, arg); - return x; -} - -/* Like malloc but get fatal error if memory is exhausted. */ - -void * -xmalloc(size) - int size; -{ - register void *result = (void *)malloc (size); - - if (!result) - fatal ("virtual memory exhausted", 0); - - return result; -} - -/* Like realloc but get fatal error if memory is exhausted. */ - -void * -xrealloc(ptr, size) - void *ptr; - int size; -{ - register void *result; - - if (ptr == NULL) - result = (void *)malloc (size); - else - result = (void *)realloc (ptr, size); - - if (!result) - fatal ("virtual memory exhausted", 0); - - return result; -} |
