From d797ebe0c38c6bfca7f1c37f06162e367feaa16c Mon Sep 17 00:00:00 2001 From: David Schleef Date: Sat, 19 Sep 2009 21:45:08 -0700 Subject: [PATCH] codemem: use symbol name in filename --- orc/orccodemem.c | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/orc/orccodemem.c b/orc/orccodemem.c index 965725e..2a94be4 100644 --- a/orc/orccodemem.c +++ b/orc/orccodemem.c @@ -7,6 +7,8 @@ #include #include +#include +#include #ifdef HAVE_CODEMEM_MMAP #include #endif @@ -14,6 +16,7 @@ #include #include + #define SIZE 65536 @@ -21,17 +24,38 @@ void orc_compiler_allocate_codemem (OrcCompiler *compiler) { - char filename[32] = "/tmp/orcexecXXXXXX"; int fd; int n; - fd = mkstemp (filename); - if (fd == -1) { - /* FIXME oh crap */ - ORC_COMPILER_ERROR (compiler, "failed to create temp file"); - return; + /* FIXME something combining these two would be ideal */ +#if 1 + { + char filename[32] = "/tmp/orcexecXXXXXX"; + fd = mkstemp (filename); + if (fd == -1) { + /* FIXME oh crap */ + ORC_COMPILER_ERROR (compiler, "failed to create temp file"); + return; + } + unlink (filename); } - unlink (filename); +#else + { + char *filename; + + filename = malloc (strlen ("/tmp/orcexec") + + strlen (compiler->program->name) + 1); + sprintf(filename, "/tmp/orcexec%s", compiler->program->name); + fd = open (filename, O_RDWR | O_CREAT, S_IRWXU); + if (fd == -1) { + /* FIXME oh crap */ + ORC_COMPILER_ERROR (compiler, "failed to create temp file"); + return; + } + unlink (filename); + free (filename); + } +#endif n = ftruncate (fd, SIZE); -- 2.7.4