summaryrefslogtreecommitdiffstats
path: root/src/misc/util/utilFile.c
diff options
context:
space:
mode:
authorClaire Xen <claire@clairexen.net>2022-02-15 17:57:27 +0100
committerGitHub <noreply@github.com>2022-02-15 17:57:27 +0100
commit57ef73b2053ad644cfecd608dafdb9b848fc6cdb (patch)
tree0c3ff28e48071a2c921b7ed1fe7218124c1df629 /src/misc/util/utilFile.c
parent9b245d9f6910c048e9bbcf95ee5dee46f2f24f2c (diff)
parent264dfc7ed414476438e4a858258f5516d7b863c6 (diff)
downloadabc-57ef73b2053ad644cfecd608dafdb9b848fc6cdb.tar.gz
abc-57ef73b2053ad644cfecd608dafdb9b848fc6cdb.tar.bz2
abc-57ef73b2053ad644cfecd608dafdb9b848fc6cdb.zip
Merge pull request #10 from YosysHQ/yosys-experimental
Integrate write_cex and cexinfo and some fixes in write_cex output code
Diffstat (limited to 'src/misc/util/utilFile.c')
-rw-r--r--src/misc/util/utilFile.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/misc/util/utilFile.c b/src/misc/util/utilFile.c
index 4bb2f4c6..f64d71c2 100644
--- a/src/misc/util/utilFile.c
+++ b/src/misc/util/utilFile.c
@@ -25,6 +25,23 @@
#include <fcntl.h>
#include <sys/stat.h>
+// Handle legacy macros
+#if !defined(S_IREAD)
+#if defined(S_IRUSR)
+#define S_IREAD S_IRUSR
+#else
+#error S_IREAD is undefined
+#endif
+#endif
+
+#if !defined(S_IWRITE)
+#if defined(S_IWUSR)
+#define S_IWRITE S_IWUSR
+#else
+#error S_IWRITE is undefined
+#endif
+#endif
+
#if defined(_MSC_VER) || defined(__MINGW32__)
#include <windows.h>
#include <process.h>
@@ -102,6 +119,17 @@ int tmpFile(const char* prefix, const char* suffix, char** out_name)
}
assert(0); // -- could not open temporary file
return 0;
+#elif defined(__wasm)
+ static int seq = 0; // no risk of collision since we're in a sandbox
+ int fd;
+ *out_name = (char*)malloc(strlen(prefix) + strlen(suffix) + 9);
+ sprintf(*out_name, "%s%08d%s", prefix, seq++, suffix);
+ fd = open(*out_name, O_CREAT | O_EXCL | O_RDWR, S_IREAD | S_IWRITE);
+ if (fd == -1){
+ free(*out_name);
+ *out_name = NULL;
+ }
+ return fd;
#else
int fd;
*out_name = (char*)malloc(strlen(prefix) + strlen(suffix) + 7);