Stefan Tibus <[EMAIL PROTECTED]> once said:
> 4) the filesystem suffers from several bugs
>    a) wmiir read /tag  or  /def/tag  or  /ws/tag  give the same output
>       though not all of them are shown when reading the directories
>    b) the same applies to "tags"
>    c) wmiir read /ws  and  wmiir read /ws/sel  only show client 0
>       and others (e.g. 1) are accessible

The attached patch fixes the issues described in 4a-b. It was just a
case of falling through cases. :)

The behaviour in 4c, however, is correct. /ws shows the namespace of the
current workspace, including the areas of that workspace. For example,
if you had two columns and focus was on the second, /ws would look like:

sh% wmiir read /ws
d-r-x------ apm apm     0 Sun Mar 19 23:50:59 2006 0
d-r-x------ apm apm     0 Sun Mar 19 23:50:59 2006 1
---w------- apm apm     0 Sun Mar 19 23:50:59 2006 ctl
d-r-x------ apm apm     0 Sun Mar 19 23:50:59 2006 sel
--rw------- apm apm     1 Sun Mar 19 23:50:59 2006 tag

0 is the floating area, 1 is the first column, and sel is the second
column. You can still access /ws/2 but listing it as sel has advantages.

For /ws/sel, the client namespaces in the selected area are listed. If
you have a column with three clients and focus is on the first client,
/ws/sel would look like:

d-r-x------ apm apm     0 Mon Mar 20 00:00:59 2006 1
d-r-x------ apm apm     0 Mon Mar 20 00:00:59 2006 2
---w------- apm apm     0 Mon Mar 20 00:00:59 2006 ctl
--rw------- apm apm     5 Mon Mar 20 00:00:59 2006 mode
d-r-x------ apm apm     0 Mon Mar 20 00:00:59 2006 sel

Here, sel is the namespace of client 0 (in respect to the area), 1 is
client 1, and 2 is client 2.

regards,
  ality

-- 
"The right to be left alone is indeed the beginning of all freedom."
diff -r 6fae6f4c5e82 cmd/wm/fs.c
--- a/cmd/wm/fs.c       Sun Mar 19 22:50:49 2006 +0100
+++ b/cmd/wm/fs.c       Sun Mar 19 23:40:54 2006 -0800
@@ -401,10 +401,20 @@ mkqid(Qid *dir, char *wname, Qid *new)
                new->type = IXP_QTFILE;
                new->path = mkqpath(type, qpath_i1id(dir->path), 
qpath_i2id(dir->path), qpath_i3id(dir->path));
                break;
+       case FsFtag:
+               if(dir_i1 == -1 || dir_type != FsDws)
+                       return -1;
+               new->type = IXP_QTFILE;
+               new->path = mkqpath(type, qpath_i1id(dir->path), 
qpath_i2id(dir->path), qpath_i3id(dir->path));
+               break;
        case FsFgeom:
        case FsFname:
        case FsFclass:
+               if(dir_type == FsDroot)
+                       return -1;
        case FsFtags:
+               if(dir_type != FsDroot && dir_type != FsDGclient && dir_type != 
FsDclient)
+                       return -1;
                if((dir_type == FsDclient) && ((dir_i1 == -1 || dir_i2 == -1 || 
dir_i3 == -1)))
                        return -1;
                else if((dir_type == FsDGclient) && (dir_i1 == -1))
_______________________________________________
[email protected] mailing list
http://wmii.de/cgi-bin/mailman/listinfo/wmii

Reply via email to