]> diplodocus.org Git - nmh/blob - h/fmt_compile.h
Fix invalid pointer arithmetic.
[nmh] / h / fmt_compile.h
1 /* fmt_compile.h -- format types
2 */
3
4 /* types that output text */
5 #define FT_COMP 1 /* the text of a component */
6 #define FT_COMPF 2 /* comp text, filled */
7 #define FT_LIT 3 /* literal text */
8 #define FT_LITF 4 /* literal text, filled */
9 #define FT_CHAR 5 /* a single ASCII character */
10 #define FT_NUM 6 /* "value" as decimal number */
11 #define FT_NUMF 7 /* "value" as filled dec number */
12 #define FT_STR 8 /* "str" as text */
13 #define FT_STRF 9 /* "str" as text, filled */
14 #define FT_STRFW 10 /* "str" as text, filled, width in "value" */
15 #define FT_STRLIT 11 /* "str" as text, no space compression */
16 #define FT_STRLITZ 12 /* literal text with zero display width */
17 #define FT_PUTADDR 13 /* split and print address line */
18
19 /* types that modify the "str" or "value" registers */
20 #define FT_LS_COMP 14 /* set "str" to component text */
21 #define FT_LS_LIT 15 /* set "str" to literal text */
22 #define FT_LS_GETENV 16 /* set "str" to getenv(text) */
23 #define FT_LS_CFIND 17 /* set "str" to context_find(text) */
24 #define FT_LS_DECODECOMP 18 /* set "str" to decoded component text */
25 #define FT_LS_DECODE 19 /* decode "str" as RFC-2047 header */
26 #define FT_LS_TRIM 20 /* trim trailing white space from "str" */
27 #define FT_LV_COMP 21 /* set "value" to comp (as dec. num) */
28 #define FT_LV_COMPFLAG 22 /* set "value" to comp flag word */
29 #define FT_LV_LIT 23 /* set "value" to literal num */
30 #define FT_LV_DAT 24 /* set "value" to dat[n] */
31 #define FT_LV_STRLEN 25 /* set "value" to length of "str" */
32 #define FT_LV_PLUS_L 26 /* set "value" += literal */
33 #define FT_LV_MINUS_L 27 /* set "value" -= literal */
34 #define FT_LV_MULTIPLY_L 28 /* set "value" to value * literal */
35 #define FT_LV_DIVIDE_L 29 /* set "value" to value / literal */
36 #define FT_LV_MODULO_L 30 /* set "value" to value % literal */
37 #define FT_LV_CHAR_LEFT 31 /* set "value" to char left in output */
38
39 #define FT_LS_MONTH 32 /* set "str" to tws month */
40 #define FT_LS_LMONTH 33 /* set "str" to long tws month */
41 #define FT_LS_ZONE 34 /* set "str" to tws timezone */
42 #define FT_LS_DAY 35 /* set "str" to tws weekday */
43 #define FT_LS_WEEKDAY 36 /* set "str" to long tws weekday */
44 #define FT_LS_822DATE 37 /* set "str" to 822 date str */
45 #define FT_LS_PRETTY 38 /* set "str" to pretty (?) date str */
46 #define FT_LS_KILO 39 /* set "str" to "<value>[KMGT]" */
47 #define FT_LS_KIBI 40 /* set "str" to "<value>[KMGT]" */
48 #define FT_LV_SEC 41 /* set "value" to tws second */
49 #define FT_LV_MIN 42 /* set "value" to tws minute */
50 #define FT_LV_HOUR 43 /* set "value" to tws hour */
51 #define FT_LV_MDAY 44 /* set "value" to tws day of month */
52 #define FT_LV_MON 45 /* set "value" to tws month */
53 #define FT_LV_YEAR 46 /* set "value" to tws year */
54 #define FT_LV_YDAY 47 /* set "value" to tws day of year */
55 #define FT_LV_WDAY 48 /* set "value" to tws weekday */
56 #define FT_LV_ZONE 49 /* set "value" to tws timezone */
57 #define FT_LV_CLOCK 50 /* set "value" to tws clock */
58 #define FT_LV_RCLOCK 51 /* set "value" to now - tws clock */
59 #define FT_LV_DAYF 52 /* set "value" to tws day flag */
60 #define FT_LV_DST 53 /* set "value" to tws daylight savings flag */
61 #define FT_LV_ZONEF 54 /* set "value" to tws timezone flag */
62
63 #define FT_LS_PERS 55 /* set "str" to person part of addr */
64 #define FT_LS_MBOX 56 /* set "str" to mbox part of addr */
65 #define FT_LS_HOST 57 /* set "str" to host part of addr */
66 #define FT_LS_PATH 58 /* set "str" to route part of addr */
67 #define FT_LS_GNAME 59 /* set "str" to group part of addr */
68 #define FT_LS_NOTE 60 /* set "str" to comment part of addr */
69 #define FT_LS_ADDR 61 /* set "str" to mbox@host */
70 #define FT_LS_822ADDR 62 /* set "str" to 822 format addr */
71 #define FT_LS_FRIENDLY 63 /* set "str" to "friendly" format addr */
72 #define FT_LV_HOSTTYPE 64 /* set "value" to addr host type */
73 #define FT_LV_INGRPF 65 /* set "value" to addr in-group flag */
74 #define FT_LS_UNQUOTE 66 /* remove RFC 2822 quotes from "str" */
75 #define FT_LV_NOHOSTF 67 /* set "value" to addr no-host flag */
76
77 /* Date Coercion */
78 #define FT_LOCALDATE 68 /* Coerce date to local timezone */
79 #define FT_GMTDATE 69 /* Coerce date to GMT */
80
81 /* pre-format processing */
82 #define FT_PARSEDATE 70 /* parse comp into a date (tws) struct */
83 #define FT_PARSEADDR 71 /* parse comp into a mailaddr struct */
84 #define FT_FORMATADDR 72 /* let external routine format addr */
85 #define FT_CONCATADDR 73 /* formataddr w/out duplicate removal */
86 #define FT_MYMBOX 74 /* do "mymbox" test on comp */
87 #define FT_GETMYMBOX 75 /* return "mymbox" mailbox string */
88 #define FT_GETMYADDR 76 /* return "mymbox" addr string */
89
90 /* conditionals & control flow (must be last) */
91 #define FT_SAVESTR 77 /* save current str reg */
92 #define FT_DONE 78 /* stop formatting */
93 #define FT_PAUSE 79 /* pause */
94 #define FT_NOP 80 /* no-op */
95 #define FT_GOTO 81 /* (relative) goto */
96 #define FT_IF_S_NULL 82 /* test if "str" null */
97 #define FT_IF_S 83 /* test if "str" non-null */
98 #define FT_IF_V_EQ 84 /* test if "value" = literal */
99 #define FT_IF_V_NE 85 /* test if "value" != literal */
100 #define FT_IF_V_GT 86 /* test if "value" > literal */
101 #define FT_IF_MATCH 87 /* test if "str" contains literal */
102 #define FT_IF_AMATCH 88 /* test if "str" starts with literal */
103 #define FT_S_NULL 89 /* V = 1 if "str" null */
104 #define FT_S_NONNULL 90 /* V = 1 if "str" non-null */
105 #define FT_V_EQ 91 /* V = 1 if "value" = literal */
106 #define FT_V_NE 92 /* V = 1 if "value" != literal */
107 #define FT_V_GT 93 /* V = 1 if "value" > literal */
108 #define FT_V_MATCH 94 /* V = 1 if "str" contains literal */
109 #define FT_V_AMATCH 95 /* V = 1 if "str" starts with literal */
110
111 #define IF_FUNCS FT_S_NULL /* start of "if" functions */