#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "lib/flashrom.h"
#define CMD_BUF_SIZE (4096)
static uint8_t flashrom_cmd[] = "flashrom";
static uint8_t flashrom_arguments[] = " -p internal ";
int flashromFullRead(const char* full_file) {
char cmd[CMD_BUF_SIZE];
int ret = 0;
snprintf(cmd, sizeof(cmd), "%s %s -r '%s' >/dev/null 2>&1",
flashrom_cmd, flashrom_arguments, full_file);
ret = system(cmd);
if (ret == 0)
return FLASHROM_OK;
else
return FLASHROM_FAIL;
}
int flashromPartialRead(const char* part_file, const char* full_file,
const char* partition_name) {
char cmd[CMD_BUF_SIZE];
int ret = 0;
snprintf(cmd, sizeof(cmd), "%s %s -i FMAP -i '%s':'%s' "
"-r '%s' >/dev/null 2>&1",
flashrom_cmd, flashrom_arguments,
partition_name, part_file, full_file);
ret = system(cmd);
if (ret == 0)
return FLASHROM_OK;
else
return FLASHROM_FAIL;
}
int flashromPartialWrite(const char* part_file, const char* full_file,
const char* partition_name) {
char cmd[CMD_BUF_SIZE];
int ret = 0;
snprintf(cmd, sizeof(cmd),
"%s %s -i '%s':'%s' -w '%s' --noverify-all >/dev/null 2>&1",
flashrom_cmd, flashrom_arguments,
partition_name, part_file, full_file);
ret = system(cmd);
if (ret == 0)
return FLASHROM_OK;
else
return FLASHROM_FAIL;
}