fixed a bug in time setting (utime() call)
authorAndrew Tridgell <tridge@samba.org>
Tue, 6 Oct 1998 11:56:44 +0000 (11:56 +0000)
committerAndrew Tridgell <tridge@samba.org>
Tue, 6 Oct 1998 11:56:44 +0000 (11:56 +0000)
(This used to be commit 2f4506a33c7015f2a176929d794c6c40f1433591)

source3/smbwrapper/smbw.c
source3/smbwrapper/smbw_dir.c

index ab2b807f6c6db0a8a4269098fb92bfedd351b2be..e5359360c3db4e37f18174f6ebe2bc96da6287ea 100644 (file)
@@ -955,8 +955,11 @@ static int smbw_settime(const char *fname, time_t t)
        }
 
        if (!cli_setatr(&srv->cli, path, mode, t)) {
-               errno = smbw_errno(&srv->cli);
-               goto failed;
+               /* some servers always refuse directory changes */
+               if (!(mode & aDIR)) {
+                       errno = smbw_errno(&srv->cli);
+                       goto failed;
+               }
        }
 
        smbw_busy--;
index 5223183d5640c78a07238d9aa82adc6fd1e311b2..a932c102dc3ca4cccaa93c168ed967d18eaca19d 100644 (file)
@@ -374,14 +374,13 @@ int smbw_chdir(const char *name)
        /* a special case - accept cd to /smb */
        if (strncmp(cwd, smbw_prefix, len-1) == 0 &&
            cwd[len-1] == 0) {
-               goto success;
+               goto success1;
        }
 
        if (strncmp(cwd,smbw_prefix,strlen(smbw_prefix))) {
                if (real_chdir(cwd) == 0) {
-                       goto success;
+                       goto success2;
                }
-               errno = ENOENT;
                goto failed;
        }
 
@@ -405,7 +404,11 @@ int smbw_chdir(const char *name)
                goto failed;
        }
 
- success:
+ success1:
+       /* we don't want the old directory to be busy */
+       real_chdir("/");
+
+ success2:
 
        DEBUG(4,("set SMBW_CWD to %s\n", cwd));
 
@@ -414,9 +417,6 @@ int smbw_chdir(const char *name)
                DEBUG(4,("setenv failed\n"));
        }
 
-       /* we don't want the old directory to be busy */
-       real_chdir("/");
-
        smbw_busy--;
        return 0;