Blame lasso/build_strerror.py

Packit Service 88ab54
Packit Service 88ab54
import glob
Packit Service 88ab54
import re
Packit Service 88ab54
import sys
Packit Service 88ab54
import os
Packit Service ad8a8e
from six import print_, StringIO
Packit Service 88ab54
Packit Service 88ab54
srcdir = sys.argv[1]
Packit Service 88ab54
Packit Service 88ab54
messages = dict()
Packit Service 88ab54
description = ''
Packit Service 88ab54
Packit Service ad8a8e
with open('%s/errors.h' % srcdir,'r') as f:
Packit Service ad8a8e
    for line in f:
Packit Service ad8a8e
        m = re.match(r'^ \* LASSO.*ERROR', line)
Packit Service 88ab54
        if m:
Packit Service ad8a8e
            description = ''
Packit Service ad8a8e
            continue
Packit Service ad8a8e
        m = re.match(r'^ \* (.*[^:])$', line)
Packit Service ad8a8e
        if m:
Packit Service ad8a8e
            description += m.group(1)
Packit Service ad8a8e
        m = re.match(r'#define (LASSO_\w*ERROR\w+)', line)
Packit Service ad8a8e
        if m and description:
Packit Service ad8a8e
            description = re.sub(r'[ \n]+', ' ', description).strip()
Packit Service ad8a8e
            messages[m.group(1)] = description
Packit Service ad8a8e
            description = ''
Packit Service ad8a8e
        else:
Packit Service ad8a8e
            m = re.match(r'#define (LASSO_\w*ERROR\w+)',line)
Packit Service ad8a8e
            if m:
Packit Service ad8a8e
                messages[m.group(1)] = m.group(1)
Packit Service 88ab54
Packit Service ad8a8e
with open('%s/errors.c.in' % srcdir,'r') as f:
Packit Service ad8a8e
    for line in f:
Packit Service ad8a8e
        if '@ERROR_CASES@' in line:
Packit Service ad8a8e
            keys = sorted(messages.keys())
Packit Service ad8a8e
            for k in keys:
Packit Service ad8a8e
                print_('		case %s:\n'
Packit Service ad8a8e
                       '			return "%s";' %
Packit Service ad8a8e
                       (k,messages[k].rstrip('\n')))
Packit Service ad8a8e
        else:
Packit Service ad8a8e
            print_(line, end="")