1 /* $NetBSD: rtldenv.h,v 1.12 2013/05/06 08:02:20 skrll Exp $ */ 2 3 /* 4 * Copyright 1996 Matt Thomas <matt@3am-software.com> 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 3. The name of the author may not be used to endorse or promote products 16 * derived from this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 19 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 */ 29 30 #ifndef _RTLDENV_H 31 #define _RTLDENV_H 32 33 #include <stddef.h> 34 #include <stdarg.h> 35 36 void *xcalloc(size_t); 37 void *xmalloc(size_t); 38 void *xrealloc(void *, size_t); 39 char *xstrdup(const char *); 40 void xfree(void *); 41 42 #ifdef RTLD_LOADER 43 void xprintf(const char *, ...) 44 __attribute__((__format__(__printf__, 1, 2))); 45 void xvprintf(const char *, va_list) 46 __attribute__((__format__(__printf__, 1, 0))); 47 void xsnprintf(char *, size_t, const char *, ...) 48 __attribute__((__format__(__printf__, 3, 4))); 49 size_t xvsnprintf(char *, size_t, const char *, va_list) 50 __attribute__((__format__(__printf__, 3, 0))); 51 void xwarn(const char *, ...) 52 __attribute__((__format__(__printf__, 1, 2))); 53 void xwarnx(const char *, ...) 54 __attribute__((__format__(__printf__, 1, 2))); 55 void xerr(int, const char *, ...) 56 __attribute__((__noreturn__, __format__(__printf__, 2, 3))); 57 void xerrx(int, const char *, ...) 58 __attribute__((__noreturn__, __format__(__printf__, 2, 3))); 59 60 void xassert(const char *, int, const char *) __dead; 61 const char *xstrerror(int); 62 int xunsetenv(const char *); 63 64 # ifdef DEBUG 65 # define assert(cond) ((cond) ? (void) 0 : xassert(__FILE__, __LINE__, #cond)) 66 # else 67 # define assert(cond) (void) 0 68 # endif 69 #else 70 # include <assert.h> 71 # include <stdio.h> 72 # include <err.h> 73 74 # define xprintf printf 75 # define xvprintf vprintf 76 # define xsnprintf snprintf 77 # define xvsnprintf vsnprintf 78 # define xwarn warn 79 # define xwarnx warnx 80 # define xerr err 81 # define xerrx errx 82 # define xassert assert 83 # define xstrerror strerror 84 #endif 85 86 #endif /* _RTLDENV_H */ 87