12c7b1c5 (kx 2023-03-24 02:53:04 +0300 1)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 2) #ifdef HAVE_CONFIG_H
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 3) #include <config.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 4) #endif
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 5)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 6) #include <stdlib.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 7) #include <stdio.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 8) #include <unistd.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 9) #include <string.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 10) #include <stdarg.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 11) #include <limits.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 12) #include <locale.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 13) #include <wchar.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 14) #include <wctype.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 15)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 16) #include <defs.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 17)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 18) #include <error.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 19) #include <msglog.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 20) #include <utf8ing.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 21) #include <lex.h>
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 22)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 23)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 24) extern char *config_fname;
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 25)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 26) int errors = 0;
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 27) int warnings = 0;
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 28)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 29)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 30) void error( char *fmt, ... )
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 31) {
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 32) va_list arg_ptr;
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 33) char buf[MAX_ERROR_MSG_SIZE];
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 34) char msg[MAX_ERROR_MSG_SIZE];
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 35) char *format = "%s:%d:%d: %s";
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 36)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 37) va_start( arg_ptr, fmt );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 38)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 39) vsnprintf( msg, MAX_ERROR_MSG_SIZE, (const void *)fmt, arg_ptr );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 40)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 41) va_end( arg_ptr ); /* Reset variable arguments. */
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 42)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 43) snprintf( buf, MAX_ERROR_MSG_SIZE, format, config_fname, lineno, colno, msg );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 44)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 45) ERROR( "%s", buf );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 46)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 47) ++errors;
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 48) }
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 49)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 50) void warning( char *fmt, ... )
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 51) {
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 52) va_list arg_ptr;
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 53) char buf[MAX_ERROR_MSG_SIZE];
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 54) char msg[MAX_ERROR_MSG_SIZE];
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 55) char *format = "%s:%d:%d: %s";
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 56)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 57) va_start( arg_ptr, fmt );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 58)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 59) vsnprintf( msg, MAX_ERROR_MSG_SIZE, (const void *)fmt, arg_ptr );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 60)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 61) va_end( arg_ptr ); /* Reset variable arguments. */
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 62)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 63) snprintf( buf, MAX_ERROR_MSG_SIZE, format, config_fname, lineno, colno, msg );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 64)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 65) WARNING( "%s", buf );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 66)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 67) ++warnings;
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 68) }
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 69)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 70) void no_space( void )
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 71) {
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 72) char buf[MAX_ERROR_MSG_SIZE];
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 73) char *format = "%s: Cannot allocate memory";
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 74)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 75) snprintf( buf, MAX_ERROR_MSG_SIZE, format, config_fname );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 76)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 77) FATAL_ERROR( "%s", buf );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 78)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 79) ++errors;
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 80) }
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 81)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 82) void unterminated_comment( void )
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 83) {
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 84) char buf[MAX_ERROR_MSG_SIZE];
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 85) char *format = "%s:%d:%d: Unterminated comment";
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 86)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 87) snprintf( buf, MAX_ERROR_MSG_SIZE, format, config_fname, lineno, colno );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 88)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 89) ERROR( "%s", buf );
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 90)
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 91) ++errors;
12c7b1c5 (kx 2023-03-24 02:53:04 +0300 92) }