[PATCH 2/5] lib: Make --disassemble-aml accept the outputdir argument (LP: #1201250)
Keng-Yu Lin
kengyu at canonical.com
Tue Feb 11 12:49:54 UTC 2014
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;
--
1.8.1.2
More information about the fwts-devel
mailing list