diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2010-07-06 09:55:48 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2010-07-06 09:55:48 +0000 |
commit | 744132af4b9f629716394f9c22f6add71cc73ef9 (patch) | |
tree | 46de6c5dc108fc2868603fdc606e7328a83f1703 /buspirate_spi.c | |
parent | d1be52d545329debd2128c1aa8685b31dfaa0a0e (diff) | |
download | flashrom-744132af4b9f629716394f9c22f6add71cc73ef9.tar.gz flashrom-744132af4b9f629716394f9c22f6add71cc73ef9.tar.bz2 flashrom-744132af4b9f629716394f9c22f6add71cc73ef9.zip |
Various places in the flashrom source feature custom parameter extraction from programmer_param
This led to wildly differing syntax for programmer parameters, and
it also voids pretty much every assumption you could make about
programmer_param. The latter is a problem for libflashrom.
Use extract_param everywhere, clean up related code and make it more
foolproof. Add two instances of exit(1) where we have no option to
return an error. Remove six instances of exit(1) where returning an
error was possible.
WARNING: This changes programmer parameter syntax for a few programmers!
Corresponding to flashrom svn r1070.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
Diffstat (limited to 'buspirate_spi.c')
-rw-r--r-- | buspirate_spi.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/buspirate_spi.c b/buspirate_spi.c index 1bf1d581a..4dceca560 100644 --- a/buspirate_spi.c +++ b/buspirate_spi.c @@ -101,24 +101,14 @@ int buspirate_spi_init(void) char *speed = NULL; int spispeed = 0x7; - if (programmer_param && !strlen(programmer_param)) { - free(programmer_param); - programmer_param = NULL; - } - if (programmer_param) { - dev = extract_param(&programmer_param, "dev=", ",:"); - speed = extract_param(&programmer_param, "spispeed=", ",:"); - if (strlen(programmer_param)) - msg_perr("Unhandled programmer parameters: %s\n", - programmer_param); - free(programmer_param); - programmer_param = NULL; - } - if (!dev) { + dev = extract_param(&programmer_param, "dev", ",:"); + if (!dev || !strlen(dev)) { msg_perr("No serial device given. Use flashrom -p " "buspirate_spi:dev=/dev/ttyUSB0\n"); return 1; } + + speed = extract_param(&programmer_param, "spispeed", ",:"); if (speed) { for (i = 0; spispeeds[i].name; i++) if (!strncasecmp(spispeeds[i].name, speed, @@ -129,12 +119,15 @@ int buspirate_spi_init(void) if (!spispeeds[i].name) msg_perr("Invalid SPI speed, using default.\n"); } + free(speed); + /* This works because speeds numbering starts at 0 and is contiguous. */ msg_pdbg("SPI speed is %sHz\n", spispeeds[spispeed].name); ret = buspirate_serialport_setup(dev); if (ret) return ret; + free(dev); /* This is the brute force version, but it should work. */ for (i = 0; i < 19; i++) { |