}
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--;
/* 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;
}
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));
DEBUG(4,("setenv failed\n"));
}
- /* we don't want the old directory to be busy */
- real_chdir("/");
-
smbw_busy--;
return 0;