Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

#include <u.h>
#include <libc.h>
#include <fcall.h>
#include <9pclient.h>

#include "fsimpl.h"

int
fsaccess(CFsys *fsys, char *name, int mode)
{
        CFid *fid;
        Dir *db;
        static char omode[] = {
                0,
                OEXEC,
                OWRITE,
                ORDWR,
                OREAD,
                OEXEC,  /* only approximate */
                ORDWR,
                ORDWR   /* only approximate */
        };

        if(mode == AEXIST){
                db = fsdirstat(fsys, name);
                free(db);
                if(db != nil)
                        return 0;
                return -1;
        }
        fid = fsopen(fsys, name, omode[mode&7]);
        if(fid != nil){
                fsclose(fid);
                return 0;
        }
        return -1;
}