diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2008-11-08 22:03:54 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2008-11-08 22:03:54 +0000 |
commit | cbf25e8815cd93fd4bcb730b2ee6783ea81c52e5 (patch) | |
tree | b3bd5a535090329b4699222a162dd69dccaca13a | |
parent | f6966ca0f0713c8e731c83d64617e713d1073663 (diff) | |
download | deheader-cbf25e8815cd93fd4bcb730b2ee6783ea81c52e5.tar.gz deheader-cbf25e8815cd93fd4bcb730b2ee6783ea81c52e5.tar.bz2 deheader-cbf25e8815cd93fd4bcb730b2ee6783ea81c52e5.tar.xz deheader-cbf25e8815cd93fd4bcb730b2ee6783ea81c52e5.zip |
Remove option now works.
-rwxr-xr-x | deheader | 35 |
1 files changed, 18 insertions, 17 deletions
@@ -114,22 +114,26 @@ class SaveForModification: "Prepare a file to be temporarily modified, with guaranteed reversion." def __init__(self, filename): self.filename = filename - self.original = filename + ".orig" + self.original = filename + "-orig" os.rename(self.filename, self.original) - def remove_header(self, header): - "Prepare a version with a specified header deleted." + def remove_headers(self, headers): + "Prepare a version with specified headers deleted." ofp = open(self.filename, "w") for line in open(self.original): - if line != header: + if line not in headers: ofp.write(line) ofp.close() + def forget(self): + "Disable reversion." + os.remove(self.original) def __del__(self): "Revert modifications on the file at the end of this onject's lifetime." - try: - os.remove(self.filename) - except OSError: - pass - os.rename(self.original, self.filename) + if os.path.exists(self.original): + try: + os.remove(self.filename) + except OSError: + pass + os.rename(self.original, self.filename) def trim(line): "Get file reference from an #include, retaining <> if a system header." @@ -177,7 +181,7 @@ def c_analyze(source, includes, verbosity): while True: keepgoing = False for header in includes: - saveit.remove_header(header) + saveit.remove_headers([header]) (st, t) = compile(sourcefile, " without %s" % trim(header), verbosity) if st == 0: unneeded.append(header) @@ -205,13 +209,10 @@ def deheader(sourcefile, includes, remove, verbose): for line in unneeded: print "deheader: remove %s from %s" % (trim(line), sourcefile) if remove: - os.rename(sourcefile, original) - for header in includes: - ofp = open(sourcefile, "w") - for line in open(original): - if line not in unneeded: - ofp.write(line) - ofp.close() + remove_it = SaveForModification(sourcefile) + remove_it.remove_headers(unneeded) + remove_it.forget() + del remove_it if __name__ == "__main__": (options, arguments) = getopt.getopt(sys.argv[1:], "hrvi:", |