Fix issue 2421 by not trying to use os.chown on Windows.
authorgaryo <garyo@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Tue, 12 May 2009 11:41:34 +0000 (11:41 +0000)
committergaryo <garyo@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Tue, 12 May 2009 11:41:34 +0000 (11:41 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@4190 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/engine/SCons/dblite.py

index e9932193838e136d602145ae0f007a5d9ef16c85..bcb2aa00ad451fdfc7d23279ab7bb742025c4a7e 100644 (file)
@@ -45,7 +45,10 @@ class dblite:
   _open = __builtin__.open
   _cPickle_dump = cPickle.dump
   _os_chmod = os.chmod
-  _os_chown = os.chown
+  try:
+      _os_chown = os.chown
+  except AttributeError:
+      _os_chown = None
   _os_rename = os.rename
   _os_unlink = os.unlink
   _shutil_copyfile = shutil.copyfile
@@ -66,7 +69,7 @@ class dblite:
     self._mode = mode
     self._dict = {}
     self._needs_sync = 00000
-    if os.geteuid()==0 or os.getuid()==0:
+    if self._os_chown is not None and (os.geteuid()==0 or os.getuid()==0):
       # running as root; chown back to current owner/group when done
       try:
         statinfo = os.stat(self._file_name)
@@ -118,7 +121,7 @@ class dblite:
     except OSError: pass
     self._os_unlink(self._file_name)
     self._os_rename(self._tmp_name, self._file_name)
-    if self._chown_to > 0:      # don't chown to root or -1
+    if self._os_chown is not None and self._chown_to > 0: # don't chown to root or -1
       try:
         self._os_chown(self._file_name, self._chown_to, self._chgrp_to)
       except OSError: