]> git.scottworley.com Git - overonion/commitdiff
Take the output_fd as an argument
authorScott Worley <scottworley@scottworley.com>
Sat, 6 May 2017 06:58:24 +0000 (23:58 -0700)
committerScott Worley <scottworley@scottworley.com>
Fri, 20 Oct 2017 08:26:41 +0000 (01:26 -0700)
reverse.c
reverse_lib.c
reverse_lib.h

index 2d83751338ded6b7f08c20433f74c9b05945b22d..a9339073b1a48ffed53069222417a2ec3bc5d389 100644 (file)
--- a/reverse.c
+++ b/reverse.c
@@ -8,7 +8,7 @@ int main(int argc, char** argv) {
     errx(EX_USAGE, "Usage: reverse filename");
   }
 
-  reverse_file(argv[1]);
+  reverse_file(argv[1], 1);
 
   return 0;
 }
index a800db84dce4cdf1e7a30e5ca909562c171a8042..e69922b181d3adc76153c311889d74822bd85ac7 100644 (file)
@@ -22,7 +22,7 @@ static void write_all(int fd, const void *buf, size_t count) {
   }
 }
 
-void reverse_file(const char* input_filename) {
+void reverse_file(const char* input_filename, int output_fd) {
   int fd = open(input_filename, O_RDONLY);
   if (fd == -1) {
     err(EX_NOINPUT, "Could not open specified file");
@@ -46,12 +46,12 @@ void reverse_file(const char* input_filename) {
   for (off_t p = stats.st_size - 1; p >= 0; p--) {
     buf[buf_offset++] = m[p];
     if (buf_offset >= BUFFER_SIZE) {
-      write_all(1, buf, buf_offset);
+      write_all(output_fd, buf, buf_offset);
       buf_offset = 0;
     }
   }
   if (buf_offset) {
-    write_all(1, buf, buf_offset);
+    write_all(output_fd, buf, buf_offset);
   }
 
   if (munmap(m, map_size) == -1) {
index 58345fa21ba72eab49f0f1f6be6d27c0b6a5feb0..f4d7dd677f91657708fe9a2abb25f2d9832e90ad 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef _OVERONION_REVERSE_LIB_H
 #define _OVERONION_REVERSE_LIB_H
 
-/* Copy the contents of input_filename to stdout backwards.
+/* Copy the contents of input_filename to output_fd backwards.
  * input_filename must be a real file, not a pipe. */
-void reverse_file(const char* input_filename);
+void reverse_file(const char* input_filename, int output_fd);
 
 #endif /* _OVERONION_REVERSE_LIB_H */