#!/usr/bin/env lua

function get_mtd_info()
  res = {}
  for line in io.lines('/proc/mtd') do
    -- mtd0: 00030000 00010000 "u-boot"
    mtd, size, erase_size, label = string.match(line, '^([a-z0-9]*): *([0-9a-f]*) *([0-9a-f]*) *"(.*)"$')
    if label ~= nil then
      size = tonumber(size, 16)
      erase_size = tonumber(erase_size, 16)
      res[mtd] = {['size'] = size, ['erase_size'] = erase_size, ['label'] = label}
    end
  end
  return res      
end

function image_sum()
  mtds = get_mtd_info()
  image = "mtd4"
  data = "mtd7"
  size = mtds[image].size - mtds[data].size
  if not size then
    print("ERROR")
    return
  end
  os.execute(string.format([[ head -c %d /dev/%s | sha256sum ]], size, image))
end

image_sum()
