]> git.scottworley.com Git - overonion/commitdiff
Pull out make_temporary_file
authorScott Worley <scottworley@scottworley.com>
Sun, 7 May 2017 18:27:58 +0000 (11:27 -0700)
committerScott Worley <scottworley@scottworley.com>
Fri, 20 Oct 2017 08:26:41 +0000 (01:26 -0700)
Makefile
reverse_lib.c
temp_file.c [new file with mode: 0644]
temp_file.h [new file with mode: 0644]

index fe978d38c88269922e50e5925f60db2828a7d8c7..6e2eacb511060fb9f047b7a3acc2104503fa7443 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -17,8 +17,8 @@ test: reverse_test
 
 .PHONY: clean distclean depend test
 
-reverse: reverse.o reverse_lib.o
-reverse_test: reverse_test.o reverse_lib.o
+reverse: reverse.o reverse_lib.o temp_file.o
+reverse_test: reverse_test.o reverse_lib.o temp_file.o
        $(CC) -o $@ $^ $(CFLAGS)
 
 %.o: %.c
index 20837ee5f65fe95b237436b0d1685fd2d497a69d..f217b1cf2a46bf4c9c5eea4f53b68b16bd0adceb 100644 (file)
@@ -1,6 +1,7 @@
-#define _GNU_SOURCE
 #define _FILE_OFFSET_BITS 64
 
+#include "temp_file.h"
+
 #include <err.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -32,23 +33,6 @@ void reverse_file(const char* input_filename, FILE* output_stream) {
   if (close(fd) == -1) err(EX_IOERR, "Could not close input");
 }
 
-/* Create a temporary file in $TMPDIR, or /tmp if TMPDIR is not set.
- * Caller must free temp_filename and fclose temp_file.  Succeeds or terminates
- * the process. */
-static 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");
-}
-
 /* Copy data from input to output until EOF is reached. */
 static void copy(FILE* input, FILE* output) {
   for (;;) {
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");
+}
diff --git a/temp_file.h b/temp_file.h
new file mode 100644 (file)
index 0000000..d4fe41e
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef _OVERONION_TEMP_FILE_H
+#define _OVERONION_TEMP_FILE_H
+
+#include <stdio.h>
+
+/* Create a temporary file in $TMPDIR, or /tmp if TMPDIR is not set.
+ * Caller must free temp_filename and fclose temp_file.  Succeeds or terminates
+ * the process. */
+void make_temporary_file(char** temp_filename, FILE** temp_file);
+
+#endif /* _OVERONION_TEMP_FILE_H */