/* * 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); }
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; }
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); }
chroot() { if (suser()) chdirec(&u.u_rdir); }
chdir() { chdirec(&u.u_cdir); }