]> git.scottworley.com Git - overonion/blobdiff - temp_file.c
Merge reverse + overonion shell implementation
[overonion] / temp_file.c
diff --git a/temp_file.c b/temp_file.c
new file mode 100644 (file)
index 0000000..68bfb88
--- /dev/null
@@ -0,0 +1,22 @@
+#define _GNU_SOURCE
+
+#include "temp_file.h"
+
+#include <err.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sysexits.h>
+
+void make_temporary_file(char** temp_filename, FILE** temp_file) {
+  char* TMPDIR = getenv("TMPDIR");
+  if (TMPDIR == NULL) {
+    TMPDIR = "/tmp";
+  }
+  if (asprintf(temp_filename, "%s/reverse.XXXXXX", TMPDIR) == -1) {
+    errx(EX_OSERR, "Could not assemble temporary filename");
+  }
+  int fd = mkstemp(*temp_filename);
+  if (fd == -1) err(EX_IOERR, "Could not make a temporary file");
+  *temp_file = fdopen(fd, "w");
+  if (*temp_file == NULL) err(EX_IOERR, "Could not open temporary file");
+}