summaryrefslogtreecommitdiffstats
path: root/lib_generic
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2007-07-05 18:01:49 +0200
committerSascha Hauer <sha@octopus.labnet.pengutronix.de>2007-07-05 18:01:49 +0200
commitd729a09f52dfafab555fa5e6e9d0cb22b4bb15fb (patch)
tree5f38fa3254fef9fc22ebbade63949b1a2c7b8c86 /lib_generic
parenta78b0a43215c76cbb3b5d3ccac3328819cb9c045 (diff)
downloadbarebox-d729a09f52dfafab555fa5e6e9d0cb22b4bb15fb.tar.gz
barebox-d729a09f52dfafab555fa5e6e9d0cb22b4bb15fb.tar.xz
svn_rev_391
remove different parameter types, all params are strings now
Diffstat (limited to 'lib_generic')
-rw-r--r--lib_generic/misc.c54
1 files changed, 14 insertions, 40 deletions
diff --git a/lib_generic/misc.c b/lib_generic/misc.c
index 31db462183..e0568739f0 100644
--- a/lib_generic/misc.c
+++ b/lib_generic/misc.c
@@ -7,6 +7,7 @@
#include <linux/ctype.h>
#include <errno.h>
#include <fs.h>
+#include <net.h>
int cmd_get_data_size(char* arg, int default_size)
{
@@ -386,7 +387,7 @@ int dummy_probe(struct device_d *dev)
return 0;
}
-struct param_d *get_param_by_name(struct device_d *dev, char *name)
+struct param_d *get_param_by_name(struct device_d *dev, const char *name)
{
struct param_d *param = dev->param;
@@ -399,21 +400,7 @@ struct param_d *get_param_by_name(struct device_d *dev, char *name)
return NULL;
}
-void print_param(struct param_d *param) {
- switch (param->type) {
- case PARAM_TYPE_STRING:
- printf("%s", param->value.val_str);
- break;
- case PARAM_TYPE_ULONG:
- printf("%ld", param->value.val_ulong);
- break;
- case PARAM_TYPE_IPADDR:
- print_IPaddr(param->value.val_ip);
- break;
- }
-}
-
-struct param_d* dev_get_param(struct device_d *dev, char *name)
+char *dev_get_param(struct device_d *dev, const char *name)
{
struct param_d *param = get_param_by_name(dev, name);
@@ -425,31 +412,23 @@ struct param_d* dev_get_param(struct device_d *dev, char *name)
if (param->get)
return param->get(dev, param);
- return param;
+ return param->value;
}
IPaddr_t dev_get_param_ip(struct device_d *dev, char *name)
{
- struct param_d *param = dev_get_param(dev, name);
-
- if (!param || param->type != PARAM_TYPE_IPADDR) {
- errno = -EINVAL;
- return 0;
- }
-
- return param->value.val_ip;
+ return string_to_ip(dev_get_param(dev, name));
}
int dev_set_param_ip(struct device_d *dev, char *name, IPaddr_t ip)
{
- value_t val;
-
- val.val_ip = ip;
+ char ipstr[16];
+ ip_to_string(ip, ipstr);
- return dev_set_param(dev, name, val);
+ return dev_set_param(dev, name, ipstr);
}
-int dev_set_param(struct device_d *dev, char *name, value_t val)
+int dev_set_param(struct device_d *dev, const char *name, const char *val)
{
struct param_d *param;
@@ -473,14 +452,10 @@ int dev_set_param(struct device_d *dev, char *name, value_t val)
if (param->set)
return param->set(dev, param, val);
- if (param->type == PARAM_TYPE_STRING) {
- if (param->value.val_str)
- free(param->value.val_str);
- param->value.val_str = strdup(val.val_str);
- return 0;
- }
+ if (param->value)
+ free(param->value);
- param->value = val;
+ param->value = strdup(val);
return 0;
}
@@ -537,9 +512,7 @@ int do_devinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
printf("%s\n", param ? "Parameters:" : "no parameters available");
while (param) {
- printf("%16s = ", param->name);
- print_param(param);
- printf("\n");
+ printf("%16s = %s\n", param->name, param->value);
param = param->next;
}
@@ -554,3 +527,4 @@ U_BOOT_CMD(
""
);
+