1 /*
2 * Because sed can't handle really long lines.
3 */
4 #include <u.h>
5 #include <libc.h>
6 #include <bio.h>
7
8 Biobuf bout;
9
10 void
cat(Biobuf * b)11 cat(Biobuf *b)
12 {
13 int c;
14
15 while((c = Bgetrune(b)) >= 0){
16 switch(c){
17 case '<':
18 Bprint(&bout, "<");
19 break;
20 case '>':
21 Bprint(&bout, ">");
22 break;
23 case '&':
24 Bprint(&bout, "&");
25 break;
26 default:
27 Bputrune(&bout, c);
28 break;
29 }
30 }
31 }
32
33 void
main(int argc,char * argv[])34 main(int argc, char *argv[])
35 {
36 int i;
37 Biobuf *b, bin;
38
39 argv0 = "htmlsanitize";
40 Binit(&bout, 1, OWRITE);
41 if(argc == 1){
42 Binit(&bin, 0, OREAD);
43 cat(&bin);
44 }
45 else for(i=1; i<argc; i++){
46 b = Bopen(argv[i], OREAD);
47 if(b == nil)
48 sysfatal("can't open %s: %r", argv[i]);
49 else{
50 cat(b);
51 Bterm(b);
52 }
53 }
54 Bflush(&bout);
55 exits(0);
56 }
57