]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libhttpd/urlfmt.c
pc: replace duplicated and broken mmu flush code in vunmap()
[plan9front.git] / sys / src / libhttpd / urlfmt.c
1 #include <u.h>
2 #include <libc.h>
3 #include <bin.h>
4 #include <httpd.h>
5
6 int
7 hurlfmt(Fmt *f)
8 {
9         char buf[HMaxWord*2];
10         Rune r;
11         char *s;
12         int t;
13
14         s = va_arg(f->args, char*);
15         for(t = 0; t < sizeof(buf) - 8; ){
16                 s += chartorune(&r, s);
17                 if(r == 0)
18                         break;
19                 if(r <= ' ' || r == '%' || r >= Runeself)
20                         t += snprint(&buf[t], sizeof(buf)-t, "%%%2.2x", r);
21                 else
22                         buf[t++] = r;
23         }
24         buf[t] = 0;
25         return fmtstrcpy(f, buf);
26 }