from zlib import crc32
from ubi.defines import *

def ec_hdr(ec_hdr, buf):
    if ec_hdr.hdr_crc != ~crc32(buf[:-4]) & 4294967295L:
        ec_hdr.errors.append('crc')
    return ec_hdr


def vid_hdr(vid_hdr, buf):
    vid_hdr.errors = []
    if vid_hdr.hdr_crc != ~crc32(buf[:-4]) & 4294967295L:
        vid_hdr.errors.append('crc')
    return vid_hdr


def vtbl_rec(vtbl_rec, buf):
    likely_vtbl = True
    if vtbl_rec.name_len != len(vtbl_rec.name.strip('\x00')):
        likely_vtbl = False
    elif vtbl_rec.vol_type not in (1, 2):
        likely_vtbl = False
    if vtbl_rec.crc != ~crc32(buf[:-4]) & 4294967295L:
        vtbl_rec.errors.append('crc')
    if not likely_vtbl:
        vtbl_rec.errors = ['False']
    return vtbl_rec