diff options
author | Stefan Reinauer <stepan@coresystems.de> | 2008-12-02 12:26:17 +0000 |
---|---|---|
committer | Stefan Reinauer <stepan@openbios.org> | 2008-12-02 12:26:17 +0000 |
commit | b9b500f456bff123e0efc24f561183b937b66042 (patch) | |
tree | d063aba5f16ad6ef9c6dad03a8805b0db40ff79f | |
parent | 806def8cac0a2871f937e8a8c83ae07bc2996e2b (diff) |
build_opt_tbl:
make sure the temporary files are created in the same directory as the
target files so they can be rename()d. This fixes a compilation issue on
machines with the build directory living on another partition than /tmp.
Pretty trivial.
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3789 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rw-r--r-- | util/options/build_opt_tbl.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/util/options/build_opt_tbl.c b/util/options/build_opt_tbl.c index d9089e7327..4d98f8ecee 100644 --- a/util/options/build_opt_tbl.c +++ b/util/options/build_opt_tbl.c @@ -4,6 +4,7 @@ #include <unistd.h> #include <ctype.h> #include <errno.h> +#include <libgen.h> #include "../../src/include/pc80/mc146818rtc.h" #include "../../src/include/boot/coreboot_tables.h" @@ -11,7 +12,8 @@ #define INPUT_LINE_MAX 256 #define MAX_VALUE_BYTE_LENGTH 64 -#define TMPFILE_TEMPLATE "/tmp/build_opt_tbl_XXXXXX" +#define TMPFILE_LEN 256 +#define TMPFILE_TEMPLATE "/build_opt_tbl_XXXXXX" static unsigned char cmos_table[4096]; @@ -215,7 +217,7 @@ int main(int argc, char **argv) char *header=0; FILE *fp; int tmpfile; - char tmpfilename[32]; + char tmpfilename[TMPFILE_LEN]; struct cmos_option_table *ct; struct cmos_entries *ce; struct cmos_enums *c_enums, *c_enums_start; @@ -485,7 +487,8 @@ int main(int argc, char **argv) /* See if we want to output a C source file */ if(option) { - strcpy(tmpfilename, TMPFILE_TEMPLATE); + strncpy(tmpfilename, dirname(option), TMPFILE_LEN); + strncat(tmpfilename, TMPFILE_TEMPLATE, TMPFILE_LEN); tmpfile = mkstemp(tmpfilename); if(tmpfile == -1) { perror("Error - Could not create temporary file"); @@ -535,7 +538,8 @@ int main(int argc, char **argv) struct cmos_option_table *hdr; struct lb_record *ptr, *end; - strcpy(tmpfilename, TMPFILE_TEMPLATE); + strncpy(tmpfilename, dirname(option), TMPFILE_LEN); + strncat(tmpfilename, TMPFILE_TEMPLATE, TMPFILE_LEN); tmpfile = mkstemp(tmpfilename); if(tmpfile == -1) { perror("Error - Could not create temporary file"); |