From: Andrew Tridgell Date: Thu, 8 Oct 1998 01:23:33 +0000 (+0000) Subject: fixed a problem with fchdir() that broke "cvs -d" in smbsh X-Git-Tag: samba-4.0.0alpha6~801^2~21519 X-Git-Url: http://git.samba.org/?p=samba.git;a=commitdiff_plain;h=ef2e37cf945a3f95d4e7df8b3b915c864d4dc100 fixed a problem with fchdir() that broke "cvs -d" in smbsh (This used to be commit 6121f7c8c2d63fd12266327a6f2ac9a5e717dccc) --- diff --git a/source3/smbwrapper/smbw_dir.c b/source3/smbwrapper/smbw_dir.c index 74b58a7d3b9..6453c55871f 100644 --- a/source3/smbwrapper/smbw_dir.c +++ b/source3/smbwrapper/smbw_dir.c @@ -587,19 +587,23 @@ a wrapper for fchdir() int smbw_fchdir(unsigned int fd) { struct smbw_dir *dir; + int ret; smbw_busy++; dir = smbw_dir(fd); - if (!dir) { - errno = EBADF; + if (dir) { smbw_busy--; - return -1; + return chdir(dir->path); } + ret = real_fchdir(fd); + if (ret == 0) { + sys_getwd(smbw_cwd); + } + smbw_busy--; - - return chdir(dir->path); + return ret; } /***************************************************** diff --git a/source3/smbwrapper/wrapped.c b/source3/smbwrapper/wrapped.c index 790d56c9366..d5f47aac46c 100644 --- a/source3/smbwrapper/wrapped.c +++ b/source3/smbwrapper/wrapped.c @@ -164,11 +164,7 @@ int fchdir(int fd) { - if (smbw_fd(fd)) { - return smbw_fchdir(fd); - } - - return real_fchdir(fd); + return smbw_fchdir(fd); } #ifdef HAVE___FCHDIR