From: Eric S. Raymond Date: Fri, 21 Nov 2014 11:03:19 +0000 (-0500) Subject: Deal gracefully with absolute pathnames. X-Git-Tag: 0.12~4 X-Git-Url: http://thyrsus.com/gitweb/?a=commitdiff_plain;h=80016b47e24b5e5ed53029a647083bc5677a003e;p=src.git Deal gracefully with absolute pathnames. Regression tests pass. --- diff --git a/src b/src index 430e15e..146b867 100755 --- a/src +++ b/src @@ -1601,9 +1601,13 @@ class RCS: "Temporarily lift a master to the working directory." def __init__(self, name): self.name = name + self.where = os.getcwd() def __enter__(self): + if os.path.dirname(self.name): + os.chdir(os.path.dirname(self.name)) do_or_die("mv {0}/{1},v .".format(repodir, self.name)) def __exit__(self, extype, value, traceback_unused): + os.chdir(self.where) if extype and debug > 0: raise extype(value) do_or_die("mv {0},v {1}".format(self.name, repodir)) @@ -1611,12 +1615,9 @@ class RCS: def lifter(self, name): return RCS.RCSLifter(name) def history(self, arg): - if os.sep not in arg: - return os.path.join(repodir, arg + ",v") - else: - return os.path.join(os.path.dirname(arg), - repodir, - os.path.basename(arg) + ",v") + return os.path.join(os.path.dirname(arg), + repodir, + os.path.basename(arg) + ",v") def has_revisions(self, arg): "Does the master for this file have any revisions" # The magic number 105 is the size of an empty RCS file (no