mirror of
https://github.com/xcat2/xNBA.git
synced 2024-12-14 07:11:32 +00:00
Allow "imgexec" with no arguments to boot the file that was loaded with
"kernel".
This commit is contained in:
parent
f135a37f30
commit
2876197306
@ -304,7 +304,7 @@ static int imgexec_exec ( int argc, char **argv ) {
|
||||
{ NULL, 0, NULL, 0 },
|
||||
};
|
||||
struct image *image;
|
||||
const char *name;
|
||||
const char *name = NULL;
|
||||
int c;
|
||||
int rc;
|
||||
|
||||
@ -320,19 +320,29 @@ static int imgexec_exec ( int argc, char **argv ) {
|
||||
}
|
||||
}
|
||||
|
||||
/* Need exactly one image name */
|
||||
if ( optind != ( argc - 1 ) ) {
|
||||
/* Need no more than one image name */
|
||||
if ( optind != argc )
|
||||
name = argv[optind++];
|
||||
if ( optind != argc ) {
|
||||
imgexec_syntax ( argv );
|
||||
return 1;
|
||||
}
|
||||
name = argv[optind];
|
||||
|
||||
/* Execute specified image */
|
||||
image = find_image ( name );
|
||||
if ( ! image ) {
|
||||
printf ( "No such image: %s\n", name );
|
||||
return 1;
|
||||
if ( name ) {
|
||||
image = find_image ( name );
|
||||
if ( ! image ) {
|
||||
printf ( "No such image: %s\n", name );
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
image = imgautoselect();
|
||||
if ( ! image ) {
|
||||
printf ( "No loaded images\n" );
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ( rc = imgexec ( image ) ) != 0 ) {
|
||||
printf ( "Could not execute %s: %s\n", name, strerror ( rc ) );
|
||||
return 1;
|
||||
@ -448,7 +458,6 @@ static int imgfree_exec ( int argc, char **argv ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/** Image management commands */
|
||||
struct command image_commands[] __command = {
|
||||
{
|
||||
|
@ -11,6 +11,7 @@ extern int imgfetch ( const char *filename, const char *name,
|
||||
struct image **new_image );
|
||||
extern int imgload ( struct image *image );
|
||||
extern int imgexec ( struct image *image );
|
||||
extern struct image * imgautoselect ( void );
|
||||
extern void imgstat ( struct image *image );
|
||||
extern void imgfree ( struct image *image );
|
||||
|
||||
|
@ -90,6 +90,22 @@ int imgexec ( struct image *image ) {
|
||||
return image_exec ( image );
|
||||
}
|
||||
|
||||
/**
|
||||
* Identify the first loaded image
|
||||
*
|
||||
* @ret image Image, or NULL
|
||||
*/
|
||||
struct image * imgautoselect ( void ) {
|
||||
struct image *image;
|
||||
|
||||
for_each_image ( image ) {
|
||||
if ( image->flags & IMAGE_LOADED )
|
||||
return image;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display status of an image
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user