Date: Wed, 3 Jun 2009 20:24:28 +0000 (UTC) From: Jung-uk Kim <jkim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r193395 - projects/acpica_20090521/usr.sbin/acpi/acpidump Message-ID: <200906032024.n53KOSdA065436@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jkim Date: Wed Jun 3 20:24:28 2009 New Revision: 193395 URL: http://svn.freebsd.org/changeset/base/193395 Log: Fix acpidump(8) disassmebly with option -d. iasl(8) creates disassembled output file from input file name as a template. Honor TMPDIR environment variable while I am here. Modified: projects/acpica_20090521/usr.sbin/acpi/acpidump/acpi.c Modified: projects/acpica_20090521/usr.sbin/acpi/acpidump/acpi.c ============================================================================== --- projects/acpica_20090521/usr.sbin/acpi/acpidump/acpi.c Wed Jun 3 20:21:17 2009 (r193394) +++ projects/acpica_20090521/usr.sbin/acpi/acpidump/acpi.c Wed Jun 3 20:24:28 2009 (r193395) @@ -34,7 +34,9 @@ #include <assert.h> #include <err.h> #include <fcntl.h> +#include <paths.h> #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <unistd.h> @@ -803,11 +805,26 @@ dsdt_save_file(char *outfile, struct ACP void aml_disassemble(struct ACPIsdt *rsdt, struct ACPIsdt *dsdp) { - char tmpstr[32], buf[256]; + char buf[PATH_MAX], tmpstr[PATH_MAX]; + const char *tmpdir; + char *tmpext; FILE *fp; - int fd, len; + size_t len; + int fd; - strcpy(tmpstr, "/tmp/acpidump.XXXXXX"); + tmpdir = getenv("TMPDIR"); + if (tmpdir == NULL) + tmpdir = _PATH_TMP; + strncpy(tmpstr, tmpdir, sizeof(tmpstr)); + strncat(tmpstr, "/acpidump.", sizeof(tmpstr) - strlen(tmpdir)); + if (realpath(tmpstr, buf) == NULL) { + perror("realpath tmp file"); + return; + } + strncpy(tmpstr, buf, sizeof(tmpstr)); + len = strlen(buf); + tmpext = tmpstr + len; + strncpy(tmpext, "XXXXXX", sizeof(tmpstr) - len); fd = mkstemp(tmpstr); if (fd < 0) { perror("iasl tmp file"); @@ -821,7 +838,7 @@ aml_disassemble(struct ACPIsdt *rsdt, st close(STDOUT_FILENO); if (vflag == 0) close(STDERR_FILENO); - execl("/usr/sbin/iasl", "iasl", "-d", tmpstr, (char *) 0); + execl("/usr/sbin/iasl", "iasl", "-d", tmpstr, NULL); err(1, "exec"); } @@ -829,8 +846,9 @@ aml_disassemble(struct ACPIsdt *rsdt, st unlink(tmpstr); /* Dump iasl's output to stdout */ - fp = fopen("acpidump.dsl", "r"); - unlink("acpidump.dsl"); + strncpy(tmpext, "dsl", sizeof(tmpstr) - len); + fp = fopen(tmpstr, "r"); + unlink(tmpstr); if (fp == NULL) { perror("iasl tmp file (read)"); return;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906032024.n53KOSdA065436>