* dir.cc (rmdir): Add more samba workarounds.

This commit is contained in:
Christopher Faylor 2003-09-11 14:43:09 +00:00
parent d13d2a28ff
commit 88092a3ea1
2 changed files with 11 additions and 2 deletions

View File

@ -1,3 +1,7 @@
2003-09-11 Christopher Faylor <cgf@redhat.com>
* dir.cc (rmdir): Add more samba workarounds.
2003-09-11 Corinna Vinschen <corinna@vinschen.de>
* shared.cc (user_shared_initialize): Revert length attribute for name

View File

@ -327,12 +327,17 @@ rmdir (const char *dir)
SetFileAttributes (real_dir,
(DWORD) real_dir & ~FILE_ATTRIBUTE_READONLY);
if (RemoveDirectory (real_dir))
int rc = RemoveDirectory (real_dir);
DWORD att = GetFileAttributes (real_dir);
/* Sometimes smb indicates failure when it really succeeds, so check for
this case specifically. */
if (rc || att == INVALID_FILE_ATTRIBUTES)
{
/* RemoveDirectory on a samba drive doesn't return an error if the
directory can't be removed because it's not empty. Checking for
existence afterwards keeps us informed about success. */
if (GetFileAttributes (real_dir) != INVALID_FILE_ATTRIBUTES)
if (att != INVALID_FILE_ATTRIBUTES)
set_errno (ENOTEMPTY);
else
res = 0;