|
coan 4.2.4
|
|
Modules | |
| Macro-generated code | |
Files | |
| file | contradiction.c |
Defines | |
| #define | CONTRADICTION_PENDING (GET_STATE(contradiction,err_msg_buf)[ERR_MSG_BUF] != 0) |
Enumerations | |
| enum | { ERR_MSG_BUF, OUT_MSG_BUF } |
Functions | |
| static void | compose_contradiction_insert_format (heap_str *buf, const char *sub_format) |
| static void | forget_pending_contradiction (void) |
| static void | insert_pending_contradiction (void) |
| #define CONTRADICTION_PENDING (GET_STATE(contradiction,err_msg_buf)[ERR_MSG_BUF] != 0) |
Is there an undischarged conflict between an input hash-undef and a --define option? The macro tests whether any memory is allocated for our stderr buffer.
Definition at line 109 of file contradiction.c.
| anonymous enum |
Labels for output buffers associated with standard streams.
Definition at line 113 of file contradiction.c.
| static void compose_contradiction_insert_format | ( | heap_str * | buf, |
| const char * | sub_format | ||
| ) | [static] |
Compose a standard printf format for inserting error diagnostics on output.
| buf | Address of a pointer at which storage shall be allocated to hold the composed format. |
| sub_format | A printf format that is to be embedded in within the one we are constructing. |
The function partially completes a format for diagnostics that may be inserted in output in place of an hash-undef or hash-define directive that contradicts a --define option. It resolves the prefix of the diagnostic, depending on the specified or default --conflict policy.
sub_format varies depending on whether we want to complain of an hash-undef that contradicts a --define option, or of a hash-define that conflicts with a --define option by differently redfining a symbol.
The constructed format is stored in storage allocated at a pointer that is stored at buf on return. It is the caller's responsibility to free this storage.
Definition at line 145 of file contradiction.c.
References format_output(), GET_PUBLIC, and GET_STATE.
Referenced by save_contradiction().

| static void forget_pending_contradiction | ( | void | ) | [static] |
Erase the stored information that represents a pending diagnostic for a contradiction.
We will call this function either when it turns out that there is no real contradiction to complain of, or when there is a contradiction and the diagnostic is discharged.
There will be a diagnostic message at least for stderr, and also for stdout unless --conflict delete is in force. The diagnostics are allocated in heap blocks, and we will have stored the line number of the conflicting hash-undef directive to which the diagnostics refer. These data are deleted.
Definition at line 172 of file contradiction.c.
References ERR_MSG_BUF, GET_STATE, OUT_MSG_BUF, release(), and SET_PUBLIC.
Referenced by forget_contradiction(), and insert_pending_contradiction().

| static void insert_pending_contradiction | ( | void | ) | [static] |
Insert a stored error diagnostic into the output as an hash-error directive or a comment (depending on the --conflict policy) to replace an hash-undef or hash-define directive that conflicts with a --define option. Reiterate the diagnostic on stderr.
If the --conflict delete is in force, there will be no diagnostic to insert in output, but the diagnostic is still written to stderr.
Definition at line 190 of file contradiction.c.
References ERR_MSG_BUF, EVENT_SUMMARY_ERROR_OUTPUT, EVENT_SUMMARY_ERRORED_LINES, forget_pending_contradiction(), GET_STATE, GRIPE_ERRORED_CONTRADICTION, GRIPE_UNCONDITIONAL_ERROR_INPUT, is_unconditional_line(), OUT_MSG_BUF, report(), set_exit_flags(), and substitute().
Referenced by flush_contradiction(), and insert_contradiction().
