summaryrefslogtreecommitdiff
path: root/cbtable.c
diff options
context:
space:
mode:
authorhailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2012-01-04 00:48:27 +0000
committerhailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2012-01-04 00:48:27 +0000
commit234fb84eb42ed6718a23b99e822ea3d726e8b995 (patch)
tree7f14a4305d587d4ff56c1b3f764a9016dba5d03b /cbtable.c
parentcf3abbf99f950681e9601a1da17c0709179ce76e (diff)
downloadflashrom-234fb84eb42ed6718a23b99e822ea3d726e8b995.tar.gz
Replace --mainboard with -p internal:mainboard
--mainboard is a relic from a time before external programmers and makes the CLI inconsistent. Use a programmer parameter instead and free up the short option -m. NOTE: The --list-supported-wiki output changed to use -p internal:mainboard= instead of -m The --list-supported output changed the heading of the mainboard list from Vendor Board Status Required option to Vendor Board Status Required value for -p internal:mainboard= Fix lb_vendor_dev_from_string() not to write to the supplied string. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Stefan Tauner <stefan.tauner@student.tuwien.ac.at> git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@1483 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'cbtable.c')
-rw-r--r--cbtable.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/cbtable.c b/cbtable.c
index ea8964a..4495d9d 100644
--- a/cbtable.c
+++ b/cbtable.c
@@ -33,18 +33,27 @@
char *lb_part = NULL, *lb_vendor = NULL;
int partvendor_from_cbtable = 0;
-void lb_vendor_dev_from_string(char *boardstring)
+/* Parse the [<vendor>:]<board> string specified by the user as part of
+ * -p internal:mainboard=[<vendor>:]<board> and set lb_vendor and lb_part
+ * to the extracted values.
+ * Note: strtok modifies the original string, so we work on a copy and allocate
+ * memory for lb_vendor and lb_part with strdup.
+ */
+void lb_vendor_dev_from_string(const char *boardstring)
{
+ /* strtok may modify the original string. */
+ char *tempstr = strdup(boardstring);
char *tempstr2 = NULL;
- strtok(boardstring, ":");
+ strtok(tempstr, ":");
tempstr2 = strtok(NULL, ":");
if (tempstr2) {
- lb_vendor = boardstring;
- lb_part = tempstr2;
+ lb_vendor = strdup(tempstr);
+ lb_part = strdup(tempstr2);
} else {
lb_vendor = NULL;
- lb_part = boardstring;
+ lb_part = strdup(tempstr);
}
+ free(tempstr);
}
static unsigned long compute_checksum(void *addr, unsigned long length)