@ -158,6 +158,17 @@ void cmd_help(const img_cmd_t *ccmd,
exit ( EXIT_SUCCESS ) ;
}
static OutputFormat parse_output_format ( const char * argv0 , const char * arg )
{
if ( ! strcmp ( arg , " json " ) ) {
return OFORMAT_JSON ;
} else if ( ! strcmp ( arg , " human " ) ) {
return OFORMAT_HUMAN ;
} else {
error_exit ( argv0 , " --output expects 'human' or 'json', not '%s' " , arg ) ;
}
}
/* Please keep in synch with docs/tools/qemu-img.rst */
static G_NORETURN
void help ( void )
@ -775,7 +786,7 @@ static int img_check(const img_cmd_t *ccmd, int argc, char **argv)
{
int c , ret ;
OutputFormat output_format = OFORMAT_HUMAN ;
const char * filename , * fmt , * output , * cache ;
const char * filename , * fmt , * cache ;
BlockBackend * blk ;
BlockDriverState * bs ;
int fix = 0 ;
@ -787,7 +798,6 @@ static int img_check(const img_cmd_t *ccmd, int argc, char **argv)
bool force_share = false ;
fmt = NULL ;
output = NULL ;
cache = BDRV_DEFAULT_CACHE ;
for ( ; ; ) {
@ -833,7 +843,7 @@ static int img_check(const img_cmd_t *ccmd, int argc, char **argv)
}
break ;
case OPTION_OUTPUT :
output = optarg ;
output_format = parse_ out pu t_format ( argv [ 0 ] , optarg ) ;
break ;
case ' T ' :
cache = optarg ;
@ -857,15 +867,6 @@ static int img_check(const img_cmd_t *ccmd, int argc, char **argv)
}
filename = argv [ optind + + ] ;
if ( output & & ! strcmp ( output , " json " ) ) {
output_format = OFORMAT_JSON ;
} else if ( output & & ! strcmp ( output , " human " ) ) {
output_format = OFORMAT_HUMAN ;
} else if ( output ) {
error_report ( " --output must be used with human or json as argument. " ) ;
return 1 ;
}
ret = bdrv_parse_cache_mode ( cache , & flags , & writethrough ) ;
if ( ret < 0 ) {
error_report ( " Invalid source cache option: %s " , cache ) ;
@ -3059,13 +3060,12 @@ static int img_info(const img_cmd_t *ccmd, int argc, char **argv)
int c ;
OutputFormat output_format = OFORMAT_HUMAN ;
bool chain = false ;
const char * filename , * fmt , * output ;
const char * filename , * fmt ;
BlockGraphInfoList * list ;
bool image_opts = false ;
bool force_share = false ;
fmt = NULL ;
output = NULL ;
for ( ; ; ) {
int option_index = 0 ;
static const struct option long_options [ ] = {
@ -3100,7 +3100,7 @@ static int img_info(const img_cmd_t *ccmd, int argc, char **argv)
force_share = true ;
break ;
case OPTION_OUTPUT :
output = optarg ;
output_format = parse_ out pu t_format ( argv [ 0 ] , optarg ) ;
break ;
case OPTION_BACKING_CHAIN :
chain = true ;
@ -3118,15 +3118,6 @@ static int img_info(const img_cmd_t *ccmd, int argc, char **argv)
}
filename = argv [ optind + + ] ;
if ( output & & ! strcmp ( output , " json " ) ) {
output_format = OFORMAT_JSON ;
} else if ( output & & ! strcmp ( output , " human " ) ) {
output_format = OFORMAT_HUMAN ;
} else if ( output ) {
error_report ( " --output must be used with human or json as argument. " ) ;
return 1 ;
}
list = collect_image_info_list ( image_opts , filename , fmt , chain ,
force_share ) ;
if ( ! list ) {
@ -3285,7 +3276,7 @@ static int img_map(const img_cmd_t *ccmd, int argc, char **argv)
OutputFormat output_format = OFORMAT_HUMAN ;
BlockBackend * blk ;
BlockDriverState * bs ;
const char * filename , * fmt , * output ;
const char * filename , * fmt ;
int64_t length ;
MapEntry curr = { . length = 0 } , next ;
int ret = 0 ;
@ -3295,7 +3286,6 @@ static int img_map(const img_cmd_t *ccmd, int argc, char **argv)
int64_t max_length = - 1 ;
fmt = NULL ;
output = NULL ;
for ( ; ; ) {
int option_index = 0 ;
static const struct option long_options [ ] = {
@ -3331,7 +3321,7 @@ static int img_map(const img_cmd_t *ccmd, int argc, char **argv)
force_share = true ;
break ;
case OPTION_OUTPUT :
output = optarg ;
output_format = parse_ out pu t_format ( argv [ 0 ] , optarg ) ;
break ;
case ' s ' :
start_offset = cvtnum ( " start offset " , optarg ) ;
@ -3358,15 +3348,6 @@ static int img_map(const img_cmd_t *ccmd, int argc, char **argv)
}
filename = argv [ optind ] ;
if ( output & & ! strcmp ( output , " json " ) ) {
output_format = OFORMAT_JSON ;
} else if ( output & & ! strcmp ( output , " human " ) ) {
output_format = OFORMAT_HUMAN ;
} else if ( output ) {
error_report ( " --output must be used with human or json as argument. " ) ;
return 1 ;
}
blk = img_open ( image_opts , filename , fmt , 0 , false , false , force_share ) ;
if ( ! blk ) {
return 1 ;
@ -5473,15 +5454,7 @@ static int img_measure(const img_cmd_t *ccmd, int argc, char **argv)
image_opts = true ;
break ;
case OPTION_OUTPUT :
if ( ! strcmp ( optarg , " json " ) ) {
output_format = OFORMAT_JSON ;
} else if ( ! strcmp ( optarg , " human " ) ) {
output_format = OFORMAT_HUMAN ;
} else {
error_report ( " --output must be used with human or json "
" as argument. " ) ;
goto out ;
}
output_format = parse_output_format ( argv [ 0 ] , optarg ) ;
break ;
case OPTION_SIZE :
img_size = cvtnum ( " image size " , optarg ) ;