common/rc: Check 'tPnE' flags on a directory instead of a regilar file
[xfstests-dev.git] / src / fault.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2000-2003 Silicon Graphics, Inc.
4  * All Rights Reserved.
5  */
6
7 #include "global.h"
8
9 void expect_error(int r, int err)
10 {
11     if (r<0) {
12         if (errno == err) {
13             printf("   --- got error %d as expected\n", err);   
14         } else {
15             perror("   !!! unexpected error");
16         }
17     } else {
18         printf("   !!! success instead of error %d as expected\n", err);
19     }
20 }
21
22 int
23 main(int argc, char **argv)
24 {
25     int                 fsfd;
26     
27     if (argc != 2) {
28         fprintf(stderr,"usage: %s <filesystem>\n",
29                 argv[0]);
30         exit(0);
31     }
32
33     fsfd = open(argv[1], O_RDONLY);
34
35     if (fsfd < 0) {
36         perror("open");
37         exit(1);
38     }
39     
40     printf("--- xfsctl with bad output address\n");
41 #ifdef XFS_IOC_FSCOUNTS
42     expect_error(xfsctl(argv[1], fsfd, XFS_IOC_FSCOUNTS, NULL), EFAULT);
43 #else
44 #ifdef XFS_FS_COUNTS
45     expect_error(syssgi(SGI_XFS_FSOPERATIONS, fsfd, XFS_FS_COUNTS, NULL, NULL), EFAULT);
46 #else
47 bozo!
48 #endif
49 #endif
50
51     printf("--- xfsctl with bad input address\n");
52 #ifdef XFS_IOC_SET_RESBLKS
53     expect_error(xfsctl(argv[1], fsfd, XFS_IOC_SET_RESBLKS, NULL), EFAULT);
54 #else
55 #ifdef XFS_SET_RESBLKS
56     expect_error(syssgi(SGI_XFS_FSOPERATIONS, fsfd, XFS_SET_RESBLKS, NULL, NULL), EFAULT);
57 #else
58 bozo!
59 #endif
60 #endif
61     
62     close(fsfd);
63     
64     return 0;
65 }