diff options
author | Graham Inggs <ginggs@debian.org> | 2018-02-05 14:48:53 +0200 |
---|---|---|
committer | Graham Inggs <ginggs@debian.org> | 2018-02-05 14:48:53 +0200 |
commit | 0bffedf65c053726a3a09be93c5eabfc113550fc (patch) | |
tree | 8c14970f1890c710df6f72aaa85781d62cee11e5 /scripts/MakeHeader.py | |
parent | ba3d665468e9752a81a50bb2df7639950e0a3c77 (diff) | |
parent | 2ee50d030178cede83eb9d0005fbc19f819d30fe (diff) | |
download | debian_htop-0bffedf65c053726a3a09be93c5eabfc113550fc.tar.gz debian_htop-0bffedf65c053726a3a09be93c5eabfc113550fc.tar.bz2 debian_htop-0bffedf65c053726a3a09be93c5eabfc113550fc.zip |
Merge tag 'upstream/2.1.0'
Upstream version 2.1.0
Diffstat (limited to 'scripts/MakeHeader.py')
-rwxr-xr-x | scripts/MakeHeader.py | 60 |
1 files changed, 36 insertions, 24 deletions
diff --git a/scripts/MakeHeader.py b/scripts/MakeHeader.py index bcf1005..4841bda 100755 --- a/scripts/MakeHeader.py +++ b/scripts/MakeHeader.py @@ -1,6 +1,12 @@ #!/usr/bin/env python - import os, sys, string +try: + from cStringIO import StringIO +except ImportError: + try: + from StringIO import StringIO + except ImportError: + from io import StringIO ANY=1 COPY=2 @@ -13,23 +19,15 @@ static = 0 file = open(sys.argv[1]) name = sys.argv[1][:-2] -out = open(name + ".h", "w") -class writer: - def __init__(self, file): - self.file = file - def write(self, text): - self.file.write(text + "\n") -out = writer(out) - -print("Generating "+name+".h") +out = StringIO() selfheader = '#include "' + name + '.h"' -out.write( "/* Do not edit this file. It was automatically generated. */" ) -out.write( "" ) +out.write( "/* Do not edit this file. It was automatically generated. */\n" ) +out.write( "\n" ) -out.write( "#ifndef HEADER_" + os.path.basename(name) ) -out.write( "#define HEADER_" + os.path.basename(name) ) +out.write( "#ifndef HEADER_" + os.path.basename(name) + "\n") +out.write( "#define HEADER_" + os.path.basename(name) + "\n") is_blank = False for line in file.readlines(): line = line[:-1] @@ -41,7 +39,7 @@ for line in file.readlines(): elif line.find("#include") == 0: pass elif line.find("htop - ") == 0 and line[-2:] == ".c": - out.write(line[:-2] + ".h") + out.write(line[:-2] + ".h\n") elif line.find("static ") != -1: if line[-1] == "{": state = SKIP @@ -52,31 +50,31 @@ for line in file.readlines(): static = 0 equals = line.find(" = ") if line[-3:] == "= {": - out.write( "extern " + line[:-4] + ";" ) + out.write( "extern " + line[:-4] + ";\n" ) state = SKIP elif equals != -1: - out.write("extern " + line[:equals] + ";" ) + out.write("extern " + line[:equals] + ";\n" ) elif line.startswith("typedef struct"): state = SKIP elif line[-1] == "{": - out.write( line[:-2].replace("inline", "extern") + ";" ) + out.write( line[:-2].replace("inline", "extern") + ";\n" ) state = SKIP else: - out.write( line ) + out.write( line + "\n") is_blank = False elif line == "": if not is_blank: - out.write( line ) + out.write( line + "\n") is_blank = True else: - out.write( line ) + out.write( line + "\n") is_blank = False elif state == COPY: is_blank = False if line == "}*/": state = ANY else: - out.write( line ) + out.write( line + "\n") elif state == SKIP: is_blank = False if len(line) >= 1 and line[0] == "}": @@ -89,5 +87,19 @@ for line in file.readlines(): is_blank = False state = ANY -out.write( "" ) -out.write( "#endif" ) +out.write( "\n" ) +out.write( "#endif\n" ) + +# only write a new .h file if something changed. +# This prevents a lot of recompilation during development +out.seek(0) +try: + with open(name + ".h", "r") as orig: + origcontents = orig.readlines() +except: + origcontents = "" +if origcontents != out.readlines(): + with open(name + ".h", "w") as new: + print("Writing "+name+".h") + new.write(out.getvalue()) +out.close() |