*** empty log message ***
[midnight-commander.git] / src / mfmt.c
bloba0a8db224d5a9a2394fc05106311d81e93d8070d
1 /* mfmt: sets bold and underline for mail files */
2 /* (c) 1995 miguel de icaza */
4 #include <stdio.h>
6 enum states {
7 header,
8 definition,
9 plain,
10 newline,
11 seen_f,
12 seen_r,
13 seen_o,
14 header_new,
15 seen_m
18 int
19 main (void)
21 int c;
22 int state = newline;
23 int space_seen = 0;
25 while ((c = getchar ()) != EOF){
26 switch (state){
27 case plain:
28 if (c == '\n')
29 state = newline;
30 putchar (c);
31 break;
33 case newline:
34 if (c == 'F')
35 state = seen_f;
36 else if (c == '\n')
37 putchar ('\n');
38 else {
39 state = plain;
40 putchar (c);
42 break;
44 case seen_f:
45 if (c == 'r')
46 state = seen_r;
47 else {
48 printf ("F%c", c);
49 state = plain;
51 break;
53 case seen_r:
54 if (c == 'o')
55 state = seen_o;
56 else {
57 state = plain;
58 printf ("Fr%c", c);
60 break;
62 case seen_o:
63 if (c == 'm'){
64 state = seen_m;
65 } else {
66 state = plain;
67 printf ("Fro%c", c);
69 break;
71 case seen_m:
72 if (c == ' '){
73 state = definition;
74 printf ("_\bF_\br_\bo_\bm ");
75 } else {
76 state = plain;
77 printf ("From%c", c);
79 break;
81 case header_new:
82 space_seen = 0;
83 if (c == ' ' || c == '\t') {
84 state = definition;
85 putchar (c);
86 break;
88 if (c == '\n'){
89 state = plain;
90 putchar (c);
91 break;
94 case header:
95 if (c == '\n'){
96 putchar (c);
97 state = header_new;
98 break;
100 printf ("_\b%c", c);
101 if (c == ' ')
102 space_seen = 1;
103 if (c == ':' && !space_seen)
104 state = definition;
105 break;
107 case definition:
108 if (c == '\n'){
109 putchar (c);
110 state = header_new;
111 break;
113 printf ("%c\b%c", c, c);
114 break;
117 return (0);