xref: /aosp_15_r20/external/autotest/client/deps/fakegudev/src/fakesyscalls-exercise.c (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
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