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