| /* |
| * Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include <fcntl.h> |
| #include <stdio.h> |
| #include <string.h> |
| #include <sys/stat.h> |
| #include <sys/types.h> |
| #include <unistd.h> |
| |
| int |
| main (int argc, const char *argv[]) |
| { |
| int f; |
| const char *stuff = "stuff"; |
| const int stuff_len = strlen(stuff) + 1; |
| char read_back[10]; |
| int retval = 0; |
| |
| if (argc != 3) { |
| fprintf (stderr, "Usage: %s <file_name> <redirected_file>\n", argv[0]); |
| return 1; |
| } |
| |
| f = open (argv[1], O_CREAT | O_WRONLY | O_TRUNC, S_IRWXU | S_IROTH); |
| if (f == -1) { |
| fprintf (stderr, "Inconclusive: Could not open file to write.\n"); |
| return 1; |
| } |
| if (write (f, stuff, stuff_len) < stuff_len) { |
| fprintf (stderr, "Inconclusive: Could not write to the file.\n"); |
| return 1; |
| } |
| |
| if (close (f) != 0) { |
| fprintf (stderr, "Inconclusive: Error closing write file.\n"); |
| return 1; |
| } |
| |
| f = open (argv[2], O_RDONLY); |
| if (f == -1) { |
| retval = 1; |
| fprintf (stderr, "Failed. Couldn't open file to read.\n"); |
| } else if (read (f, read_back, stuff_len) != stuff_len) { |
| retval = 1; |
| fprintf (stderr, "Failed. Couldn't read back data.\n"); |
| } else if (strncmp (stuff, read_back, stuff_len) != 0) { |
| retval = 1; |
| fprintf (stderr, "Failed. The read back string does not match the orignial." |
| " Original: |%s|, Read back: |%s|\n", |
| stuff, read_back); |
| } else { |
| fprintf (stdout, "Success. Woohoo!\n"); |
| } |
| |
| if (f != -1) |
| close (f); |
| |
| return retval; |
| } |