int cdRemove(char *dir, char *file) { if(myChdir(dir) < 0) return -1; return remove(file); }
int cdOpen(char *dir, char *file, int mode) { if(myChdir(dir) < 0) return -1; return open(file, mode); }
int cdDirwstat(char *dir, char *file, Dir *d) { if(myChdir(dir) < 0) return -1; return dirwstat(file, d); }
Dir* cdDirstat(char *dir, char *file) { if(myChdir(dir) < 0) return nil; return dirstat(file); }
int cdCreate(char *dir, char *file, int mode, ulong perm) { if(myChdir(dir) < 0) return -1; return create(file, mode, perm); }
void setupuser(AuthInfo *ai) { Waitmsg *w; int pid; if(ai){ strecpy(username, username+sizeof username, ai->cuid); if(auth_chuid(ai, nil) < 0) bye("user auth failed: %r"); auth_freeAI(ai); }else strecpy(username, username+sizeof username, getuser()); if(newns(username, 0) < 0) bye("user login failed: %r"); /* * hack to allow access to outgoing smtp forwarding */ enableForwarding(); snprint(mboxDir, MboxNameLen, "/mail/box/%s", username); if(myChdir(mboxDir) < 0) bye("can't open user's mailbox"); switch(pid = fork()){ case -1: bye("can't initialize mail system"); break; case 0: execl("/bin/upas/fs", "upas/fs", "-np", nil); _exits("rob1"); _exits(0); break; default: break; } if((w=wait()) == nil || w->pid != pid || w->msg[0] != '\0') bye("can't initialize mail system"); free(w); }