2
0
mirror of https://github.com/xcat2/xNBA.git synced 2024-12-05 02:54:38 +00:00

[image] Modify imgfree command to accept an argument

This resolves potential difficulties occurring when more than one script
is used. Total cost: 88 bytes uncompressed.

Signed-off-by: Michael Brown <mcb30@etherboot.org>
This commit is contained in:
Joshua Oreman 2009-06-16 11:46:13 -07:00 committed by Michael Brown
parent 254bdc2a8e
commit f8448735b0

View File

@ -499,9 +499,9 @@ static int imgstat_exec ( int argc, char **argv ) {
*/
static void imgfree_syntax ( char **argv ) {
printf ( "Usage:\n"
" %s\n"
" %s [<image name>]\n"
"\n"
"Free all executable/loadable images\n",
"Free one or all executable/loadable images\n",
argv[0] );
}
@ -519,6 +519,7 @@ static int imgfree_exec ( int argc, char **argv ) {
};
struct image *image;
struct image *tmp;
const char *name = NULL;
int c;
/* Parse options */
@ -533,15 +534,27 @@ static int imgfree_exec ( int argc, char **argv ) {
}
}
/* No arguments */
/* Need no more than one image name */
if ( optind != argc )
name = argv[optind++];
if ( optind != argc ) {
imgfree_syntax ( argv );
return 1;
}
/* Free all images */
list_for_each_entry_safe ( image, tmp, &images, list ) {
if ( name ) {
/* Free specified image (may leak) */
image = find_image ( name );
if ( ! image ) {
printf ( "No such image: %s\n", name );
return 1;
}
imgfree ( image );
} else {
/* Free all images */
list_for_each_entry_safe ( image, tmp, &images, list ) {
imgfree ( image );
}
}
return 0;
}