From 32ff0e8875b8ad81f0c9ae3daa49bc70a2fded55 Mon Sep 17 00:00:00 2001 From: Domen Puncer Date: Mon, 3 Jul 2006 08:17:09 +0200 Subject: [PATCH] --- yaml --- r: 32567 b: refs/heads/master c: 6fe725c01c0c547c4287ba3de5ebc8f884178409 h: refs/heads/master i: 32565: cfdaa34a4d56200101833757f63225ab6c5e65de 32563: 73214c3e35e94bceda683868a12d51625feecfad 32559: 5090d6683d004fb8e5c65ad8f6040339c43eda54 v: v3 --- [refs] | 2 +- trunk/arch/mips/au1000/common/prom.c | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/[refs] b/[refs] index a68c51c8d786..bdd7d5663176 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c36cd4bab5084798b401d529129a950f4a48662d +refs/heads/master: 6fe725c01c0c547c4287ba3de5ebc8f884178409 diff --git a/trunk/arch/mips/au1000/common/prom.c b/trunk/arch/mips/au1000/common/prom.c index ae7d8c57bf3f..b4b010a2fe36 100644 --- a/trunk/arch/mips/au1000/common/prom.c +++ b/trunk/arch/mips/au1000/common/prom.c @@ -1,7 +1,7 @@ /* * * BRIEF MODULE DESCRIPTION - * PROM library initialisation code, assuming YAMON is the boot loader. + * PROM library initialisation code, supports YAMON and U-Boot. * * Copyright 2000, 2001, 2006 MontaVista Software Inc. * Author: MontaVista Software, Inc. @@ -46,12 +46,6 @@ extern int prom_argc; extern char **prom_argv, **prom_envp; -typedef struct -{ - char *name; - char *val; -} t_env_var; - char * prom_getcmdline(void) { @@ -84,13 +78,21 @@ char *prom_getenv(char *envname) { /* * Return a pointer to the given environment variable. + * YAMON uses "name", "value" pairs, while U-Boot uses "name=value". */ - t_env_var *env = (t_env_var *)prom_envp; - - while (env->name) { - if (strcmp(envname, env->name) == 0) - return env->val; + char **env = prom_envp; + int i = strlen(envname); + int yamon = (*env && strchr(*env, '=') == NULL); + + while (*env) { + if (yamon) { + if (strcmp(envname, *env++) == 0) + return *env; + } else { + if (strncmp(envname, *env, i) == 0 && (*env)[i] == '=') + return *env + i + 1; + } env++; } return NULL;