#! /usr/bin/env python import re defRe = re.compile("#define\s+(E\S+)\s+(\\d+)") ; errors = [] bynum = {} max = 0 for line in file("/usr/include/sys/errno.h"): m = defRe.match(line) if (m != None): name = m.group(1) if (name == "ELAST"): continue number = int(m.group(2)) assert (number not in bynum), "number collision: " + str(number) errors.append((name, number)) bynum[number] = name if (number > max): max = number print "public interface Errno {" print "\t" for name, number in errors: print "\tpublic static final int", name, "=", number, ";" print "\t" print "\tpublic static final String[] NAMES = {" for i in xrange(0, (max + 1)): name = bynum.get(i, None) if (name != None): s = "\"" + name + "\"" else: s = "null" ; print "\t\t" + s + "," print "\t} ;" print "\t" print "}"