[coreboot] r3789 - trunk/coreboot-v2/util/options

svn at coreboot.org svn at coreboot.org
Tue Dec 2 13:26:17 CET 2008


Author: stepan
Date: 2008-12-02 13:26:17 +0100 (Tue, 02 Dec 2008)
New Revision: 3789

Modified:
   trunk/coreboot-v2/util/options/build_opt_tbl.c
Log:
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 at coresystems.de>
Acked-by: Stefan Reinauer <stepan at coresystems.de>



Modified: trunk/coreboot-v2/util/options/build_opt_tbl.c
===================================================================
--- trunk/coreboot-v2/util/options/build_opt_tbl.c	2008-12-02 02:56:38 UTC (rev 3788)
+++ trunk/coreboot-v2/util/options/build_opt_tbl.c	2008-12-02 12:26:17 UTC (rev 3789)
@@ -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 @@
 	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 @@
 
 	/* 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 @@
 		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");





More information about the coreboot mailing list