From f75957ab6baef8907c8421f44f785956fbf48038 Mon Sep 17 00:00:00 2001 From: "Bala.FA" Date: Fri, 10 May 2013 12:30:17 +0530 Subject: log: error code generation support error code and message are generated at compile time by reading a json file which contains information of elements for each error code. This framework provides error handling and ability to do more cleaner log messages to users. error-codes.json file contains error description is below format { "ERR_NAME": {"code": ERR_NUM, "message": {"LOCALE": "ERR_MESSAGE"}} } At compile time autogen.sh calls gen-headers.py which produces C header file libglusterfs/src/gf-error-codes.h. This header has a function const char *_gf_get_message (int code); which returns respective ERR_MESSAGE for given ERR_NUM. Change-Id: Ieefbf4c470e19a0175c28942e56cec98a3c94ff0 BUG: 928648 Signed-off-by: Bala.FA Reviewed-on: http://review.gluster.org/4977 Reviewed-by: Niels de Vos Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- gen-headers.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 gen-headers.py (limited to 'gen-headers.py') diff --git a/gen-headers.py b/gen-headers.py new file mode 100755 index 000000000..ef9fa7711 --- /dev/null +++ b/gen-headers.py @@ -0,0 +1,54 @@ +#!/usr/bin/python + +import sys +try: + import json +except ImportError: + import simplejson as json +from string import Template + + +def getLogBook(logFile='error-codes.json'): + fp = open(logFile) + return json.load(fp) + + +def genCHeader(logBook, + infile='gf-error-codes.h.template', + outfile='gf-error-codes.h'): + fp = open('gf-error-codes.h.template') + s = fp.read() + fp.close() + template = Template(s) + + defineLines = [] + caseLines = [] + for name, value in logBook.iteritems(): + nameDef = "GF_%s" % (name.upper(),) + code = value['code'] + msgNameDef = "%s_MSG" % (nameDef,) + msg = value['message']['en'] + + defineLines.append("#define %-20s %d" % (nameDef, code)) + defineLines.append("#define %-20s %s" % (msgNameDef, + json.dumps(msg))) + caseLines.append(" case %s: return _(%s);" % \ + (nameDef, msgNameDef)) + + d = {'DEFINES': "\n".join(defineLines), + 'CASES': "\n".join(caseLines)} + #print template.substitute(d) + + fp = open(outfile, 'w') + fp.write(template.substitute(d)) + fp.close() + + +if __name__ == "__main__": + try: + logBook = getLogBook() + genCHeader(logBook) + sys.exit(0) + except IOError, e: + print str(e) + sys.exit(-1) -- cgit