slweb

Једноставни генератор статичких веб страна
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 9e2e49f19eef3f99810ac59a12b85dd20ba169e6
родитељ bc76d7ae62368cbc8d457c342aedbf50196ef77b
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Mon, 23 Aug 2021 23:14:22 +0200

Fix: var & mask is not the same as (var & mask) != 0 for unsigned long long

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
Mdefs.h | 4++++
Mslweb.c | 222+++++++++++++++++++++++++++++++++++++++----------------------------------------
измењених датотека: 2, додавања: 114(+), брисања: 112(-)

diff --git a/defs.h b/defs.h @@ -52,6 +52,10 @@ typedef enum TRUE = 1 } BOOL; +#define ALL(var, mask) (((var) & (mask)) == (mask)) +#define ANY(var, mask) (((var) & (mask)) != 0) +#define IN(var, mask) ALL(var, mask) + typedef unsigned char UBYTE; typedef unsigned long ULONG; typedef unsigned long long ULLONG; diff --git a/slweb.c b/slweb.c @@ -83,9 +83,6 @@ static ULLONG state = ST_NONE; ptoken = token; \ } while (0) -#define ALL(var, mask) (((var) & (mask)) == (mask)) -#define ANY(var, mask) ((var) & (mask)) - int version() { @@ -285,7 +282,7 @@ print_output(FILE* output, const char* fmt, ...) exit(error(EINVAL, (u8*)"print_output: Invalid argument")); va_start(args, fmt); - if (state & ST_CSV_BODY) + if (IN(state, ST_CSV_BODY)) { size_t buf_len = 0; vsnprintf((char*)buf, BUFSIZE, fmt, args); @@ -551,7 +548,7 @@ print_csv_row(FILE* output, u8** csv_header, u8** csv_register) csv_template_start: if (!*pcsv_template) goto csv_template_done; - if (csv_state & ST_CS_ESCAPE) + if (IN(csv_state, ST_CS_ESCAPE)) { PRINTIF("%c", *pcsv_template); csv_state &= ~ST_CS_ESCAPE; @@ -566,7 +563,7 @@ csv_template_start: pcsv_template++; break; case '$': - if (csv_state & ST_CS_REGISTER) + if (IN(csv_state, ST_CS_REGISTER)) { PRINTIF("%c", '$'); csv_state &= ~ST_CS_REGISTER; @@ -576,12 +573,12 @@ csv_template_start: pcsv_template++; break; case '#': - if (csv_state & ST_CS_HEADER) + if (IN(csv_state, ST_CS_HEADER)) { error(1, (u8*)"csv: Invalid header register mark"); csv_state &= ~(ST_CS_REGISTER | ST_CS_HEADER); } - else if (csv_state & ST_CS_REGISTER) + else if (IN(csv_state, ST_CS_REGISTER)) { csv_state &= ~ST_CS_REGISTER; csv_state |= ST_CS_HEADER; @@ -591,12 +588,12 @@ csv_template_start: pcsv_template++; break; case '?': - if (csv_state & ST_CS_COND) + if (IN(csv_state, ST_CS_COND)) { error(1, (u8*)"csv: Invalid conditional mark"); csv_state &= ~ST_CS_COND; } - else if (csv_state & ST_CS_REGISTER) + else if (IN(csv_state, ST_CS_REGISTER)) { csv_state &= ~ST_CS_REGISTER; csv_state |= ST_CS_COND; @@ -611,7 +608,7 @@ csv_template_start: csv_state &= ~(ST_CS_COND | ST_CS_COND_NONEMPTY); csv_state |= ST_CS_COND_EMPTY; } - else if (csv_state & ST_CS_COND) + else if (IN(csv_state, ST_CS_COND)) { error(1, (u8*)"Empty conditional before/without nonempty" @@ -640,19 +637,19 @@ csv_template_start: case '7': case '8': case '9': - if (csv_state & ST_CS_COND) + if (IN(csv_state, ST_CS_COND)) { conditional_index = *pcsv_template - '0'; csv_state &= ~ST_CS_COND; csv_state |= ST_CS_COND_NONEMPTY; } - else if (csv_state & ST_CS_HEADER) + else if (IN(csv_state, ST_CS_HEADER)) { num = *pcsv_template - '0'; PRINTIF("%s", csv_header[num - 1]); csv_state &= ~ST_CS_HEADER; } - else if (csv_state & ST_CS_REGISTER) + else if (IN(csv_state, ST_CS_REGISTER)) { num = *pcsv_template - '0'; PRINTIF("%s", csv_register[num - 1]); @@ -663,12 +660,12 @@ csv_template_start: pcsv_template++; break; default: - if (csv_state & ST_CS_HEADER) + if (IN(csv_state, ST_CS_HEADER)) { error(1, (u8*)"csv: Invalid header register mark"); csv_state &= ~ST_CS_HEADER; } - else if (csv_state & ST_CS_REGISTER) + else if (IN(csv_state, ST_CS_REGISTER)) { error(1, (u8*)"csv: Invalid register mark"); csv_state &= ~ST_CS_REGISTER; @@ -732,7 +729,7 @@ read_csv(FILE* output, const char* filename, csv_callback_t callback) switch (*pbufline) { case '"': - if (csv_state & ST_CS_QUOTE) + if (IN(csv_state, ST_CS_QUOTE)) csv_state &= ~ST_CS_QUOTE; else csv_state |= ST_CS_QUOTE; @@ -740,7 +737,7 @@ read_csv(FILE* output, const char* filename, csv_callback_t callback) break; case ';': case ',': - if (csv_state & ST_CS_QUOTE) + if (IN(csv_state, ST_CS_QUOTE)) CHECKCOPY(token, ptoken, token_size, pbufline); else { @@ -759,7 +756,7 @@ read_csv(FILE* output, const char* filename, csv_callback_t callback) } break; default: - if (csv_state & ST_CS_QUOTE) + if (IN(csv_state, ST_CS_QUOTE)) CHECKCOPY(token, ptoken, token_size, pbufline); else if (csv_delimiter && *pbufline == *csv_delimiter) { @@ -835,7 +832,7 @@ process_csv(FILE* output, const u8* arg_token, } else { - if (state & ST_CSV_BODY) + if (IN(state, ST_CSV_BODY)) exit(error(1, (u8*)"Can't nest csv directives")); state |= ST_CSV_BODY; @@ -1002,7 +999,7 @@ process_list_item_start(FILE* output) int process_list_item_end(FILE* output) { - if (state & ST_PARA_OPEN) + if (IN(state, ST_PARA_OPEN)) { state &= ~ST_PARA_OPEN; fprintf(output, "</p>"); @@ -1397,7 +1394,7 @@ process_macro(FILE* output, const u8* token, { if (!end_tag) { - if (state & ST_MACRO_BODY) + if (IN(state, ST_MACRO_BODY)) exit(error(1, (u8*)"Macro undefined or nested")); BOOL seen = FALSE; @@ -1796,7 +1793,7 @@ process_line_start(FILE* output, const u8* line, const u8* link_prefix, { if (!list_para) { - if (state & ST_LIST) + if (IN(state, ST_LIST)) { state &= ~ST_LIST; if (!read_yaml_macros_and_links) @@ -1806,7 +1803,7 @@ process_line_start(FILE* output, const u8* line, const u8* link_prefix, } } - if (state & ST_NUMLIST) + if (IN(state, ST_NUMLIST)) { state &= ~ST_NUMLIST; if (!read_yaml_macros_and_links) @@ -1816,10 +1813,10 @@ process_line_start(FILE* output, const u8* line, const u8* link_prefix, } } - if (state & ST_FOOTNOTE_TEXT) + if (IN(state, ST_FOOTNOTE_TEXT)) { if (!read_yaml_macros_and_links - && (state & ST_PARA_OPEN)) + && (IN(state, ST_PARA_OPEN))) { print_output(output, "</p>\n"); output_firstcol = TRUE; @@ -1847,7 +1844,7 @@ process_text_token(FILE* output, const u8* line, const u8* link_prefix, const BOOL read_yaml_macros_and_links, const BOOL list_para, u8** token, u8** ptoken, size_t* token_size, const BOOL add_enclosing_paragraph) { - if (!(state & ST_YAML)) + if (!(IN(state, ST_YAML))) { if (add_enclosing_paragraph && !processed_start_of_line) process_line_start(output, line, link_prefix, @@ -1855,7 +1852,7 @@ process_text_token(FILE* output, const u8* line, const u8* link_prefix, read_yaml_macros_and_links, list_para); **ptoken = 0; if (**token && !read_yaml_macros_and_links - && !(state & ST_MACRO_BODY)) + && !(IN(state, ST_MACRO_BODY))) { print_output(output, "%s", *token); u8* eol = (u8*)strrchr((char*)*token, '\n'); @@ -1959,10 +1956,10 @@ int process_horizontal_rule(FILE* output) { /* Temporarily break paragraph as hr is para-level */ - if (state & ST_PARA_OPEN) + if (IN(state, ST_PARA_OPEN)) print_output(output, "</p>\n"); print_output(output, "<hr />\n"); - if (state & ST_PARA_OPEN) + if (IN(state, ST_PARA_OPEN)) print_output(output, "<p>\n"); output_firstcol = TRUE; return 0; @@ -2138,7 +2135,7 @@ end_footnotes(FILE* output, BOOL add_footnote_div) { size_t footnote = 0; - if (state & ST_PARA_OPEN) + if (IN(state, ST_PARA_OPEN)) { print_output(output, "</p>\n"); output_firstcol = TRUE; @@ -2331,7 +2328,7 @@ do_line: { skip_eol = TRUE; - if (!(state & ST_YAML) && lineno > 1 + if (!(IN(state, ST_YAML)) && lineno > 1 && !read_yaml_macros_and_links) process_horizontal_rule(output); else @@ -2348,7 +2345,7 @@ do_line: else if (colno == 1 && strlen((char*)pline) > 1 && *(pline + 1) == ' ') { - if (state & ST_NUMLIST) + if (IN(state, ST_NUMLIST)) { state &= ~ST_NUMLIST; if (!read_yaml_macros_and_links) @@ -2359,7 +2356,7 @@ do_line: } if (!read_yaml_macros_and_links) { - if (!(state & ST_LIST)) + if (!(IN(state, ST_LIST))) process_list_start(output); else process_list_item_end(output); @@ -2383,7 +2380,7 @@ do_line: break; case ':': - if (state & ST_YAML + if (IN(state, ST_YAML) && !(ANY(state, ST_CODE | ST_DISPLAY_FORMULA | ST_FORMULA | ST_HEADING | ST_IMAGE | ST_MACRO_BODY @@ -2529,9 +2526,9 @@ do_line: ST_INLINE_FOOTNOTE | ST_HEADING | ST_FOOTNOTE_TEXT | ST_LINK)) { - u8* tag = state & ST_STRIKE ? (u8*)"</s>" - : (u8*)"<s>"; - size_t tag_len = strlen((char*)tag); + u8* tag = IN(state, ST_STRIKE) ? (u8*)"</s>" + : (u8*)"<s>"; + size_t tag_len = strlen((char*)tag); size_t token_len = 0; *ptoken = 0; @@ -2558,7 +2555,7 @@ do_line: && !(ANY(state, ST_PRE | ST_CODE | ST_HEADING))) process_strike(output, - state & ST_STRIKE); + (IN(state, ST_STRIKE))); } state ^= ST_STRIKE; @@ -2584,7 +2581,7 @@ do_line: if (!read_yaml_macros_and_links) { - if (state & ST_PRE) + if (IN(state, ST_PRE)) print_output(output, "<pre>"); else print_output(output, "</pre>"); @@ -2602,8 +2599,8 @@ do_line: ST_INLINE_FOOTNOTE | ST_HEADING | ST_FOOTNOTE_TEXT | ST_LINK)) { - u8* tag = state & ST_CODE ? (u8*)"</code>" - : (u8*)"<code>"; + u8* tag = IN(state, ST_CODE) ? (u8*)"</code>" + : (u8*)"<code>"; size_t tag_len = strlen((char*)tag); size_t token_len = 0; @@ -2629,7 +2626,7 @@ do_line: if (!read_yaml_macros_and_links && !(ANY(state, ST_PRE | ST_HEADING))) - process_code(output, state & ST_CODE); + process_code(output, IN(state, ST_CODE)); } state ^= ST_CODE; @@ -2650,7 +2647,7 @@ do_line: ST_CODE | ST_DISPLAY_FORMULA | ST_FORMULA | ST_MACRO_BODY | ST_PRE | ST_YAML))) { - if (state & ST_LIST) + if (IN(state, ST_LIST)) { state &= ~ST_LIST; if (!read_yaml_macros_and_links) @@ -2660,7 +2657,7 @@ do_line: } } - if (state & ST_NUMLIST) + if (IN(state, ST_NUMLIST)) { state &= ~ST_NUMLIST; if (!read_yaml_macros_and_links) @@ -2675,7 +2672,7 @@ do_line: pline++; colno++; } - else if (state & ST_HEADING && *(pline - 1) == '#') + else if (IN(state, ST_HEADING) && *(pline - 1) == '#') { if (heading_level < MAX_HEADING_LEVEL) heading_level++; @@ -2709,8 +2706,8 @@ do_line: ST_INLINE_FOOTNOTE | ST_HEADING | ST_FOOTNOTE_TEXT | ST_LINK)) { - u8* tag = state & ST_BOLD ? (u8*)"</strong>" - : (u8*)"<strong>"; + u8* tag = IN(state, ST_BOLD) ? (u8*)"</strong>" + : (u8*)"<strong>"; size_t tag_len = strlen((char*)tag); size_t token_len = 0; @@ -2737,7 +2734,7 @@ do_line: if (!read_yaml_macros_and_links && !(ANY(state, ST_PRE | ST_CODE | ST_HEADING))) - process_bold(output, state & ST_BOLD); + process_bold(output, IN(state, ST_BOLD)); } state ^= ST_BOLD; @@ -2752,8 +2749,8 @@ do_line: ST_INLINE_FOOTNOTE | ST_HEADING | ST_FOOTNOTE_TEXT | ST_LINK)) { - u8* tag = state & ST_ITALIC ? (u8*)"</em>" - : (u8*)"<em>"; + u8* tag = IN(state, ST_ITALIC) ? (u8*)"</em>" + : (u8*)"<em>"; size_t tag_len = strlen((char*)tag); size_t token_len = 0; @@ -2781,7 +2778,7 @@ do_line: && !(ANY(state, ST_PRE | ST_CODE | ST_HEADING))) process_italic(output, - state & ST_ITALIC); + IN(state, ST_ITALIC)); } state ^= ST_ITALIC; @@ -2804,7 +2801,7 @@ do_line: if (colno == 1 && strlen((char*)pline) > 1 && *(pline + 1) == ' ') { - if (state & ST_NUMLIST) + if (IN(state, ST_NUMLIST)) { state &= ~ST_NUMLIST; if (!read_yaml_macros_and_links) @@ -2815,7 +2812,7 @@ do_line: } if (!read_yaml_macros_and_links) { - if (!(state & ST_LIST)) + if (!(IN(state, ST_LIST))) process_list_start(output); else process_list_item_end(output); @@ -2870,7 +2867,7 @@ do_line: else if (colno == 1 && strlen((char*)pline) > 1 && *(pline + 1) == ' ') { - if (state & ST_NUMLIST) + if (IN(state, ST_NUMLIST)) { state &= ~ST_NUMLIST; if (!read_yaml_macros_and_links) @@ -2881,7 +2878,7 @@ do_line: } if (!read_yaml_macros_and_links) { - if (!(state & ST_LIST)) + if (!(IN(state, ST_LIST))) process_list_start(output); else process_list_item_end(output); @@ -2905,8 +2902,8 @@ do_line: ST_INLINE_FOOTNOTE | ST_HEADING | ST_FOOTNOTE_TEXT | ST_LINK)) { - u8* tag = state & ST_BOLD ? (u8*)"</strong>" - : (u8*)"<strong>"; + u8* tag = IN(state, ST_BOLD) ? (u8*)"</strong>" + : (u8*)"<strong>"; size_t tag_len = strlen((char*)tag); size_t token_len = 0; @@ -2933,7 +2930,7 @@ do_line: if (!read_yaml_macros_and_links && !(ANY(state, ST_PRE | ST_CODE | ST_HEADING))) - process_bold(output, state & ST_BOLD); + process_bold(output, IN(state, ST_BOLD)); } state ^= ST_BOLD; @@ -2949,8 +2946,8 @@ do_line: | ST_FOOTNOTE_TEXT | ST_LINK)) { - u8* tag = state & ST_ITALIC ? (u8*)"</em>" - : (u8*)"<em>"; + u8* tag = IN(state, ST_ITALIC) ? (u8*)"</em>" + : (u8*)"<em>"; size_t tag_len = strlen((char*)tag); size_t token_len = 0; @@ -2978,7 +2975,7 @@ do_line: && !(ANY(state, ST_PRE | ST_CODE | ST_HEADING))) process_italic(output, - state & ST_ITALIC); + IN(state, ST_ITALIC)); } state ^= ST_ITALIC; @@ -2997,7 +2994,7 @@ do_line: break; } - if ((state & ST_HEADING) && !(state & ST_HEADING_TEXT)) + if ((IN(state, ST_HEADING)) && !(IN(state, ST_HEADING_TEXT))) { if (!read_yaml_macros_and_links) { @@ -3040,7 +3037,7 @@ do_line: pline++; colno++; } - else if (state & ST_LINK_MACRO) + else if (IN(state, ST_LINK_MACRO)) { *ptoken = 0; strncpy((char*)link_macro, (char*)token, BUFSIZE - 1); @@ -3048,7 +3045,7 @@ do_line: RESET_TOKEN(token, ptoken, token_size); state &= ~ST_LINK_MACRO; } - else if (!(state & ST_HEADING && *(pline - 1) == '#')) + else if (!(IN(state, ST_HEADING) && *(pline - 1) == '#')) CHECKCOPY(token, ptoken, token_size, pline); colno++; break; @@ -3064,7 +3061,7 @@ do_line: break; } - if (state & ST_MACRO_BODY) + if (IN(state, ST_MACRO_BODY)) { *ptoken = 0; size_t token_len = strlen((char*)token); @@ -3134,7 +3131,7 @@ do_line: break; } - if ((state & ST_TAG) && pline - 1 && *(pline - 1) == '{') + if ((IN(state, ST_TAG)) && pline - 1 && *(pline - 1) == '{') { end_tag = TRUE; pline++; @@ -3155,7 +3152,7 @@ do_line: break; } - if (state & ST_TAG) + if (IN(state, ST_TAG)) { state &= ~ST_TAG; *ptoken = 0; @@ -3190,9 +3187,9 @@ do_line: ST_INLINE_FOOTNOTE | ST_HEADING | ST_FOOTNOTE_TEXT | ST_LINK)) { - u8* tag = state & ST_KBD ? (u8*)"</kbd>" - : (u8*)"<kbd>"; - size_t tag_len = strlen((char*)tag); + u8* tag = IN(state, ST_KBD) ? (u8*)"</kbd>" + : (u8*)"<kbd>"; + size_t tag_len = strlen((char*)tag); size_t token_len = 0; *ptoken = 0; @@ -3220,7 +3217,8 @@ do_line: ST_PRE | ST_CODE | ST_HEADING))) { state ^= ST_KBD; - process_kbd(output, !(state & ST_KBD)); + process_kbd(output, + !(IN(state, ST_KBD))); output_firstcol = FALSE; } } @@ -3229,7 +3227,7 @@ do_line: colno += 2; } /* Partial tables (for templating) */ - else if (!(state & ST_PRE) && colno == 1 + else if (!(IN(state, ST_PRE)) && colno == 1 && strlen((char*)pline) > 1 && *(pline + 1) == '@') { skip_eol = TRUE; @@ -3289,11 +3287,11 @@ do_line: colno++; } } - else if (!(state & ST_PRE) && colno == 1) + else if (!(IN(state, ST_PRE)) && colno == 1) { skip_eol = TRUE; - if (state & ST_TABLE_HEADER) + if (IN(state, ST_TABLE_HEADER)) { state &= ~ST_TABLE_HEADER; state |= ST_TABLE_LINE; @@ -3301,7 +3299,7 @@ do_line: break; } - if (state & ST_TABLE_LINE) + if (IN(state, ST_TABLE_LINE)) { state &= ~ST_TABLE_LINE; state |= ST_TABLE; @@ -3311,7 +3309,7 @@ do_line: output_firstcol = FALSE; } } - else if (state & ST_TABLE) + else if (IN(state, ST_TABLE)) { if (!read_yaml_macros_and_links) { @@ -3332,7 +3330,7 @@ do_line: pline++; colno++; } - else if (state & ST_TABLE_HEADER) + else if (IN(state, ST_TABLE_HEADER)) { *ptoken = 0; if (!read_yaml_macros_and_links) @@ -3355,7 +3353,7 @@ do_line: pline++; colno++; } - else if (state & ST_TABLE) + else if (IN(state, ST_TABLE)) { *ptoken = 0; if (!read_yaml_macros_and_links) @@ -3413,7 +3411,7 @@ do_line: break; case '>': - if (state & ST_HTML_TAG) + if (IN(state, ST_HTML_TAG)) state &= ~ST_HTML_TAG; if (ANY(state, @@ -3430,7 +3428,7 @@ do_line: && colno == 1) { if (!read_yaml_macros_and_links - && !(state & ST_BLOCKQUOTE)) + && !(IN(state, ST_BLOCKQUOTE))) { process_blockquote(output, FALSE); output_firstcol = FALSE; @@ -3522,10 +3520,10 @@ do_line: break; } - if (state & ST_FOOTNOTE_TEXT) + if (IN(state, ST_FOOTNOTE_TEXT)) { if (!read_yaml_macros_and_links - && (state & ST_PARA_OPEN)) + && (IN(state, ST_PARA_OPEN))) { print_output(output, "</p>\n"); output_firstcol = TRUE; @@ -3603,7 +3601,7 @@ do_line: | ST_INLINE_FOOTNOTE | ST_LINK_SECOND_ARG_END | ST_MACRO_BODY | ST_PRE)) CHECKCOPY(token, ptoken, token_size, pline); - else if (*link_macro && (state & ST_LINK)) + else if (*link_macro && (IN(state, ST_LINK))) { u8* tag = (u8*)"<span>"; size_t tag_len = strlen((char*)tag); @@ -3639,7 +3637,8 @@ do_line: pline_len = strlen((char*)pline); - if (state & ST_LINK_SPAN && pline_len > 1 && *(pline + 1) == ']') + if (IN(state, ST_LINK_SPAN) && pline_len > 1 + && *(pline + 1) == ']') { u8* tag = (u8*)"</span>"; size_t tag_len = strlen((char*)tag); @@ -3664,7 +3663,7 @@ do_line: *ptoken = 0; if (!read_yaml_macros_and_links) { - if (state & ST_LINK_SECOND_ARG) + if (IN(state, ST_LINK_SECOND_ARG)) process_inline_link(output, link_text, link_prefix, get_value(macros, macros_count, @@ -3697,7 +3696,7 @@ do_line: } *ptoken = 0; - if (state & ST_INLINE_FOOTNOTE) + if (IN(state, ST_INLINE_FOOTNOTE)) { process_inline_footnote(token, read_yaml_macros_and_links, output); @@ -3708,7 +3707,7 @@ do_line: pline++; colno++; } - else if (state & ST_FOOTNOTE) + else if (IN(state, ST_FOOTNOTE)) { BOOL footnote_definition = (strlen((char*)pline) > 1) && (*(pline + 1) == ':') @@ -3737,7 +3736,7 @@ do_line: state |= ST_FOOTNOTE_TEXT; } } - else if (state & ST_LINK_SECOND_ARG) + else if (IN(state, ST_LINK_SECOND_ARG)) { if (!read_yaml_macros_and_links) process_link(output, link_text, link_prefix, @@ -3749,7 +3748,7 @@ do_line: pline++; colno++; } - else if (state & ST_IMAGE_SECOND_ARG) + else if (IN(state, ST_IMAGE_SECOND_ARG)) { if (!read_yaml_macros_and_links) process_image(output, link_text, @@ -3817,7 +3816,7 @@ do_line: colno += 2; RESET_TOKEN(token, ptoken, token_size); keep_token = FALSE; - if (state & ST_LINK) + if (IN(state, ST_LINK)) state |= ST_LINK_SECOND_ARG; else state |= ST_IMAGE_SECOND_ARG; @@ -3908,12 +3907,12 @@ do_line: if (strlen((char*)pline) > 1 && *(pline + 1) == '$') { - if (state & ST_FORMULA) + if (IN(state, ST_FORMULA)) exit(error(1, (u8*)"Display formula within an" " open formula")); - if (!(state & ST_DISPLAY_FORMULA)) + if (!(IN(state, ST_DISPLAY_FORMULA))) { /* Output existing text up to $$ */ process_text_token(output, line, link_prefix, @@ -3926,7 +3925,7 @@ do_line: state ^= ST_DISPLAY_FORMULA; - if (state & ST_DISPLAY_FORMULA) + if (IN(state, ST_DISPLAY_FORMULA)) keep_token = TRUE; else { @@ -3944,12 +3943,12 @@ do_line: } else { - if (state & ST_DISPLAY_FORMULA) + if (IN(state, ST_DISPLAY_FORMULA)) exit(error(1, (u8*)"Formula within an open" " display formula")); - if (!(state & ST_FORMULA)) + if (!(IN(state, ST_FORMULA))) { /* Output existing text up to $ */ process_text_token(output, line, link_prefix, @@ -3962,7 +3961,7 @@ do_line: state ^= ST_FORMULA; - if (state & ST_FORMULA) + if (IN(state, ST_FORMULA)) keep_token = TRUE; else { @@ -4000,7 +3999,7 @@ do_line: else if (colno == 1 && strlen((char*)pline) > 1 && (*(pline + 1) == '.' || *(pline + 1) == ')')) { - if (state & ST_LIST) + if (IN(state, ST_LIST)) { state &= ~ST_LIST; if (!read_yaml_macros_and_links) @@ -4011,7 +4010,7 @@ do_line: } if (!read_yaml_macros_and_links) { - if (!(state & ST_NUMLIST)) + if (!(IN(state, ST_NUMLIST))) process_numlist_start(output); else process_list_item_end(output); @@ -4043,7 +4042,7 @@ do_line: done_line: *ptoken = 0; - if (*token && read_yaml_macros_and_links && (state & ST_YAML_VAL)) + if (*token && read_yaml_macros_and_links && (IN(state, ST_YAML_VAL))) { *ptoken = 0; if (!vars) @@ -4080,7 +4079,7 @@ done_line: { *ptoken = 0; size_t token_len = strlen((char*)token); - if (state & ST_MACRO_BODY) + if (IN(state, ST_MACRO_BODY)) { skip_eol = TRUE; if (!read_yaml_macros_and_links) @@ -4129,7 +4128,7 @@ done_line: } skip_macro_read:; } - else if (state & ST_FOOTNOTE_TEXT) + else if (IN(state, ST_FOOTNOTE_TEXT)) { skip_eol = TRUE; if (!read_yaml_macros_and_links) @@ -4204,7 +4203,7 @@ done_line: plinks->value_size - 1); } } - else if (state & ST_HEADING) + else if (IN(state, ST_HEADING)) { state &= ~(ST_HEADING | ST_HEADING_TEXT); if (!read_yaml_macros_and_links) @@ -4232,19 +4231,19 @@ done_line: | ST_LINK_SECOND_ARG_END) && (!*pbuffer || *pbuffer == '\n')) { - if (state & ST_PARA_OPEN) + if (IN(state, ST_PARA_OPEN)) { if (!read_yaml_macros_and_links) { print_output(output, "</p>"); output_firstcol = FALSE; } - if (state & ST_LIST) + if (IN(state, ST_LIST)) skip_eol = TRUE; state &= ~ST_PARA_OPEN; } - if (!*pbuffer && (state & ST_LIST)) + if (!*pbuffer && (IN(state, ST_LIST))) { if (!read_yaml_macros_and_links) { @@ -4254,7 +4253,7 @@ done_line: state &= ~ST_LIST; } - if (!*pbuffer && (state & ST_NUMLIST)) + if (!*pbuffer && (IN(state, ST_NUMLIST))) { if (!read_yaml_macros_and_links) { @@ -4264,7 +4263,7 @@ done_line: state &= ~ST_NUMLIST; } - if (!*pbuffer && (state & ST_FOOTNOTE_TEXT)) + if (!*pbuffer && (IN(state, ST_FOOTNOTE_TEXT))) { state &= ~ST_FOOTNOTE_TEXT; @@ -4312,7 +4311,7 @@ done_line: } } - if (state & ST_BLOCKQUOTE && (!*pbuffer || *pbuffer != '>')) + if (IN(state, ST_BLOCKQUOTE) && (!*pbuffer || *pbuffer != '>')) { state &= ~ST_BLOCKQUOTE; process_blockquote(output, TRUE); @@ -4331,7 +4330,7 @@ done_line: state &= ~(ST_TABLE_HEADER | ST_TABLE_LINE); } - if ((state & ST_TABLE) && (!line_len || !*pbuffer)) + if ((IN(state, ST_TABLE)) && (!line_len || !*pbuffer)) { if (!read_yaml_macros_and_links) { @@ -4356,7 +4355,7 @@ done_line: if (!keep_token) RESET_TOKEN(token, ptoken, token_size); - if (!skip_change_first_line_in_doc && !(state & ST_YAML)) + if (!skip_change_first_line_in_doc && !(IN(state, ST_YAML))) first_line_in_doc = FALSE; skip_change_first_line_in_doc = FALSE; @@ -4568,4 +4567,3 @@ main(const int argc, const char** argv) return result; } -