2 * Copyright (c) 1995 - 2001 Kungliga Tekniska Högskolan
3 * (Royal Institute of Technology, Stockholm, Sweden).
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
17 * 3. Neither the name of the Institute nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
21 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
38 static const unsigned all
= (0
66 #ifdef HAVE_XDEBREADDIR
77 static const unsigned almost_all_mask
= (0
84 #ifdef HAVE_XDEBREADDIR
89 static struct units nnpfsdebug_units
[] = {
98 #ifdef HAVE_XDEBREADDIR
99 {"readdir", XDEBREADDIR
},
110 #ifdef HAVE_XDEBVFOPS
111 {"vfsops", XDEBVFOPS
},
113 #ifdef HAVE_XDEBVNOPS
114 {"vnops", XDEBVNOPS
},
133 nnpfsdebug_cmd (int argc
, char **argv
)
138 nnpfsdebug_units
[0].mult
= all
;
139 nnpfsdebug_units
[1].mult
= all
& ~almost_all_mask
;
141 if ((argc
> 1 && strncmp(argv
[1], "-h", 2) == 0) || argc
> 2) {
142 fprintf (stderr
, "usage: nnpfsdebug [-h] [");
143 print_flags_table (nnpfsdebug_units
, stderr
);
144 fprintf (stderr
, "]\n");
148 ret
= nnpfs_debug (-1, &flags
);
150 fprintf (stderr
, "nnpfs_debug: %s\n", strerror(ret
));
157 unparse_flags (flags
, nnpfsdebug_units
, buf
, sizeof(buf
));
158 printf("nnpfsdebug is: %s\n", buf
);
159 } else if (argc
== 2) {
164 ret
= parse_flags (textflags
, nnpfsdebug_units
, flags
);
167 fprintf (stderr
, "nnpfsdebug: unknown/bad flags `%s'\n",
173 ret
= nnpfs_debug(flags
, NULL
);
175 fprintf (stderr
, "nnpfs_debug: %s\n", strerror(ret
));
181 nnpfsdebug_print_cmd (int argc
, char **argv
)
187 nnpfsdebug_units
[0].mult
= all
;
188 nnpfsdebug_units
[1].mult
= all
& ~almost_all_mask
;
190 if (argc
!= 2 && argc
!= 3) {
191 fprintf (stderr
, "usage: nnpfsprint <");
192 print_flags_table (nnpfsdebug_units
, stderr
);
193 fprintf (stderr
, "> [filename]\n");
199 ret
= parse_flags (textflags
, nnpfsdebug_units
, flags
);
202 fprintf (stderr
, "nnpfsprint: unknown/bad flags `%s'\n",
208 ret
= nnpfs_debug_print(flags
, argv
[2]);
210 fprintf (stderr
, "nnpfsprint: %s\n", strerror(ret
));