coan 4.2.4
#include "state_utils.h"
#include "hash_include.h"
#include "directives_tally.h"
#include "memory.h"
#include <stdarg.h>
Include dependency graph for report.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Enumerations

enum  reason_code_t {
  MSGCLASS_SHIFT = 11, ISSUE_MASK = (1 << MSGCLASS_SHIFT) - 1, MSGCLASS_NONE = 0 << MSGCLASS_SHIFT, MSGCLASS_PROGRESS = 1 << MSGCLASS_SHIFT,
  MSGCLASS_INFO = 2 << MSGCLASS_SHIFT, MSGCLASS_WARNING = 4 << MSGCLASS_SHIFT, MSGCLASS_ERROR = 8 << MSGCLASS_SHIFT, MSGCLASS_ABEND = 16 << MSGCLASS_SHIFT,
  MSGCLASS_SUMMARY = 32 << MSGCLASS_SHIFT, MSGCLASS_MASK = 255 << MSGCLASS_SHIFT, MSGSEVERITY_MASK = MSGCLASS_MASK & ~MSGCLASS_SUMMARY, MSGEVENT_MASK = MSGSEVERITY_MASK & ~MSGCLASS_PROGRESS,
  EVENT_SUMMARY_MIN = 1, EVENT_SUMMARY_DROPPED_LINES = 1 | MSGCLASS_INFO | MSGCLASS_SUMMARY, EVENT_SUMMARY_CHANGED_LINES = 2 | MSGCLASS_INFO | MSGCLASS_SUMMARY, EVENT_SUMMARY_ERRORED_LINES = 4 | MSGCLASS_WARNING | MSGCLASS_SUMMARY,
  EVENT_SUMMARY_ERROR_OUTPUT = 8 | MSGCLASS_WARNING | MSGCLASS_SUMMARY, EVENT_SUMMARY_MAX = 16, EVENT_SUMMARY_MASK = EVENT_SUMMARY_MAX - 1, PROGRESS_SHIFT = 4,
  PROGRESS_PROCESSING_FILE = (45 << PROGRESS_SHIFT) | MSGCLASS_PROGRESS, PROGRESS_ENTERING_DIR = (46 << PROGRESS_SHIFT) | MSGCLASS_PROGRESS, PROGRESS_LEAVING_DIR = (47 << PROGRESS_SHIFT) | MSGCLASS_PROGRESS, PROGRESS_BUILDING_TREE = (49 << PROGRESS_SHIFT) | MSGCLASS_PROGRESS,
  PROGRESS_SEARCHING_DIR = (50 << PROGRESS_SHIFT) | MSGCLASS_PROGRESS, PROGRESS_ADDED_FILE = (51 << PROGRESS_SHIFT) | MSGCLASS_PROGRESS, PROGRESS_ADDED_DIR = (52 << PROGRESS_SHIFT) | MSGCLASS_PROGRESS, PROGRESS_FILE_TALLY = (53 << PROGRESS_SHIFT) | MSGCLASS_PROGRESS,
  PROGRESS_GOT_OPTIONS = (54 << PROGRESS_SHIFT) | MSGCLASS_PROGRESS, PROGRESS_SUMMARY_SHIFT = 4, PROGRESS_SUMMARY_FILES_REACHED, PROGRESS_SUMMARY_FILES_DROPPED,
  PROGRESS_SUMMARY_ALL_DONE, GRIPE_SHIFT = 4, GRIPE_DUPLICATE_MASK = (27 << GRIPE_SHIFT) | MSGCLASS_INFO, GRIPE_SYMLINK = (48 << GRIPE_SHIFT) | MSGCLASS_INFO,
  GRIPE_STRAIGHTENED_LINE = (12 << GRIPE_SHIFT) | MSGCLASS_INFO, GRIPE_REDUNDANT_OPTION = (49 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_DUPLICATE_ARGS = (1 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_DELETED_CONTRADICTION = (2 << GRIPE_SHIFT) | MSGCLASS_WARNING,
  GRIPE_COMMENTED_CONTRADICTION = (3 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_ERRORED_CONTRADICTION = (4 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_DIFFERING_REDEF = (76 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_UNDEFING_DEFINED = (77 << GRIPE_SHIFT) | MSGCLASS_WARNING,
  GRIPE_UNCONDITIONAL_ERROR_INPUT = (5 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_UNCONDITIONAL_ERROR_OUTPUT = (6 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_GARBAGE_AFTER_DIRECTIVE = (7 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_MISSING_EOF_NEWLINE = (18 << GRIPE_SHIFT) | MSGCLASS_WARNING,
  GRIPE_CIRCULAR_SYM_DEF = (28 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_VERBOSE_ONLY = (29 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_ZERO_DIVIDE = (38 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_DIR_IGNORED = (41 << GRIPE_SHIFT) | MSGCLASS_WARNING,
  GRIPE_EMPTY_SYMBOL = (58 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_UNKNOWN_DIRECTIVE = (60 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_INVALID_INCLUDE = (61 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_STRAY_ESCAPE = (62 << GRIPE_SHIFT) | MSGCLASS_WARNING,
  GRIPE_FUNCTION_LIKE_MACRO_EXPANSION = (63 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_INT_OVERFLOW = (64 << GRIPE_SHIFT | MSGCLASS_WARNING), GRIPE_UNCLOSED_QUOTE = (65 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_NEGATIVE_SHIFT = (66 << GRIPE_SHIFT) | MSGCLASS_WARNING,
  GRIPE_FORCED_UNSIGNED = (67 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_SIGN_CHANGED = (68 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_SHIFT_OVERFLOW = (69 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_CHAR_CONSTANT_TOO_LONG = (70 << GRIPE_SHIFT) | MSGCLASS_WARNING,
  GRIPE_MULITBYTE_CHAR_CONSTANT = (71 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_TRANSIENT_SYMBOL_ADDED = (73 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_INSOURCE_FUNCTION_LIKE_MACRO_DEFINITION = (74 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_NO_SYMS = (75 << GRIPE_SHIFT) | MSGCLASS_WARNING,
  GRIPE_BROKEN_SYMLINK = (79 << GRIPE_SHIFT) | MSGCLASS_WARNING, GRIPE_ORPHAN_ELIF = (8 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_ORPHAN_ELSE = (9 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_ORPHAN_ENDIF = (10 << GRIPE_SHIFT) | MSGCLASS_ERROR,
  GRIPE_EOF_TOO_SOON = (11 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_EOF_IN_COMMENT = (13 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_EOF_IN_QUOTE = (14 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_NOTHING_TO_DO = (15 << GRIPE_SHIFT) | MSGCLASS_ERROR,
  GRIPE_ONE_FILE_ONLY = (16 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_NEWLINE_IN_QUOTE = (17 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_INVALID_ARGS = (19 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_USAGE_ERROR = (20 << GRIPE_SHIFT) | MSGCLASS_ERROR,
  GRIPE_TOO_DEEP = (21 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_MULTIPLE_ARGFILES = (31 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_GARBAGE_ARG = (32 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_NOT_IDENTIFIER = (33 << GRIPE_SHIFT) | MSGCLASS_ERROR,
  GRIPE_UNBALANCED_PAREN = (59 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_GLOBAL_FUNCTION_LIKE_MACRO_DEFINITION = (72 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_IF_WITHOUT_COND = (78 << GRIPE_SHIFT) | MSGCLASS_ERROR, GRIPE_CANT_OPEN_INPUT = (22 << GRIPE_SHIFT) | MSGCLASS_ABEND,
  GRIPE_OUT_OF_MEMORY = (23 << GRIPE_SHIFT) | MSGCLASS_ABEND, GRIPE_FILENAME_TOO_LONG = (24 << GRIPE_SHIFT) | MSGCLASS_ABEND, GRIPE_EOF_IN_FILENAME = (25 << GRIPE_SHIFT) | MSGCLASS_ABEND, GRIPE_CONFUSED = (26 << GRIPE_SHIFT) | MSGCLASS_ABEND,
  GRIPE_CANT_READ_INPUT = (30 << GRIPE_SHIFT) | MSGCLASS_ABEND, GRIPE_CANT_WRITE_FILE = (39 << GRIPE_SHIFT) | MSGCLASS_ABEND, GRIPE_NO_FILE = (40 << GRIPE_SHIFT) | MSGCLASS_ABEND, GRIPE_ILLEGAL_FILENAME = (34 << GRIPE_SHIFT) | MSGCLASS_ABEND,
  GRIPE_CANT_DELETE_FILE = (35 << GRIPE_SHIFT) | MSGCLASS_ABEND, GRIPE_CANT_RENAME_FILE = (36 << GRIPE_SHIFT) | MSGCLASS_ABEND, GRIPE_NO_TEMPFILE = (37 << GRIPE_SHIFT) | MSGCLASS_ABEND, GRIPE_CANT_OPEN_DIR = (42 << GRIPE_SHIFT) | MSGCLASS_ABEND,
  GRIPE_CANT_READ_DIR = (43 << GRIPE_SHIFT) | MSGCLASS_ABEND
}
enum  dbg_code_t {
  DBG_1 = 1, DBG_2, DBG_3, DBG_4,
  DBG_5, DBG_6, DBG_8, DBG_7,
  DBG_9, DBG_10, DBG_11, DBG_12,
  DBG_13, DBG_14, DBG_15, DBG_16,
  DBG_17, DBG_18, DBG_19, DBG_20,
  DBG_21, DBG_22
}

Functions

void set_exit_flags (int bits, bool set)
int get_exit_flags (int bits)
int exitcode (void)
size_t line_len (char const *str)
void flatten_line (char *line)
void report (reason_code_t reason, heap_str *buf, const char *format,...)
void parse_error (int reason, const char *format,...)
void give_up_confused (void)
void vbail (int reason, const char *msg, va_list argp)
void bail (int retcode, const char *format,...)
void debugging (bool on)
void debug (dbg_code_t how,...)
void exit_diagnostics (void)
void orphan_elif (void)
void orphan_else (void)
void orphan_endif (void)
void early_eof (void)
void processing_file (char const *filename)
void entering_dir (char const *dirname)
void leaving_dir (char const *dirname)
size_t format_output (void *dest, int *buflen, int *startoff, char const *format,...)
heap_str concatenate (size_t count, char *strs[], int punctch)
void report_symbol (symbol_h sym)
void report_include (hash_include_const_h inc_arg)
void report_directive (canonical_string_const_h cl, directive_type_t directive_type)
char * format_int (int_spec_t const *int_spec)
void report_initor (void)
void report_finitor (void)

Detailed Description

This file provides the Report component interface

Definition in file report.h.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines