diff options
author | Marco Felsch <m.felsch@pengutronix.de> | 2019-10-30 18:03:39 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-11-04 10:38:52 +0100 |
commit | 3b81d1199347b2fd250d72bb4df39e15f975b6ed (patch) | |
tree | d1ccbb8c3fea90931bf2c80992ed576ca1b9dcb5 | |
parent | 5c06691a321c9f0d9e143c52b143366d0428391b (diff) | |
download | barebox-3b81d1199347b2fd250d72bb4df39e15f975b6ed.tar.gz barebox-3b81d1199347b2fd250d72bb4df39e15f975b6ed.tar.xz |
parameter: strip leading and trailing whitespaces
My initial bug was the following: I set the
global.boot.default="boot1 boot2 " and executed the 'boot' command. If
both targets are not bootable barebox starts to execute the boot scripts
found under /env/boot. This is because of the command/boot.c
implementation and the leading whitespace. Without the whitespace only
the two desired boot targets are tried.
IMHO leading and trailing whitespaces are error-prone in many cases. If
someone wants to concatenate strings he/she should add spaces on
purpose. So I fixed the bug above globally by always stripping leading
and trailing whitespaces.
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | lib/parameter.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/parameter.c b/lib/parameter.c index 00e9a9ff4e..fdbb2e71d1 100644 --- a/lib/parameter.c +++ b/lib/parameter.c @@ -253,11 +253,14 @@ static int param_string_set(struct device_d *dev, struct param_d *p, const char struct param_string *ps = to_param_string(p); int ret; char *value_save = *ps->value; + char *value_new; if (!val) val = ""; - *ps->value = xstrdup(val); + value_new = xstrdup(val); + value_new = strim(value_new); + *ps->value = value_new; if (!ps->set) return 0; |