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