@ -1524,7 +1524,7 @@ static int spread_partitions(void)
*/
*/
static int parse_mtdparts ( const char * const mtdparts )
static int parse_mtdparts ( const char * const mtdparts )
{
{
const char * p = mtdparts ;
const char * p ;
struct mtd_device * dev ;
struct mtd_device * dev ;
int err = 1 ;
int err = 1 ;
char tmp_parts [ MTDPARTS_MAXLEN ] ;
char tmp_parts [ MTDPARTS_MAXLEN ] ;
@ -1538,20 +1538,25 @@ static int parse_mtdparts(const char *const mtdparts)
}
}
/* re-read 'mtdparts' variable, mtd_devices_init may be updating env */
/* re-read 'mtdparts' variable, mtd_devices_init may be updating env */
if ( gd - > flags & GD_FLG_ENV_READY ) {
if ( gd - > flags & GD_FLG_ENV_READY )
p = getenv ( " mtdparts " ) ;
p = getenv ( " mtdparts " ) ;
} else {
else {
p = tmp_parts ;
if ( getenv_f ( " mtdparts " , tmp_parts , MTDPARTS_MAXLEN ) ! = - 1 )
getenv_f ( " mtdparts " , tmp_parts , MTDPARTS_MAXLEN ) ;
p = tmp_parts ;
else
p = NULL ;
}
}
if ( ! p )
p = mtdparts ;
if ( strncmp ( p , " mtdparts= " , 9 ) ! = 0 ) {
if ( strncmp ( p , " mtdparts= " , 9 ) ! = 0 ) {
printf ( " mtdparts variable doesn't start with 'mtdparts=' \n " ) ;
printf ( " mtdparts variable doesn't start with 'mtdparts=' \n " ) ;
return err ;
return err ;
}
}
p + = 9 ;
p + = 9 ;
while ( p & & ( * p ! = ' \0 ' ) ) {
while ( * p ! = ' \0 ' ) {
err = 1 ;
err = 1 ;
if ( ( device_parse ( p , & p , & dev ) ! = 0 ) | | ( ! dev ) )
if ( ( device_parse ( p , & p , & dev ) ! = 0 ) | | ( ! dev ) )
break ;
break ;
@ -1569,12 +1574,10 @@ static int parse_mtdparts(const char *const mtdparts)
list_add_tail ( & dev - > link , & devices ) ;
list_add_tail ( & dev - > link , & devices ) ;
err = 0 ;
err = 0 ;
}
}
if ( err = = 1 ) {
if ( err = = 1 )
device_delall ( & devices ) ;
device_delall ( & devices ) ;
return 1 ;
}
return 0 ;
return err ;
}
}
/**
/**