fixed a problem with fchdir() that broke "cvs -d" in smbsh
authorAndrew Tridgell <tridge@samba.org>
Thu, 8 Oct 1998 01:23:33 +0000 (01:23 +0000)
committerAndrew Tridgell <tridge@samba.org>
Thu, 8 Oct 1998 01:23:33 +0000 (01:23 +0000)
source/smbwrapper/smbw_dir.c
source/smbwrapper/wrapped.c

index 74b58a7d3b917a30236fa188f7fcce46ff102ff5..6453c55871f62a89a044181af6e91c9406b5b9dd 100644 (file)
@@ -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;
 }
 
 /***************************************************** 
index 790d56c9366609f5e1b53e1764e7fe41951e1a34..d5f47aac46c348be6c45a7f3776d3d0f745f86b1 100644 (file)
 
  int fchdir(int fd)
 {
-       if (smbw_fd(fd)) {
-               return smbw_fchdir(fd);
-       }
-
-       return real_fchdir(fd);
+       return smbw_fchdir(fd);
 }
 
 #ifdef HAVE___FCHDIR