Esempio n. 1
0
int
cdRemove(char *dir, char *file)
{
	if(myChdir(dir) < 0)
		return -1;
	return remove(file);
}
Esempio n. 2
0
int
cdOpen(char *dir, char *file, int mode)
{
	if(myChdir(dir) < 0)
		return -1;
	return open(file, mode);
}
Esempio n. 3
0
int
cdDirwstat(char *dir, char *file, Dir *d)
{
	if(myChdir(dir) < 0)
		return -1;
	return dirwstat(file, d);
}
Esempio n. 4
0
Dir*
cdDirstat(char *dir, char *file)
{
	if(myChdir(dir) < 0)
		return nil;
	return dirstat(file);
}
Esempio n. 5
0
int
cdCreate(char *dir, char *file, int mode, ulong perm)
{
	if(myChdir(dir) < 0)
		return -1;
	return create(file, mode, perm);
}
Esempio n. 6
0
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);
}