1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-28 07:23:43 +02:00

dediprog.c: Use one variable to store raw parameter values

Currently, each programmer parameter has their own temp variable to
store their raw value into it. That's not needed since these variables
are only used for a short time to do some configuration and stay unused
then. Thus, use only one variable for all of them.

Signed-off-by: Felix Singer <felixsinger@posteo.net>
Change-Id: I198c0da88bfc01fe15280cbd58d2ef27564c1dbc
Reviewed-on: https://review.coreboot.org/c/flashrom/+/65886
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Thomas Heijligen <src@posteo.de>
Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
This commit is contained in:
Felix Singer 2022-07-16 09:43:59 +02:00 committed by Anastasia Klimchuk
parent e6fec98ba3
commit 03bb6f77fb

View File

@ -1078,7 +1078,7 @@ static int dediprog_open(int index, struct dediprog_data *dp_data)
static int dediprog_init(void) static int dediprog_init(void)
{ {
char *voltage, *id_str, *device, *spispeed, *target_str; char *param_str;
int spispeed_idx = 1; int spispeed_idx = 1;
int millivolt = 3500; int millivolt = 3500;
int id = -1; /* -1 defaults to enumeration order */ int id = -1; /* -1 defaults to enumeration order */
@ -1087,99 +1087,99 @@ static int dediprog_init(void)
long target = FLASH_TYPE_APPLICATION_FLASH_1; long target = FLASH_TYPE_APPLICATION_FLASH_1;
int i, ret; int i, ret;
spispeed = extract_programmer_param_str("spispeed"); param_str = extract_programmer_param_str("spispeed");
if (spispeed) { if (param_str) {
for (i = 0; spispeeds[i].name; ++i) { for (i = 0; spispeeds[i].name; ++i) {
if (!strcasecmp(spispeeds[i].name, spispeed)) { if (!strcasecmp(spispeeds[i].name, param_str)) {
spispeed_idx = i; spispeed_idx = i;
break; break;
} }
} }
if (!spispeeds[i].name) { if (!spispeeds[i].name) {
msg_perr("Error: Invalid spispeed value: '%s'.\n", spispeed); msg_perr("Error: Invalid spispeed value: '%s'.\n", param_str);
free(spispeed); free(param_str);
return 1; return 1;
} }
free(spispeed); free(param_str);
} }
voltage = extract_programmer_param_str("voltage"); param_str = extract_programmer_param_str("voltage");
if (voltage) { if (param_str) {
millivolt = parse_voltage(voltage); millivolt = parse_voltage(param_str);
free(voltage); free(param_str);
if (millivolt < 0) if (millivolt < 0)
return 1; return 1;
msg_pinfo("Setting voltage to %i mV\n", millivolt); msg_pinfo("Setting voltage to %i mV\n", millivolt);
} }
id_str = extract_programmer_param_str("id"); param_str = extract_programmer_param_str("id");
if (id_str) { if (param_str) {
char prefix0, prefix1; char prefix0, prefix1;
if (sscanf(id_str, "%c%c%d", &prefix0, &prefix1, &id) != 3) { if (sscanf(param_str, "%c%c%d", &prefix0, &prefix1, &id) != 3) {
msg_perr("Error: Could not parse dediprog 'id'.\n"); msg_perr("Error: Could not parse dediprog 'id'.\n");
msg_perr("Expected a string like SF012345 or DP012345.\n"); msg_perr("Expected a string like SF012345 or DP012345.\n");
free(id_str); free(param_str);
return 1; return 1;
} }
if (id < 0 || id >= 0x1000000) { if (id < 0 || id >= 0x1000000) {
msg_perr("Error: id %s is out of range!\n", id_str); msg_perr("Error: id %s is out of range!\n", param_str);
free(id_str); free(param_str);
return 1; return 1;
} }
if (!(prefix0 == 'S' && prefix1 == 'F') && !(prefix0 == 'D' && prefix1 == 'P')) { if (!(prefix0 == 'S' && prefix1 == 'F') && !(prefix0 == 'D' && prefix1 == 'P')) {
msg_perr("Error: %s is an invalid id!\n", id_str); msg_perr("Error: %s is an invalid id!\n", param_str);
free(id_str); free(param_str);
return 1; return 1;
} }
msg_pinfo("Will search for dediprog id %s.\n", id_str); msg_pinfo("Will search for dediprog id %s.\n", param_str);
} }
free(id_str); free(param_str);
device = extract_programmer_param_str("device"); param_str = extract_programmer_param_str("device");
if (device) { if (param_str) {
char *dev_suffix; char *dev_suffix;
if (id != -1) { if (id != -1) {
msg_perr("Error: Cannot use 'id' and 'device'.\n"); msg_perr("Error: Cannot use 'id' and 'device'.\n");
} }
errno = 0; errno = 0;
usedevice = strtol(device, &dev_suffix, 10); usedevice = strtol(param_str, &dev_suffix, 10);
if (errno != 0 || device == dev_suffix) { if (errno != 0 || param_str == dev_suffix) {
msg_perr("Error: Could not convert 'device'.\n"); msg_perr("Error: Could not convert 'device'.\n");
free(device); free(param_str);
return 1; return 1;
} }
if (usedevice < 0 || usedevice > INT_MAX) { if (usedevice < 0 || usedevice > INT_MAX) {
msg_perr("Error: Value for 'device' is out of range.\n"); msg_perr("Error: Value for 'device' is out of range.\n");
free(device); free(param_str);
return 1; return 1;
} }
if (strlen(dev_suffix) > 0) { if (strlen(dev_suffix) > 0) {
msg_perr("Error: Garbage following 'device' value.\n"); msg_perr("Error: Garbage following 'device' value.\n");
free(device); free(param_str);
return 1; return 1;
} }
msg_pinfo("Using device %li.\n", usedevice); msg_pinfo("Using device %li.\n", usedevice);
} }
free(device); free(param_str);
target_str = extract_programmer_param_str("target"); param_str = extract_programmer_param_str("target");
if (target_str) { if (param_str) {
char *target_suffix; char *target_suffix;
errno = 0; errno = 0;
target = strtol(target_str, &target_suffix, 10); target = strtol(param_str, &target_suffix, 10);
if (errno != 0 || target_str == target_suffix) { if (errno != 0 || param_str == target_suffix) {
msg_perr("Error: Could not convert 'target'.\n"); msg_perr("Error: Could not convert 'target'.\n");
free(target_str); free(param_str);
return 1; return 1;
} }
if (target < 1 || target > 2) { if (target < 1 || target > 2) {
msg_perr("Error: Value for 'target' is out of range.\n"); msg_perr("Error: Value for 'target' is out of range.\n");
free(target_str); free(param_str);
return 1; return 1;
} }
if (strlen(target_suffix) > 0) { if (strlen(target_suffix) > 0) {
msg_perr("Error: Garbage following 'target' value.\n"); msg_perr("Error: Garbage following 'target' value.\n");
free(target_str); free(param_str);
return 1; return 1;
} }
switch (target) { switch (target) {
@ -1195,7 +1195,7 @@ static int dediprog_init(void)
break; break;
} }
} }
free(target_str); free(param_str);
struct dediprog_data *dp_data = calloc(1, sizeof(*dp_data)); struct dediprog_data *dp_data = calloc(1, sizeof(*dp_data));
if (!dp_data) { if (!dp_data) {