dmapi: spdx license conversion
[xfstests-dev.git] / dmapi / src / suite1 / cmd / get_config_events.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2000-2001 Silicon Graphics, Inc.
4  * All Rights Reserved.
5  */
6
7 #include <lib/hsm.h>
8
9 #include <string.h>
10 #include <getopt.h>
11
12 /*---------------------------------------------------------------------------
13
14 Test program used to test the DMAPI function dm_get_config_events().  The
15 command line is:
16
17         get_config_events [-n nelem] handle
18
19 where handle is the handle of a file or filesystem, and nelem is the value
20 to use for the nelem parameter to dm_get_eventlist().
21
22 ----------------------------------------------------------------------------*/
23
24 extern  int     optind;
25 extern  char    *optarg;
26
27
28 char    *Progname;
29
30
31
32 static void
33 usage(void)
34 {
35         fprintf(stderr, "usage:\t%s [-n nelem] handle\n", Progname);
36         exit(1);
37 }
38
39
40 int
41 main(
42         int     argc, 
43         char    **argv)
44 {
45         u_int           nelem = DM_EVENT_MAX;
46         char            *han_str;
47         dm_eventset_t   eventset;
48         void            *hanp;
49         size_t           hlen;
50         u_int           nelemp;
51         char            *name;
52         int             error;
53         int             opt;
54         int             i;
55
56         Progname = strrchr(argv[0], '/');
57         if (Progname) {
58                 Progname++;
59         } else {
60                 Progname = argv[0];
61         }
62
63         /* Crack and validate the command line options. */
64
65         while ((opt = getopt(argc, argv, "n:")) != EOF) {
66                 switch (opt) {
67                 case 'n':
68                         nelem = atol(optarg);
69                         break;
70                 case '?':
71                         usage();
72                 }
73         }
74         if (optind + 1 != argc)
75                 usage();
76         han_str = argv[optind];
77         if ((error = atohan(han_str, &hanp, &hlen)) != 0) {
78                 fprintf(stderr, "atohan() failed, %s\n", strerror(error));
79                 return(1);
80         }
81
82         if (dm_init_service(&name))  {
83                 fprintf(stderr, "Can't initialize the DMAPI\n");
84                 return(1);
85         }
86
87         DMEV_ZERO(eventset);
88
89         if (dm_get_config_events(hanp, hlen, nelem, &eventset, &nelemp)) {
90                 fprintf(stderr, "dm_get_config_events failed, %s\n",
91                         strerror(errno));
92                 return(1);
93         }
94
95         fprintf(stdout, "Events supported (0x%llx), nelemp %d:\n",
96                 (unsigned long long) eventset, nelemp);
97
98         for (i = 0; i < nelemp; i++) {
99                 if (!DMEV_ISSET(i, eventset))
100                         continue;
101                 switch (i) {
102                 case DM_EVENT_CANCEL:
103                         fprintf(stdout, "DM_EVENT_CANCEL");
104                         break;
105                 case DM_EVENT_MOUNT:
106                         fprintf(stdout, "DM_EVENT_MOUNT");
107                         break;
108                 case DM_EVENT_PREUNMOUNT:
109                         fprintf(stdout, "DM_EVENT_PREUNMOUNT");
110                         break;
111                 case DM_EVENT_UNMOUNT:
112                         fprintf(stdout, "DM_EVENT_UNMOUNT");
113                         break;
114                 case DM_EVENT_DEBUT:
115                         fprintf(stdout, "DM_EVENT_DEBUT");
116                         break;
117                 case DM_EVENT_CREATE:
118                         fprintf(stdout, "DM_EVENT_CREATE");
119                         break;
120                 case DM_EVENT_CLOSE:
121                         fprintf(stdout, "DM_EVENT_CLOSE");
122                         break;
123                 case DM_EVENT_POSTCREATE:
124                         fprintf(stdout, "DM_EVENT_POSTCREATE");
125                         break;
126                 case DM_EVENT_REMOVE:
127                         fprintf(stdout, "DM_EVENT_REMOVE");
128                         break;
129                 case DM_EVENT_POSTREMOVE:
130                         fprintf(stdout, "DM_EVENT_POSTREMOVE");
131                         break;
132                 case DM_EVENT_RENAME:
133                         fprintf(stdout, "DM_EVENT_RENAME");
134                         break;
135                 case DM_EVENT_POSTRENAME:
136                         fprintf(stdout, "DM_EVENT_POSTRENAME");
137                         break;
138                 case DM_EVENT_LINK:
139                         fprintf(stdout, "DM_EVENT_LINK");
140                         break;
141                 case DM_EVENT_POSTLINK:
142                         fprintf(stdout, "DM_EVENT_POSTLINK");
143                         break;
144                 case DM_EVENT_SYMLINK:
145                         fprintf(stdout, "DM_EVENT_SYMLINK");
146                         break;
147                 case DM_EVENT_POSTSYMLINK:
148                         fprintf(stdout, "DM_EVENT_POSTSYMLINK");
149                         break;
150                 case DM_EVENT_READ:
151                         fprintf(stdout, "DM_EVENT_READ");
152                         break;
153                 case DM_EVENT_WRITE:
154                         fprintf(stdout, "DM_EVENT_WRITE");
155                         break;
156                 case DM_EVENT_TRUNCATE:
157                         fprintf(stdout, "DM_EVENT_TRUNCATE");
158                         break;
159                 case DM_EVENT_ATTRIBUTE:
160                         fprintf(stdout, "DM_EVENT_ATTRIBUTE");
161                         break;
162                 case DM_EVENT_DESTROY:
163                         fprintf(stdout, "DM_EVENT_DESTROY");
164                         break;
165                 case DM_EVENT_NOSPACE:
166                         fprintf(stdout, "DM_EVENT_NOSPACE");
167                         break;
168                 case DM_EVENT_USER:
169                         fprintf(stdout, "DM_EVENT_USER");
170                         break;
171                 case DM_EVENT_MAX:
172                         fprintf(stdout, "DM_EVENT_23");
173                         break;
174                 }
175                 fprintf(stdout, " (%d)\n", i);
176         }
177
178         dm_handle_free(hanp, hlen);
179         return(0);
180 }