def read_resources_file(fname, check=False):
    fields = dict(RESOURCE_FIELDS)
    fields['key'] = str
    list_fields = dict(RESOURCE_LIST_FIELDS)
    dicts = formats.read_text_db(open(fname),
                                 fields,
                                 list_fields,
                                 require_all=False)

    result = {}
    for d in dicts:
        if 'key' not in d:
            if check:
                raise RuntimeError('Resource missing key: %r' % d)
            else:
                continue

        for k, v in RESOURCE_DEFAULTS.items():
            if k not in d:
                d[k] = v

        key = d['key']
        del d['key']
        result[key] = d

    return result
def read_flags(content_path):
    fname = global_flags_file(content_path)
    if os.path.exists(fname):
        fields = {'key': str, 'text': str}
        items = formats.read_text_db(open(fname), fields)
        return {item['key']: item['text'] for item in items}
    else:
        return {}
def read_flags(content_path):
    fname = global_flags_file(content_path)
    if os.path.exists(fname):
        fields = {'key': str, 'text': str}
        items = formats.read_text_db(open(fname), fields)
        return {item['key']: item['text'] for item in items}
    else:
        return {}
def read_resources_file(fname, check=False):
    fields = dict(RESOURCE_FIELDS)
    fields['key'] = str
    list_fields = dict(RESOURCE_LIST_FIELDS)
    dicts = formats.read_text_db(open(fname), fields, list_fields, require_all=False)

    result = {}
    for d in dicts:
        if 'key' not in d:
            if check:
                raise RuntimeError('Resource missing key: %r' % d)
            else:
                continue

        for k, v in RESOURCE_DEFAULTS.items():
            if k not in d:
                d[k] = v

        key = d['key']
        del d['key']
        result[key] = d

    return result