Use UserError when main hog is missing
Error traps to the debugger and then aborts, which is not appropriate for a user setup error.
This commit is contained in:
parent
5fc3e44bee
commit
1d99084026
|
@ -25,6 +25,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "dxxsconf.h"
|
#include "dxxsconf.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -48,7 +49,16 @@ void Error_puts(const char *func, unsigned line, const char *str) __noreturn __a
|
||||||
#define Error_puts(F) Error_puts(__func__, __LINE__,F)
|
#define Error_puts(F) Error_puts(__func__, __LINE__,F)
|
||||||
void Error(const char *func, unsigned line, const char *fmt,...) __noreturn __attribute_format_printf(3, 4); //exit with error code=1, print message
|
void Error(const char *func, unsigned line, const char *fmt,...) __noreturn __attribute_format_printf(3, 4); //exit with error code=1, print message
|
||||||
#define Error(F,...) dxx_call_printf_checked(Error,(Error_puts),(__func__, __LINE__),(F),##__VA_ARGS__)
|
#define Error(F,...) dxx_call_printf_checked(Error,(Error_puts),(__func__, __LINE__),(F),##__VA_ARGS__)
|
||||||
void UserError_puts(const char *str) __noreturn __attribute_nonnull();
|
|
||||||
|
__noreturn
|
||||||
|
void UserError_puts(const char *str, std::size_t);
|
||||||
|
|
||||||
|
template <std::size_t len>
|
||||||
|
__noreturn
|
||||||
|
static inline void UserError_puts(const char (&str)[len])
|
||||||
|
{
|
||||||
|
UserError_puts(str, len - 1);
|
||||||
|
}
|
||||||
void UserError(const char *fmt, ...) __noreturn __attribute_format_printf(1, 2);
|
void UserError(const char *fmt, ...) __noreturn __attribute_format_printf(1, 2);
|
||||||
#define UserError(F,...) dxx_call_printf_checked(UserError,(UserError_puts),(),(F),##__VA_ARGS__)
|
#define UserError(F,...) dxx_call_printf_checked(UserError,(UserError_puts),(),(F),##__VA_ARGS__)
|
||||||
#define Assert assert
|
#define Assert assert
|
||||||
|
|
|
@ -86,6 +86,11 @@ void (Error_puts)(const char *func, const unsigned line, const char *str)
|
||||||
abort_print_exit_message(exit_message, len);
|
abort_print_exit_message(exit_message, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void (UserError_puts)(const char *str, std::size_t len)
|
||||||
|
{
|
||||||
|
graceful_print_exit_message(str, len);
|
||||||
|
}
|
||||||
|
|
||||||
//terminates with error code 1, printing message
|
//terminates with error code 1, printing message
|
||||||
void (Error)(const char *func, const unsigned line, const char *fmt,...)
|
void (Error)(const char *func, const unsigned line, const char *fmt,...)
|
||||||
{
|
{
|
||||||
|
|
|
@ -398,7 +398,7 @@ int main(int argc, char *argv[])
|
||||||
"\tIn a subdirectory called 'Data'\n" \
|
"\tIn a subdirectory called 'Data'\n" \
|
||||||
DXX_HOGFILE_APPLICATION_BUNDLE \
|
DXX_HOGFILE_APPLICATION_BUNDLE \
|
||||||
"Or use the -hogdir option to specify an alternate location."
|
"Or use the -hogdir option to specify an alternate location."
|
||||||
Error(DXX_MISSING_HOGFILE_ERROR_TEXT);
|
UserError(DXX_MISSING_HOGFILE_ERROR_TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(DXX_BUILD_DESCENT_I)
|
#if defined(DXX_BUILD_DESCENT_I)
|
||||||
|
|
Loading…
Reference in a new issue