/* * 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; }