@ -180,6 +180,11 @@ const uchar *env_get_addr(int index)
void set_default_env ( const char * s )
{
/*
* By default , do not apply changes as they will eventually
* be applied by someone else
*/
int do_apply = 0 ;
if ( sizeof ( default_environment ) > ENV_SIZE ) {
puts ( " *** Error - default environment is too large \n \n " ) ;
return ;
@ -191,6 +196,14 @@ void set_default_env(const char *s)
" using default environment \n \n " ,
s + 1 ) ;
} else {
/*
* This set_to_default was explicitly asked for
* by the user , as opposed to being a recovery
* mechanism . Therefore we check every single
* variable and apply changes to the system
* right away ( e . g . baudrate , console ) .
*/
do_apply = 1 ;
puts ( s ) ;
}
} else {
@ -199,12 +212,25 @@ void set_default_env(const char *s)
if ( himport_r ( & env_htab , ( char * ) default_environment ,
sizeof ( default_environment ) , ' \0 ' , 0 ,
0 , NULL , 0 /* do_apply */ ) = = 0 )
0 , NULL , do_apply ) = = 0 )
error ( " Environment import failed: errno = %d \n " , errno ) ;
gd - > flags | = GD_FLG_ENV_READY ;
}
/* [re]set individual variables to their value in the default environment */
int set_default_vars ( int nvars , char * const vars [ ] )
{
/*
* Special use - case : import from default environment
* ( and use \ 0 as a separator )
*/
return himport_r ( & env_htab , ( const char * ) default_environment ,
sizeof ( default_environment ) , ' \0 ' , H_NOCLEAR ,
nvars , vars , 1 /* do_apply */ ) ;
}
/*
* Check if CRC is valid and ( if yes ) import the environment .
* Note that " buf " may or may not be aligned .