xref: /linux/tools/testing/selftests/efivarfs/create-read.c (revision c4ee0af3fa0dc65f690fc908f02b8355f9576ea0)
1 #include <stdio.h>
2 #include <stdint.h>
3 #include <stdlib.h>
4 #include <unistd.h>
5 #include <sys/types.h>
6 #include <sys/stat.h>
7 #include <fcntl.h>
8 #include <errno.h>
9 #include <string.h>
10 
11 int main(int argc, char **argv)
12 {
13 	const char *path;
14 	char buf[4];
15 	int fd, rc;
16 
17 	if (argc < 2) {
18 		fprintf(stderr, "usage: %s <path>\n", argv[0]);
19 		return EXIT_FAILURE;
20 	}
21 
22 	path = argv[1];
23 
24 	/* create a test variable */
25 	fd = open(path, O_RDWR | O_CREAT, 0600);
26 	if (fd < 0) {
27 		perror("open(O_WRONLY)");
28 		return EXIT_FAILURE;
29 	}
30 
31 	rc = read(fd, buf, sizeof(buf));
32 	if (rc != 0) {
33 		fprintf(stderr, "Reading a new var should return EOF\n");
34 		return EXIT_FAILURE;
35 	}
36 
37 	return EXIT_SUCCESS;
38 }
39