예제 #1
0
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[];

extern const size_t _wind_map_table_size;
예제 #2
0
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[];

extern const uint32_t _wind_normalize_val_table[];
예제 #3
0
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[];

extern const size_t _wind_ral_table_size;
extern const size_t _wind_l_table_size;
예제 #4
0
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[];

extern const size_t _wind_errorlist_table_size;
예제 #5
0
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;
''')

combining_c.file.write('''