diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-06-18 08:46:36 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-06-18 08:59:32 +0200 |
commit | 3b6a1db325bbb3bc89f38efe9527c41367e6e1f1 (patch) | |
tree | d9b52144b986b633af97c20c6f0465f3b10a9c0d /lib | |
parent | f889ebacb25a1bddeb5dde44d59feca84f2757e9 (diff) | |
download | barebox-3b6a1db325bbb3bc89f38efe9527c41367e6e1f1.tar.gz barebox-3b6a1db325bbb3bc89f38efe9527c41367e6e1f1.tar.xz |
device parameters: sort alphabetically
With many parameters on the global device it becomes increasingly
annoying to find a parameter in the list. Sort it alphabetically
to make this easier.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/parameter.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/parameter.c b/lib/parameter.c index 865ad9f431..4c261b1e30 100644 --- a/lib/parameter.c +++ b/lib/parameter.c @@ -122,6 +122,14 @@ static const char *param_get_generic(struct device_d *dev, struct param_d *p) return p->value ? p->value : ""; } +static int compare(struct list_head *a, struct list_head *b) +{ + char *na = (char*)list_entry(a, struct param_d, list)->name; + char *nb = (char*)list_entry(b, struct param_d, list)->name; + + return strcmp(na, nb); +} + static int __dev_add_param(struct param_d *param, struct device_d *dev, const char *name, int (*set)(struct device_d *dev, struct param_d *p, const char *val), const char *(*get)(struct device_d *dev, struct param_d *p), @@ -145,7 +153,7 @@ static int __dev_add_param(struct param_d *param, struct device_d *dev, const ch param->flags = flags; param->dev = dev; - list_add_tail(¶m->list, &dev->parameters); + list_add_sort(¶m->list, &dev->parameters, compare); return 0; } |