import config
import utils
-
-# For development an errcode database may not be available
-try:
- import errcode
-except ImportError:
- sys.stderr.write('running without errcode support\n')
+import errdb
logs = {}
commands = {}
def errcode_command(who, _, replyto, words):
'''Look up gPXE error code (errcode 0x12345678)'''
- msg = ' '.join(words)
- m = ERRCODE_RE.search(msg)
- if m:
+ errors = []
+ m = ERRCODE_RE.search(' '.join(words))
+ if config.ERRDBFILE and m:
try:
- return 'PRIVMSG', (replyto, str(errcode.Errcode(int(m.group(1), 16))))
+ errno = '%x' % int(m.group(1), 16)
+ errors = [('PRIVMSG', (replyto, '%s:%s: %s' % error)) for error in errdb.lookup(errno, dbfile=config.ERRDBFILE)]
except ValueError:
pass
+ return errors or ('PRIVMSG', (replyto, 'Error code not found'))
commands['errcode'] = errcode_command
commands['error'] = errcode_command
--- /dev/null
+#!/usr/bin/env python
+import sys
+import sqlite3
+
+def lookup(errno, dbfile='errors.db'):
+ conn = sqlite3.connect(dbfile)
+ cursor = conn.cursor()
+ cursor.execute('select filename, line, description from errors inner join xrefs on errors.errno=xrefs.errno where errors.errno=?', (errno, ))
+ results = cursor.fetchall()
+ conn.close()
+ return results
+
+if __name__ == '__main__':
+ if len(sys.argv) != 2:
+ sys.stderr.write('\n')
+ sys.exit(1)
+ for filename, line, description in lookup(sys.argv[1]):
+ print '%s:%s: %s' % (filename, line, description)