Mercurial > code
view port/err.h @ 261:0c7bc55e0d36
Add Flags, a small wrapper for creating enum flags
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 09 Oct 2014 13:28:24 +0200 |
parents | bb2694382675 |
children |
line wrap: on
line source
/* * err.h -- formtted error messages (portable version) * * Copyright (c) 2011, 2012, David Demelier <markand@malikania.fr> * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef _ERR_H_ #define _ERR_H_ #include <stdarg.h> #ifdef __cplusplus extern "C" { #endif /* * Attribute noreturn may helps. This may produce a warning with GCC 4.5: * * int a; * * if ((a = getstate() < 0) * errx(1, "State failed"); * * Because compilator does not know that errx will call exit may produce * a warning like `a may be used uninitialized'. */ #if defined(__GNUC__) # define __at_noreturn __attribute__ ((noreturn)) #elif defined(_MSC_VER) # define __at_noreturn __declspec(noreturn) #endif /* * err() functions append the format message to the stderr FILE pointer. They * also append the system error using strerror(errno). Then the functions exit * with the error code given as first argument. */ void err(int, const char *, ...) __at_noreturn; void verr(int, const char *, va_list) __at_noreturn; /* * errx() functions are similar to err() except that they do not append the * system error message. */ void errx(int, const char *, ...) __at_noreturn; void verrx(int, const char *, va_list) __at_noreturn; /* * warn() functions are similar to err() but they do not call exit(). */ void warn(const char *, ...); void vwarn(const char *, va_list); /* * warnx() functions are similar to warn() except that they do not append the * system error message. */ void warnx(const char *, ...); void vwarnx(const char *, va_list); #ifdef __cplusplus } #endif #endif /* _ERR_H_ */