1/* $NetBSD: rtldenv.h,v 1.11 2011/12/11 11:05:11 joerg 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 36void *xcalloc(size_t); 37void *xmalloc(size_t); 38void *xrealloc(void *, size_t); 39char *xstrdup(const char *); 40void xfree(void *); 41 42#ifdef RTLD_LOADER 43void xprintf(const char *, ...) 44 __attribute__((__format__(__printf__, 1, 2))); 45void xvprintf(const char *, va_list) 46 __attribute__((__format__(__printf__, 1, 0))); 47void xsnprintf(char *, size_t, const char *, ...) 48 __attribute__((__format__(__printf__, 3, 4))); 49size_t xvsnprintf(char *, size_t, const char *, va_list) 50 __attribute__((__format__(__printf__, 3, 0))); 51void xwarn(const char *, ...) 52 __attribute__((__format__(__printf__, 1, 2))); 53void xwarnx(const char *, ...) 54 __attribute__((__format__(__printf__, 1, 2))); 55void xerr(int, const char *, ...) 56 __attribute__((__noreturn__, __format__(__printf__, 2, 3))); 57void xerrx(int, const char *, ...) 58 __attribute__((__noreturn__, __format__(__printf__, 2, 3))); 59 60void xassert(const char *, int, const char *) __dead; 61const char *xstrerror(int); 62int 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