| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*
- * libdpkg - Debian packaging suite library routines
- * ehandle.h - error handling
- *
- * Copyright © 1994,1995 Ian Jackson <ian@chiark.greenend.org.uk>
- * Copyright © 2000,2001 Wichert Akkerman <wichert@debian.org>
- *
- * This is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- #ifndef LIBDPKG_EHANDLE_H
- #define LIBDPKG_EHANDLE_H
- #include <setjmp.h>
- #include <stddef.h>
- #include <stdarg.h>
- #include <dpkg/macros.h>
- DPKG_BEGIN_DECLS
- /* Defined separately in each program. */
- extern const char thisname[];
- extern volatile int onerr_abort;
- enum {
- ehflag_normaltidy = 01,
- ehflag_bombout = 02,
- ehflag_recursiveerror = 04
- };
- typedef void error_handler(void);
- typedef void error_printer(const char *emsg, const char *contextstring);
- void print_fatal_error(const char *emsg, const char *contextstring);
- void catch_fatal_error(void);
- void push_error_context_jump(jmp_buf *jbufp, error_printer *printerror,
- const char *contextstring);
- void push_error_context_func(error_handler *func, error_printer *printerror,
- const char *contextstring);
- void push_error_context(void);
- void pop_error_context(int flagset);
- void push_cleanup(void (*f1)(int argc, void **argv), int flagmask1,
- void (*f2)(int argc, void **argv), int flagmask2,
- unsigned int nargs, ...);
- void push_checkpoint(int mask, int value);
- void pop_cleanup(int flagset);
- void warningv(const char *fmt, va_list args) DPKG_ATTR_VPRINTF(1);
- void warning(const char *fmt, ...) DPKG_ATTR_PRINTF(1);
- void ohshitv(const char *fmt, va_list args)
- DPKG_ATTR_NORET DPKG_ATTR_VPRINTF(1);
- void ohshit(const char *fmt, ...) DPKG_ATTR_NORET DPKG_ATTR_PRINTF(1);
- void ohshite(const char *fmt, ...) DPKG_ATTR_NORET DPKG_ATTR_PRINTF(1);
- void werr(const char *what) DPKG_ATTR_NORET;
- void do_internerr(const char *file, int line, const char *fmt, ...)
- DPKG_ATTR_NORET DPKG_ATTR_PRINTF(3);
- #define internerr(...) do_internerr(__FILE__, __LINE__, __VA_ARGS__)
- DPKG_END_DECLS
- #endif /* LIBDPKG_EHANDLE_H */
|