summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node/FS.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2001-11-24 23:15:01 (GMT)
committerSteven Knight <knight@baldmt.com>2001-11-24 23:15:01 (GMT)
commit378373defaf150feb90cd54d13626516c6dbe1b4 (patch)
treefc9783004f1cae3c3558846d6f9a1c589e104a3e /src/engine/SCons/Node/FS.py
parent139a0052dc0bff059dc9b8cf1739396304e7c129 (diff)
downloadSCons-378373defaf150feb90cd54d13626516c6dbe1b4.zip
SCons-378373defaf150feb90cd54d13626516c6dbe1b4.tar.gz
SCons-378373defaf150feb90cd54d13626516c6dbe1b4.tar.bz2
More NT portability fixes.
Diffstat (limited to 'src/engine/SCons/Node/FS.py')
-rw-r--r--src/engine/SCons/Node/FS.py39
1 files changed, 21 insertions, 18 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index 75f7c5c..67a5ae7 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -97,13 +97,12 @@ class PathDict(UserDict):
def __delitem__(self, key):
del(self.data[PathName(key)])
- if not hasattr(UserDict, 'setdefault'):
- def setdefault(self, key, value):
- try:
- return self.data[PathName(key)]
- except KeyError:
- self.data[PathName(key)] = value
- return value
+ def setdefault(self, key, value):
+ try:
+ return self.data[PathName(key)]
+ except KeyError:
+ self.data[PathName(key)] = value
+ return value
class FS:
def __init__(self, path = None):
@@ -120,7 +119,7 @@ class FS:
self.Root = PathDict()
self.Top = self.__doLookup(Dir, path)
self.Top.path = '.'
- self.Top.path_ = './'
+ self.Top.path_ = os.path.join('.', '')
self.cwd = self.Top
def __doLookup(self, fsclass, name, directory=None):
@@ -147,11 +146,16 @@ class FS:
# None, raise an exception.
drive, tail = os.path.splitdrive(head)
- if sys.platform is 'win32' and not drive:
- if not directory:
- raise OSError, 'No drive letter supplied for absolute path.'
- return directory.root()
- return self.Root.setdefault(drive, Dir(tail))
+ #if sys.platform is 'win32' and not drive:
+ # if not directory:
+ # raise OSError, 'No drive letter supplied for absolute path.'
+ # return directory.root()
+ dir = Dir(tail)
+ dir.path = drive + dir.path
+ dir.path_ = drive + dir.path_
+ dir.abspath = drive + dir.abspath
+ dir.abspath_ = drive + dir.abspath_
+ return self.Root.setdefault(drive, dir)
if head:
# Recursively look up our parent directories.
directory = self.__doLookup(Dir, head, directory)
@@ -181,7 +185,7 @@ class FS:
usually in preparation for a call to doLookup().
If the path name is prepended with a '#', then it is unconditionally
- interpreted as replative to the top-level directory of this FS.
+ interpreted as relative to the top-level directory of this FS.
If directory is None, and name is a relative path,
then the same applies.
@@ -256,7 +260,7 @@ class Entry(SCons.Node.Node):
if directory:
self.abspath = os.path.join(directory.abspath, name)
if str(directory.path) == '.':
- self.path = os.path.join(name)
+ self.path = name
else:
self.path = os.path.join(directory.path, name)
else:
@@ -335,9 +339,8 @@ class Dir(Entry):
def children(self):
#XXX --random: randomize "dependencies?"
- kids = map(lambda x, s=self: s.entries[x],
- filter(lambda k: k != '.' and k != '..',
- self.entries.keys()))
+ keys = filter(lambda k: k != '.' and k != '..', self.entries.keys())
+ kids = map(lambda x, s=self: s.entries[x], keys)
def c(one, two):
if one.abspath < two.abspath:
return -1