1*9a747e4fSDavid du Colombier #include <u.h>
2*9a747e4fSDavid du Colombier #include <libc.h>
3*9a747e4fSDavid du Colombier #include <fcall.h>
4*9a747e4fSDavid du Colombier
5*9a747e4fSDavid du Colombier static char *modes[] =
6*9a747e4fSDavid du Colombier {
7*9a747e4fSDavid du Colombier "---",
8*9a747e4fSDavid du Colombier "--x",
9*9a747e4fSDavid du Colombier "-w-",
10*9a747e4fSDavid du Colombier "-wx",
11*9a747e4fSDavid du Colombier "r--",
12*9a747e4fSDavid du Colombier "r-x",
13*9a747e4fSDavid du Colombier "rw-",
14*9a747e4fSDavid du Colombier "rwx",
15*9a747e4fSDavid du Colombier };
16*9a747e4fSDavid du Colombier
17*9a747e4fSDavid du Colombier static void
rwx(long m,char * s)18*9a747e4fSDavid du Colombier rwx(long m, char *s)
19*9a747e4fSDavid du Colombier {
20*9a747e4fSDavid du Colombier strncpy(s, modes[m], 3);
21*9a747e4fSDavid du Colombier }
22*9a747e4fSDavid du Colombier
23*9a747e4fSDavid du Colombier int
dirmodefmt(Fmt * f)24*9a747e4fSDavid du Colombier dirmodefmt(Fmt *f)
25*9a747e4fSDavid du Colombier {
26*9a747e4fSDavid du Colombier static char buf[16];
27*9a747e4fSDavid du Colombier ulong m;
28*9a747e4fSDavid du Colombier
29*9a747e4fSDavid du Colombier m = va_arg(f->args, ulong);
30*9a747e4fSDavid du Colombier
31*9a747e4fSDavid du Colombier if(m & DMDIR)
32*9a747e4fSDavid du Colombier buf[0]='d';
33*9a747e4fSDavid du Colombier else if(m & DMAPPEND)
34*9a747e4fSDavid du Colombier buf[0]='a';
35*9a747e4fSDavid du Colombier else if(m & DMAUTH)
36*9a747e4fSDavid du Colombier buf[0]='A';
37*9a747e4fSDavid du Colombier else
38*9a747e4fSDavid du Colombier buf[0]='-';
39*9a747e4fSDavid du Colombier if(m & DMEXCL)
40*9a747e4fSDavid du Colombier buf[1]='l';
41*9a747e4fSDavid du Colombier else
42*9a747e4fSDavid du Colombier buf[1]='-';
43*9a747e4fSDavid du Colombier rwx((m>>6)&7, buf+2);
44*9a747e4fSDavid du Colombier rwx((m>>3)&7, buf+5);
45*9a747e4fSDavid du Colombier rwx((m>>0)&7, buf+8);
46*9a747e4fSDavid du Colombier buf[11] = 0;
47*9a747e4fSDavid du Colombier return fmtstrcpy(f, buf);
48*9a747e4fSDavid du Colombier }
49