Blame


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