diff options
author | kx <kx@radix.pro> | 2023-03-24 02:53:04 +0300 |
---|---|---|
committer | kx <kx@radix.pro> | 2023-03-24 02:53:04 +0300 |
commit | 12c7b1c5658602269da2f5b75835ec0f5fab8890 (patch) | |
tree | 93f6f6b85830af69743d5ebda902d4305bf23f4f /cscmd/error.c | |
parent | 4e72ffe940d9aff7c019d37a6459e765902c1fae (diff) | |
download | cscm-12c7b1c5658602269da2f5b75835ec0f5fab8890.tar.xz |
Version 0.1.4HEADcscm-0.1.4trunk
Diffstat (limited to 'cscmd/error.c')
-rw-r--r-- | cscmd/error.c | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/cscmd/error.c b/cscmd/error.c new file mode 100644 index 0000000..ec469c9 --- /dev/null +++ b/cscmd/error.c @@ -0,0 +1,92 @@ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> +#include <string.h> +#include <stdarg.h> +#include <limits.h> +#include <locale.h> +#include <wchar.h> +#include <wctype.h> + +#include <defs.h> + +#include <error.h> +#include <msglog.h> +#include <utf8ing.h> +#include <lex.h> + + +extern char *config_fname; + +int errors = 0; +int warnings = 0; + + +void error( char *fmt, ... ) +{ + va_list arg_ptr; + char buf[MAX_ERROR_MSG_SIZE]; + char msg[MAX_ERROR_MSG_SIZE]; + char *format = "%s:%d:%d: %s"; + + va_start( arg_ptr, fmt ); + + vsnprintf( msg, MAX_ERROR_MSG_SIZE, (const void *)fmt, arg_ptr ); + + va_end( arg_ptr ); /* Reset variable arguments. */ + + snprintf( buf, MAX_ERROR_MSG_SIZE, format, config_fname, lineno, colno, msg ); + + ERROR( "%s", buf ); + + ++errors; +} + +void warning( char *fmt, ... ) +{ + va_list arg_ptr; + char buf[MAX_ERROR_MSG_SIZE]; + char msg[MAX_ERROR_MSG_SIZE]; + char *format = "%s:%d:%d: %s"; + + va_start( arg_ptr, fmt ); + + vsnprintf( msg, MAX_ERROR_MSG_SIZE, (const void *)fmt, arg_ptr ); + + va_end( arg_ptr ); /* Reset variable arguments. */ + + snprintf( buf, MAX_ERROR_MSG_SIZE, format, config_fname, lineno, colno, msg ); + + WARNING( "%s", buf ); + + ++warnings; +} + +void no_space( void ) +{ + char buf[MAX_ERROR_MSG_SIZE]; + char *format = "%s: Cannot allocate memory"; + + snprintf( buf, MAX_ERROR_MSG_SIZE, format, config_fname ); + + FATAL_ERROR( "%s", buf ); + + ++errors; +} + +void unterminated_comment( void ) +{ + char buf[MAX_ERROR_MSG_SIZE]; + char *format = "%s:%d:%d: Unterminated comment"; + + snprintf( buf, MAX_ERROR_MSG_SIZE, format, config_fname, lineno, colno ); + + ERROR( "%s", buf ); + + ++errors; +} |