diff --git a/Tools/scripts/linktree.py b/Tools/scripts/linktree.py
index 5a66507..cfe7547 100755
--- a/Tools/scripts/linktree.py
+++ b/Tools/scripts/linktree.py
@@ -10,7 +10,7 @@
 #
 # usage: mklinks oldtree newtree
 
-import sys, posix, path
+import sys, os
 
 LINK = '.LINK' # Name of special symlink at the top.
 
@@ -27,18 +27,18 @@
 	else:
 		link = LINK
 		link_may_fail = 0
-	if not path.isdir(oldtree):
+	if not os.path.isdir(oldtree):
 		print oldtree + ': not a directory'
 		return 1
 	try:
-		posix.mkdir(newtree, 0777)
-	except posix.error, msg:
+		os.mkdir(newtree, 0777)
+	except os.error, msg:
 		print newtree + ': cannot mkdir:', msg
 		return 1
-	linkname = path.cat(newtree, link)
+	linkname = os.path.join(newtree, link)
 	try:
-		posix.symlink(path.cat('..', oldtree), linkname)
-	except posix.error, msg:
+		os.symlink(os.path.join(os.pardir, oldtree), linkname)
+	except os.error, msg:
 		if not link_may_fail:
 			print linkname + ': cannot symlink:', msg
 			return 1
@@ -50,27 +50,27 @@
 def linknames(old, new, link):
 	if debug: print 'linknames', (old, new, link)
 	try:
-		names = posix.listdir(old)
-	except posix.error, msg:
+		names = os.listdir(old)
+	except os.error, msg:
 		print old + ': warning: cannot listdir:', msg
 		return
 	for name in names:
-	    if name not in ('.', '..'):
-		oldname = path.cat(old, name)
-		linkname = path.cat(link, name)
-		newname = path.cat(new, name)
+	    if name not in (os.curdir, os.pardir):
+		oldname = os.path.join(old, name)
+		linkname = os.path.join(link, name)
+		newname = os.path.join(new, name)
 		if debug > 1: print oldname, newname, linkname
-		if path.isdir(oldname) and not path.islink(oldname):
+		if os.path.isdir(oldname) and not os.path.islink(oldname):
 			try:
-				posix.mkdir(newname, 0777)
+				os.mkdir(newname, 0777)
 				ok = 1
 			except:
 				print newname + ': warning: cannot mkdir:', msg
 				ok = 0
 			if ok:
-				linkname = path.cat('..', linkname)
+				linkname = os.path.join(os.pardir, linkname)
 				linknames(oldname, newname, linkname)
 		else:
-			posix.symlink(linkname, newname)
+			os.symlink(linkname, newname)
 
 sys.exit(main())
diff --git a/Tools/scripts/lll.py b/Tools/scripts/lll.py
index 509936d..6dd68ba 100755
--- a/Tools/scripts/lll.py
+++ b/Tools/scripts/lll.py
@@ -5,17 +5,17 @@
 # No recursion.
 # (This is a totally different program from "findsymlinks.py"!)
 
-import sys, posix, path
+import sys, os
 
 def lll(dirname):
-	for name in posix.listdir(dirname):
-		if name not in ['.', '..']:
-			full = path.join(dirname, name)
-			if path.islink(full):
-				print name, '->', posix.readlink(full)
+	for name in os.listdir(dirname):
+		if name not in (os.curdir, os.pardir):
+			full = os.path.join(dirname, name)
+			if os.path.islink(full):
+				print name, '->', os.readlink(full)
 
 args = sys.argv[1:]
-if not args: args = ['.']
+if not args: args = [os.curdir]
 first = 1
 for arg in args:
 	if len(args) > 1:
diff --git a/Tools/scripts/mkreal.py b/Tools/scripts/mkreal.py
index b72c2e5..e01b35d 100755
--- a/Tools/scripts/mkreal.py
+++ b/Tools/scripts/mkreal.py
@@ -5,58 +5,57 @@
 # turn a symlink to a directory into a real directory
 
 import sys
-import posix
-import path
+import os
 from stat import *
 
-join = path.join
+join = os.path.join
 
 error = 'mkreal error'
 
 BUFSIZE = 32*1024
 
 def mkrealfile(name):
-	st = posix.stat(name) # Get the mode
+	st = os.stat(name) # Get the mode
 	mode = S_IMODE(st[ST_MODE])
-	linkto = posix.readlink(name) # Make sure again it's a symlink
+	linkto = os.readlink(name) # Make sure again it's a symlink
 	f_in = open(name, 'r') # This ensures it's a file
-	posix.unlink(name)
+	os.unlink(name)
 	f_out = open(name, 'w')
 	while 1:
 		buf = f_in.read(BUFSIZE)
 		if not buf: break
 		f_out.write(buf)
 	del f_out # Flush data to disk before changing mode
-	posix.chmod(name, mode)
+	os.chmod(name, mode)
 
 def mkrealdir(name):
-	st = posix.stat(name) # Get the mode
+	st = os.stat(name) # Get the mode
 	mode = S_IMODE(st[ST_MODE])
-	linkto = posix.readlink(name)
-	files = posix.listdir(name)
-	posix.unlink(name)
-	posix.mkdir(name, mode)
-	posix.chmod(name, mode)
-	linkto = join('..', linkto)
+	linkto = os.readlink(name)
+	files = os.listdir(name)
+	os.unlink(name)
+	os.mkdir(name, mode)
+	os.chmod(name, mode)
+	linkto = join(os.pardir, linkto)
 	#
 	for file in files:
-		if file not in ('.', '..'):
-			posix.symlink(join(linkto, file), join(name, file))
+		if file not in (os.curdir, os.pardir):
+			os.symlink(join(linkto, file), join(name, file))
 
 def main():
 	sys.stdout = sys.stderr
-	progname = path.basename(sys.argv[0])
+	progname = os.path.basename(sys.argv[0])
 	args = sys.argv[1:]
 	if not args:
 		print 'usage:', progname, 'path ...'
 		sys.exit(2)
 	status = 0
 	for name in args:
-		if not path.islink(name):
+		if not os.path.islink(name):
 			print progname+':', name+':', 'not a symlink'
 			status = 1
 		else:
-			if path.isdir(name):
+			if os.path.isdir(name):
 				mkrealdir(name)
 			else:
 				mkrealfile(name)
diff --git a/Tools/scripts/which.py b/Tools/scripts/which.py
index 94c7556..d3186f4 100755
--- a/Tools/scripts/which.py
+++ b/Tools/scripts/which.py
@@ -4,13 +4,13 @@
 # On stderr, near and total misses are reported.
 # '-l<flags>' argument adds ls -l<flags> of each file found.
 
-import sys, posix, string, path
+import sys, os, string
 from stat import *
 
 def msg(str):
 	sys.stderr.write(str + '\n')
 
-pathlist = string.splitfields(posix.environ['PATH'], ':')
+pathlist = string.splitfields(os.environ['PATH'], ':')
 
 sts = 0
 longlist = ''
@@ -22,10 +22,10 @@
 for prog in sys.argv[1:]:
 	ident = ()
 	for dir in pathlist:
-		file = path.join(dir, prog)
+		file = os.path.join(dir, prog)
 		try:
-			st = posix.stat(file)
-		except posix.error:
+			st = os.stat(file)
+		except os.error:
 			continue
 		if not S_ISREG(st[ST_MODE]):
 			msg(file + ': not a disk file')
@@ -44,7 +44,7 @@
 			else:
 				msg(file + ': not executable')
 		if longlist:
-			sts = posix.system('ls ' + longlist + ' ' + file)
+			sts = os.system('ls ' + longlist + ' ' + file)
 			if sts: msg('"ls -l" exit status: ' + `sts`)
 	if not ident:
 		msg(prog + ': not found')
diff --git a/Tools/scripts/xxci.py b/Tools/scripts/xxci.py
index 2cb1ead..aef3234 100755
--- a/Tools/scripts/xxci.py
+++ b/Tools/scripts/xxci.py
@@ -6,9 +6,8 @@
 # check in files for which rcsdiff returns nonzero exit status
 
 import sys
-import posix
+import os
 from stat import *
-import path
 import commands
 import fnmatch
 import string
@@ -23,7 +22,7 @@
 		return args
 	print 'No arguments, checking almost *, in "ls -t" order'
 	list = []
-	for file in posix.listdir('.'):
+	for file in os.listdir(os.curdir):
 		if not skipfile(file):
 			list.append((getmtime(file), file))
 	list.sort()
@@ -37,9 +36,9 @@
 
 def getmtime(file):
 	try:
-		st = posix.stat(file)
+		st = os.stat(file)
 		return st[ST_MTIME]
-	except posix.error:
+	except os.error:
 		return -1
 
 badnames = ['tags', 'TAGS', 'xyzzy', 'nohup.out', 'core']
@@ -65,8 +64,8 @@
 	for p in ignore:
 		if fnmatch.fnmatch(file, p): return 1
 	try:
-		st = posix.lstat(file)
-	except posix.error:
+		st = os.lstat(file)
+	except os.error:
 		return 1 # Doesn't exist -- skip it
 	# Skip non-plain files.
 	if not S_ISREG(st[ST_MODE]): return 1
@@ -94,18 +93,19 @@
 	for file in args:
 		print file + ':'
 		if differing(file):
-			sts = posix.system('rcsdiff ' + file) # ignored
+			showdiffs(file)
 			if askyesno('Check in ' + file + ' ? '):
-				sts = posix.system('rcs -l ' + file) # ignored
-				sts = posix.system('ci -l ' + file)
+				sts = os.system('rcs -l ' + file) # ignored
+				sts = os.system('ci -l ' + file)
 
 def differing(file):
-	try:
-		this = open(file, 'r').read()
-		that = posix.popen('co -p '+file+' 2>/dev/null', 'r').read()
-		return this <> that
-	except:
-		return 1
+	cmd = 'co -p ' + file + ' 2>/dev/null | cmp -s - ' + file
+	sts = os.system(cmd)
+	return sts != 0
+
+def showdiffs(file):
+	cmd = 'rcsdiff ' + file + ' 2>&1 | ${PAGER-more}'
+	sts = os.system(cmd)
 
 def askyesno(prompt):
 	s = raw_input(prompt)
