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