import stringprep import util if len(sys.argv) != 3: print "usage: %s rfc3454.txt out-dir" % sys.argv[0] sys.exit(1) tables = rfc3454.read(sys.argv[1]) t2 = rfc4518.read() for x in t2: tables[x] = t2[x] map_list = stringprep.get_maplist() map_h = generate.Header('%s/map_table.h' % sys.argv[2]) map_c = generate.Implementation('%s/map_table.c' % sys.argv[2]) map_h.file.write( ''' #include "windlocl.h" struct translation { uint32_t key; unsigned short val_len; unsigned short val_offset; wind_profile_flags flags; }; extern const struct translation _wind_map_table[];
def sortedKeys(d): """Return a sorted list of the keys of a dict""" keys = d.keys() keys.sort() return keys trans = dict([(k, [re.sub('<[a-zA-Z]+>', '', v[4]), v[0]]) for k, v in ud.items() if v[4]]) maxLength = 0 for v in trans.values(): maxLength = max(maxLength, len(v[0].split())) normalize_h = generate.Header('%s/normalize_table.h' % sys.argv[3]) normalize_c = generate.Implementation('%s/normalize_table.c' % sys.argv[3]) normalize_h.file.write(''' #include <krb5-types.h> #define MAX_LENGTH_CANON %u struct translation { uint32_t key; unsigned short val_len; unsigned short val_offset; }; extern const struct translation _wind_normalize_table[];
import rfc4518 import stringprep if len(sys.argv) != 3: print("usage: %s rfc3454.txt out-dir" % sys.argv[0]) sys.exit(1) tables = rfc3454.read(sys.argv[1]) t2 = rfc4518.read() for x in t2.keys(): tables[x] = t2[x] error_list = stringprep.get_errorlist() errorlist_h = generate.Header('%s/errorlist_table.h' % sys.argv[2]) errorlist_c = generate.Implementation('%s/errorlist_table.c' % sys.argv[2]) errorlist_h.file.write( ''' #include "windlocl.h" struct error_entry { uint32_t start; unsigned len; wind_profile_flags flags; }; extern const struct error_entry _wind_errorlist_table[];
# SUCH DAMAGE. import re import string import sys import generate import rfc3454 if len(sys.argv) != 3: print "usage: %s rfc3454.txt outdir" % sys.argv[0] sys.exit(1) tables = rfc3454.read(sys.argv[1]) bidi_h = generate.Header('%s/bidi_table.h' % sys.argv[2]) bidi_c = generate.Implementation('%s/bidi_table.c' % sys.argv[2]) bidi_h.file.write( ''' #include <krb5-types.h> struct range_entry { uint32_t start; unsigned len; }; extern const struct range_entry _wind_ral_table[]; extern const struct range_entry _wind_l_table[];
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. import re import string import sys import generate if len(sys.argv) != 3: print "usage: %s rfc3492.txt" % sys.argv[0] sys.exit(1) f = open(sys.argv[1], 'r') examples_h = generate.Header('%s/punycode_examples.h' % sys.argv[2]) examples_c = generate.Header('%s/punycode_examples.c' % sys.argv[2]) start = False while True: l = f.readline() if not l: break if l[-2:] == "\\\n": l2 = f.readline() if not l2: raise Exception("EOF in backslash escape") l2 = re.sub('^ *', '', l2) l = l[:-2] + l2 if start:
import UnicodeData if len(sys.argv) != 3: print "usage: %s UnicodeData.txt out-dir" % sys.argv[0] sys.exit(1) ud = UnicodeData.read(sys.argv[1]) trans = {} for k, v in ud.items(): if int(v[2]) != 0: trans[k] = [int(v[2]), v[1]] # trans = [(x[0], int(x[3]), x[1]) for x in UnicodeData.read() if int(x[3]) != 0] combining_h = generate.Header('%s/combining_table.h' % sys.argv[2]) combining_c = generate.Implementation('%s/combining_table.c' % sys.argv[2]) combining_h.file.write(''' #include <krb5-types.h> struct translation { uint32_t key; unsigned combining_class; }; extern const struct translation _wind_combining_table[]; extern const size_t _wind_combining_table_size; ''')