X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=spec_utf8;h=d2c564b6a0be4e28792560485a61f2c1c92397ed;hb=9a67ccc2a2c52b36b0bdd0e88c3a99e61be9ddc5;hp=b3c38122945a8b862161b3bc7a119ec0b775493c;hpb=d59adc0503044616e21f2707fdce5b22be3289bb;p=packages%2Frpm-build-tools.git diff --git a/spec_utf8 b/spec_utf8 old mode 100644 new mode 100755 index b3c3812..d2c564b --- a/spec_utf8 +++ b/spec_utf8 @@ -2,7 +2,7 @@ debug = False -import os, os.path, re, sys, locale, StringIO +import os, os.path, re, sys, locale, StringIO, filecmp langs={ 'bg':'windows-1251', @@ -14,6 +14,7 @@ langs={ 'en':'iso8859-1', 'eo':'iso8859-3', 'es':'iso8859-1', + 'et':'iso8859-15', 'fi':'iso8859-1', 'fo':'iso8859-1', 'fr':'iso8859-1', @@ -58,10 +59,11 @@ def find_encoding(lang): def parse_spec(infile, outfile): success = True - re_summary = re.compile("^Summary\(([^\)]+)\):\t+(.*)$") + re_summary = re.compile("^Summary\(([^\)]+)\):[ \t]+(.*)$") re_utf = re.compile("^utf-8$", re.I) re_desc = re.compile("^(%description.*\s)-l\s+([\S]+)($|\s.*$)") re_proc = re.compile("^%[^{]") + re_ignore_proc = re.compile("^%(if|endif)") re_changelog = re.compile("^%changelog") in_desc = False in_changelog = False @@ -82,7 +84,7 @@ def parse_spec(infile, outfile): in_desc = True outline = "%s-l %s.UTF-8%s\n" % (r.group(1), pure_lang, r.group(3)) elif in_desc: - if re_proc.search(l): + if re_proc.search(l) and not re_ignore_proc.search(l): in_desc = False else: # %description continues @@ -113,7 +115,7 @@ def parse_spec(infile, outfile): elif not re_utf.search(enc): try: desc = unicode(r.group(2), enc).encode("UTF-8") - outline = "Summary(%s.UTF-8): %s\n" % (pure_lang, desc) + outline = "Summary(%s.UTF-8):\t%s\n" % (pure_lang, desc) except UnicodeDecodeError: outfile.write("#spec_utf8: transcoding error Summary(%s)\n" % (lang)) success = False @@ -126,22 +128,26 @@ def parse_spec(infile, outfile): outfile.write("%s"% (outline, )) return success -def main(argv): - print "Converting %s ..." % argv[1] - f = open(argv[1], 'r') +def main(spec): + tmp = spec + '.tmp' + print "Converting %s ..." % spec + f = open(spec, 'r') sio = StringIO.StringIO() sio.write(f.read()) f.close() sio.seek(0) - f = open(argv[1] + '.tmp', 'w') + f = open(tmp, 'w') if not parse_spec(sio, f): - sys.stderr.write(" Problems while converting %s.\n" % argv[1]) + sys.stderr.write(" Problems while converting %s.\n" % spec) f.close() - os.rename(argv[1] + '.tmp', argv[1]) + if filecmp.cmp(spec, tmp, False): + os.remove(tmp) + else: + os.rename(tmp, spec) if __name__ == "__main__": - if len(sys.argv) != 2: - sys.stderr.write("Usage: %s \n" % sys.argv[0]) - sys.exit(1) - main(sys.argv) - + if len(sys.argv) == 1: + sys.stderr.write("Usage: %s \n" % sys.argv[0]) + sys.exit(1) + for spec in sys.argv[1:]: + main(spec)