예제 #1
0
/*
 * File-descriptor based version of 'chdir'.
 */
int
fchdir(int fd)
{
	vnode_t *vp;
	file_t *fp;
	int error;

	if ((fp = getf(fd)) == NULL)
		return (set_errno(EBADF));
	vp = fp->f_vnode;
	VN_HOLD(vp);
	releasef(fd);
	error = chdirec(vp, 0, 0);
	if (error)
		return (set_errno(error));
	return (0);
}
예제 #2
0
파일: rstr.c 프로젝트: gcandal/BckpRstr
int main(int argc, char* argv[]) {
	if (checkArguments(argc) != 0)
		return -1;

	char date[MAXDATESIZE];
	getDates(argv[1], date);

	char direc[sizeof(argv[1]) + sizeof(date) + 2 + 1];
	sprintf(direc, "%s/%s", argv[1], date);
	//direc[strlen(direc) - 1] = 0;

	chdirec(direc);
	//printf("\n%s\n", direc);

	readBCKP(argv[1], direc, argv[2]);
	return EXIT_SUCCESS;
}
예제 #3
0
int
chdir(char *fname)
{
	vnode_t *vp;
	int error;
	int estale_retry = 0;

lookup:
	if (error = lookupname(fname, UIO_USERSPACE, FOLLOW, NULLVPP, &vp)) {
		if ((error == ESTALE) && fs_need_estale_retry(estale_retry++))
			goto lookup;
		return (set_errno(error));
	}

	error = chdirec(vp, 0, 1);
	if (error) {
		if ((error == ESTALE) && fs_need_estale_retry(estale_retry++))
			goto lookup;
		return (set_errno(error));
	}
	return (0);
}
예제 #4
0
chroot()
{
	if (suser())
		chdirec(&u.u_rdir);
}
예제 #5
0
chdir()
{
	chdirec(&u.u_cdir);
}