~ubuntu-branches/ubuntu/lucid/9base/lucid

« back to all changes in this revision

Viewing changes to lib9/dirmodefmt.c

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Baumann
  • Date: 2006-01-25 15:33:00 UTC
  • Revision ID: james.westby@ubuntu.com-20060125153300-6hh4p9wx8iqqply5
Tags: upstream-2
ImportĀ upstreamĀ versionĀ 2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <u.h>
 
2
#include <libc.h>
 
3
 
 
4
static char *modes[] =
 
5
{
 
6
        "---",
 
7
        "--x",
 
8
        "-w-",
 
9
        "-wx",
 
10
        "r--",
 
11
        "r-x",
 
12
        "rw-",
 
13
        "rwx",
 
14
};
 
15
 
 
16
static void
 
17
rwx(long m, char *s)
 
18
{
 
19
        strncpy(s, modes[m], 3);
 
20
}
 
21
 
 
22
int
 
23
dirmodefmt(Fmt *f)
 
24
{
 
25
        static char buf[16];
 
26
        ulong m;
 
27
 
 
28
        m = va_arg(f->args, ulong);
 
29
 
 
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
        else if(m & DMDEVICE)
 
37
                buf[0] = 'D';
 
38
        else if(m & DMSOCKET)
 
39
                buf[0] = 'S';
 
40
        else if(m & DMNAMEDPIPE)
 
41
                buf[0] = 'P';
 
42
        else
 
43
                buf[0]='-';
 
44
 
 
45
        /*
 
46
         * It's a little weird to have DMSYMLINK conflict with DMEXCL
 
47
         * here, but since you can have symlinks to any of the above
 
48
         * things, this is a better display.  Especially since we don't do
 
49
         * DMEXCL on any of the supported systems.
 
50
         */
 
51
        if(m & DMEXCL)
 
52
                buf[1]='l';
 
53
        else if(m & DMSYMLINK)
 
54
                buf[1] = 'L';
 
55
        else
 
56
                buf[1]='-';
 
57
        rwx((m>>6)&7, buf+2);
 
58
        rwx((m>>3)&7, buf+5);
 
59
        rwx((m>>0)&7, buf+8);
 
60
        buf[11] = 0;
 
61
        return fmtstrcpy(f, buf);
 
62
}