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