source: trunk/athena/bin/lpr/filters/ln01filter.l @ 16

Revision 16, 1.4 KB checked in by builder, 39 years ago (diff)
totally new ln01 filter martillo
Line 
1%{
2#include <sys/file.h>
3#include <signal.h>
4extern int sighandler();
5struct sigvec vector =
6{
7        sighandler,
8        (int) 0xFFFFFFFF,
9        (int) 0
10};
11char *reset="\033c";                    /* ris  */
12char *land_length="\033[2550t";
13char *landscape="\033[10m";
14char *port_length="\033[3300t";         /* form length = 11 inches */
15char *portrait="\033[11m";
16char *beginunderline = "\033[4m";
17char *endunderline = "\033[0m";
18char *mode;
19char *form_length;
20%}
21PRINTABLE    [0-9A-Za-z \t`\[\];'\\<,./-=~!@#$%^&*()_+{}:"|>?]
22%%
23\f                      {
24                                printf("\f%s%s%s",reset,mode,form_length);
25                                fflush(stdout);
26                        }
27(_\b{PRINTABLE})+       {
28                                register char *p = &yytext[0];
29                                printf(beginunderline);
30                                while(*p)
31                                {
32                                        if((*p != '_') && (*p != '\b'))
33                                        {
34                                                putchar(*p);
35                                        }
36                                        ++p;
37                                }
38                                printf(endunderline);
39                                fflush(stdout);
40                        }
41%%
42
43yywrap()
44{
45        fflush(stdout);
46        flock(1, LOCK_UN);
47        return(1);
48}
49main(argc,argv)
50int argc;
51register char *argv[];
52{
53        register int i;
54        for(i = 1; i <= 27; ++i) {
55                sigvec(i, &vector, 0);
56        }
57        flock(1, LOCK_EX);
58        if(!strcmp(argv[0], "ln01l")) {
59                mode = landscape;
60                form_length = land_length;
61        }
62        else {
63                mode = portrait;
64                form_length = port_length;
65        }
66        setbuf(stdout, NULL);
67        printf("%s%s%s",reset,mode,form_length);
68        fflush(stdout);
69        while(1) {
70                        if(yylex() <= 0) break;
71        }
72}
73
74int
75sighandler(sig)
76register int sig;
77{
78        yywrap();
79        exit(sig);
80}
81
82/* Local Modes: */
83/* Mode:C */
84/* End: */
Note: See TracBrowser for help on using the repository browser.