ACK: [PATCH 2/5] lib: Make --disassemble-aml accept the outputdir argument (LP: #1201250)

Alex Hung alex.hung at canonical.com
Thu Feb 27 03:39:09 UTC 2014


On 02/11/2014 08:49 PM, Keng-Yu Lin wrote:
> This patch make it possible to optionally specify an argument as
> the output directory as:
> 
>   fwts --disassemble-aml=/tmp
> 
> If the argument is not specified, the output directory is the pwd.
> 
> Signed-off-by: Keng-Yu Lin <kengyu at canonical.com>
> ---
>  src/lib/include/fwts_iasl.h  |  3 ++-
>  src/lib/src/fwts_framework.c |  4 ++--
>  src/lib/src/fwts_iasl.c      | 22 +++++++++++++++-------
>  3 files changed, 19 insertions(+), 10 deletions(-)
> 
> diff --git a/src/lib/include/fwts_iasl.h b/src/lib/include/fwts_iasl.h
> index 0de4756..5efc95c 100644
> --- a/src/lib/include/fwts_iasl.h
> +++ b/src/lib/include/fwts_iasl.h
> @@ -22,7 +22,8 @@
>  
>  #include "fwts.h"
>  
> -int fwts_iasl_disassemble_all_to_file(fwts_framework *fw);
> +int fwts_iasl_disassemble_all_to_file(fwts_framework *fw,
> +	const char *path);
>  
>  int fwts_iasl_disassemble(fwts_framework *fw,
>  	const char *table,
> diff --git a/src/lib/src/fwts_framework.c b/src/lib/src/fwts_framework.c
> index 9c69bca..39ac802 100644
> --- a/src/lib/src/fwts_framework.c
> +++ b/src/lib/src/fwts_framework.c
> @@ -73,7 +73,7 @@ static fwts_option fwts_framework_options[] = {
>  	{ "show-tests-full", 	"",   0, "Show available tests including all minor tests." },
>  	{ "utils", 		"u",  0, "Run Utility 'tests'." },
>  	{ "json-data-path", 	"j:", 1, "Specify path to fwts json data files - default is /usr/share/fwts." },
> -	{ "disassemble-aml", 	"",   0, "Disassemble AML from DSDT and SSDT tables." },
> +	{ "disassemble-aml", 	"",   2, "Disassemble AML from DSDT and SSDT tables." },
>  	{ "log-type",		"",   1, "Specify log type (plaintext, json, html or xml)." },
>  	{ "unsafe",		"U",  0, "Unsafe tests (tests that can potentially cause kernel oopses)." },
>  	{ "filter-error-discard", "", 1, "Discard errors that match any of the specified labels." },
> @@ -1091,7 +1091,7 @@ int fwts_framework_options_handler(fwts_framework *fw, int argc, char * const ar
>  			fwts_framework_strdup(&fw->json_data_path, optarg);
>  			break;
>  		case 29: /* --disassemble-aml */
> -			fwts_iasl_disassemble_all_to_file(fw);
> +			fwts_iasl_disassemble_all_to_file(fw, optarg);
>  			return FWTS_COMPLETE;
>  		case 30: /* --log-type */
>  			if (fwts_framework_log_type_parse(fw, optarg) != FWTS_OK)
> diff --git a/src/lib/src/fwts_iasl.c b/src/lib/src/fwts_iasl.c
> index af1785e..1800912 100644
> --- a/src/lib/src/fwts_iasl.c
> +++ b/src/lib/src/fwts_iasl.c
> @@ -137,26 +137,34 @@ int fwts_iasl_disassemble(fwts_framework *fw,
>   *  fwts_iasl_disassemble_all_to_file()
>   * 	Disassemble DSDT and SSDT tables to separate files.
>   */
> -int fwts_iasl_disassemble_all_to_file(fwts_framework *fw)
> +int fwts_iasl_disassemble_all_to_file(fwts_framework *fw,
> +	const char *path)
>  {
>  	int i;
>  	int ret;
> +	char filename[PATH_MAX];
> +	char pathname[PATH_MAX];
>  
> -	ret = fwts_iasl_disassemble_to_file(fw, "DSDT", 0, "DSDT.dsl");
> +	if (path == NULL)
> +		strncpy(pathname, "", sizeof(pathname));
> +	else
> +		snprintf(pathname, sizeof(pathname), "%s/", path);
> +
> +	snprintf(filename, sizeof(filename), "%sDSDT.dsl", pathname);
> +
> +	ret = fwts_iasl_disassemble_to_file(fw, "DSDT", 0, filename);
>  	if (ret == FWTS_ERROR_NO_PRIV) {
>  		fprintf(stderr, "Need to have root privilege to read ACPI tables from memory! Re-run using sudo.\n");
>  		return FWTS_ERROR;
>  	}
>  	if (ret == FWTS_OK)
> -		printf("Disassembled DSDT to DSDT.dsl\n");
> +		printf("Disassembled DSDT to %s\n", filename);
>  
>  	for (i=0; ;i++) {
> -		char filename[PATH_MAX];
> -
> -		snprintf(filename, sizeof(filename), "SSDT%d.dsl", i);
> +		snprintf(filename, sizeof(filename), "%sSSDT%d.dsl", pathname, i);
>  		if (fwts_iasl_disassemble_to_file(fw, "SSDT", i, filename) != FWTS_OK)
>  			break;
> -		printf("Disassembled SSDT %d to SSDT%d.dsl\n", i, i);
> +		printf("Disassembled SSDT %d to %s\n", i, filename);
>  	}
>  
>  	return FWTS_OK;
> 

Acked-by: Alex Hung <alex.hung at canonical.com>



More information about the fwts-devel mailing list