• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  */
6 
7 #include <fcntl.h>
8 #include <stdio.h>
9 #include <string.h>
10 #include <sys/stat.h>
11 #include <sys/types.h>
12 #include <unistd.h>
13 
14 int
main(int argc,const char * argv[])15 main (int argc, const char *argv[])
16 {
17   int f;
18   const char *stuff = "stuff";
19   const int stuff_len = strlen(stuff) + 1;
20   char read_back[10];
21   int retval = 0;
22 
23   if (argc != 3) {
24     fprintf (stderr, "Usage: %s <file_name> <redirected_file>\n", argv[0]);
25     return 1;
26   }
27 
28   f = open (argv[1], O_CREAT | O_WRONLY | O_TRUNC, S_IRWXU | S_IROTH);
29   if (f == -1) {
30     fprintf (stderr, "Inconclusive: Could not open file to write.\n");
31     return 1;
32   }
33   if (write (f, stuff, stuff_len) < stuff_len) {
34     fprintf (stderr, "Inconclusive: Could not write to the file.\n");
35     return 1;
36   }
37 
38   if (close (f) != 0) {
39     fprintf (stderr, "Inconclusive: Error closing write file.\n");
40     return 1;
41   }
42 
43   f = open (argv[2], O_RDONLY);
44   if (f == -1) {
45     retval = 1;
46     fprintf (stderr, "Failed. Couldn't open file to read.\n");
47   } else if (read (f, read_back, stuff_len) != stuff_len) {
48     retval = 1;
49     fprintf (stderr, "Failed. Couldn't read back data.\n");
50   } else if (strncmp (stuff, read_back, stuff_len) != 0) {
51     retval = 1;
52     fprintf (stderr, "Failed. The read back string does not match the orignial."
53                      " Original: |%s|, Read back: |%s|\n",
54                      stuff, read_back);
55   } else {
56     fprintf (stdout, "Success. Woohoo!\n");
57   }
58 
59   if (f != -1)
60     close (f);
61 
62   return retval;
63 }
64