#ifndef ERROR_H #define ERROR_H /** $MirOS: src/usr.bin/make/error.h,v 1.4 2013/10/31 20:07:06 tg Exp $ */ /* $OpenBSD: error.h,v 1.7 2001/09/19 10:58:07 mpech Exp $ */ /* * Copyright © 2013 * Thorsten “mirabilos” Glaser * Copyright (c) 2001 Marc Espie. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE OPENBSD PROJECT AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBSD * PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Error Print a tagged error message. The global * MAKE variable must have been defined. This * takes a format string and two optional * arguments for it. * * Fatal Print an error message and exit. Also takes * a format string and two arguments. * * Punt Aborts all jobs and exits with a message. Also * takes a format string and two arguments. * * Finish Finish things up by printing the number of * errors which occurred, as passed to it, and * exiting. */ extern void Error(const char *, ...) __attribute__((__format__(__printf__, 1, 2))); extern void Fatal(const char *, ...) __attribute__((__noreturn__)) __attribute__((__format__(__printf__, 1, 2))); extern void Punt(const char *, ...) __attribute__((__noreturn__)) __attribute__((__format__(__printf__, 1, 2))); extern void DieHorribly(void) __attribute__((__noreturn__)); extern void Finish(int) __attribute__((__noreturn__)); /* * Error levels for parsing. PARSE_FATAL means the process cannot continue * once the makefile has been parsed. PARSE_WARNING means it can. Passed * as the first argument to Parse_Error. */ #define PARSE_WARNING 2 #define PARSE_FATAL 1 extern void Parse_Error(int, const char *, ...) __attribute__((__format__(__printf__, 2, 3))); extern int fatal_errors; #endif