xref: /titanic_53/usr/src/cmd/volcheck/volcheck.c (revision 18c2aff776a775d34a4c9893a4c72e0434d68e36)
1*18c2aff7Sartem /*
2*18c2aff7Sartem  * CDDL HEADER START
3*18c2aff7Sartem  *
4*18c2aff7Sartem  * The contents of this file are subject to the terms of the
5*18c2aff7Sartem  * Common Development and Distribution License (the "License").
6*18c2aff7Sartem  * You may not use this file except in compliance with the License.
7*18c2aff7Sartem  *
8*18c2aff7Sartem  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*18c2aff7Sartem  * or http://www.opensolaris.org/os/licensing.
10*18c2aff7Sartem  * See the License for the specific language governing permissions
11*18c2aff7Sartem  * and limitations under the License.
12*18c2aff7Sartem  *
13*18c2aff7Sartem  * When distributing Covered Code, include this CDDL HEADER in each
14*18c2aff7Sartem  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*18c2aff7Sartem  * If applicable, add the following below this CDDL HEADER, with the
16*18c2aff7Sartem  * fields enclosed by brackets "[]" replaced with your own identifying
17*18c2aff7Sartem  * information: Portions Copyright [yyyy] [name of copyright owner]
18*18c2aff7Sartem  *
19*18c2aff7Sartem  * CDDL HEADER END
20*18c2aff7Sartem  */
21*18c2aff7Sartem /*
22*18c2aff7Sartem  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
23*18c2aff7Sartem  * Use is subject to license terms.
24*18c2aff7Sartem  */
25*18c2aff7Sartem 
26*18c2aff7Sartem #pragma ident	"%Z%%M%	%I%	%E% SMI"
27*18c2aff7Sartem 
28*18c2aff7Sartem #include <stdio.h>
29*18c2aff7Sartem #include <stdlib.h>
30*18c2aff7Sartem #include <unistd.h>
31*18c2aff7Sartem #include <fcntl.h>
32*18c2aff7Sartem #include <string.h>
33*18c2aff7Sartem #include <strings.h>
34*18c2aff7Sartem #include <signal.h>
35*18c2aff7Sartem #include <errno.h>
36*18c2aff7Sartem #include <libintl.h>
37*18c2aff7Sartem #include <sys/types.h>
38*18c2aff7Sartem 
39*18c2aff7Sartem #include "vold.h"
40*18c2aff7Sartem #include "rmm_common.h"
41*18c2aff7Sartem 
42*18c2aff7Sartem char *progname = "volcheck";
43*18c2aff7Sartem 
44*18c2aff7Sartem static void
45*18c2aff7Sartem usage()
46*18c2aff7Sartem {
47*18c2aff7Sartem 	fprintf(stderr,
48*18c2aff7Sartem 	    gettext("usage: %s [-t #secs -i #secs] [-v] [path | nickname]\n"),
49*18c2aff7Sartem 	    progname);
50*18c2aff7Sartem 	fprintf(stderr,
51*18c2aff7Sartem 	    gettext("If path is not supplied all media is checked\n"));
52*18c2aff7Sartem }
53*18c2aff7Sartem 
54*18c2aff7Sartem int
55*18c2aff7Sartem main(int argc, char **argv)
56*18c2aff7Sartem {
57*18c2aff7Sartem 	const char	*opts = "itv";
58*18c2aff7Sartem 	int		c;
59*18c2aff7Sartem 	boolean_t	opt_i = B_FALSE;
60*18c2aff7Sartem 	boolean_t	opt_t = B_FALSE;
61*18c2aff7Sartem 	boolean_t	opt_v = B_FALSE;
62*18c2aff7Sartem 	LibHalContext	*hal_ctx;
63*18c2aff7Sartem 	DBusError	error;
64*18c2aff7Sartem 	rmm_error_t	rmm_error;
65*18c2aff7Sartem 	int		ret = 0;
66*18c2aff7Sartem 
67*18c2aff7Sartem 	vold_init(argc, argv);
68*18c2aff7Sartem 
69*18c2aff7Sartem 	while ((c = getopt(argc, argv, opts)) != EOF) {
70*18c2aff7Sartem 		switch (c) {
71*18c2aff7Sartem 		case 'i':
72*18c2aff7Sartem 			opt_i = B_TRUE;
73*18c2aff7Sartem 			break;
74*18c2aff7Sartem 		case 't':
75*18c2aff7Sartem 			opt_t = B_TRUE;
76*18c2aff7Sartem 			break;
77*18c2aff7Sartem 		case 'v':
78*18c2aff7Sartem 			opt_v = B_TRUE;
79*18c2aff7Sartem 			break;
80*18c2aff7Sartem 		default:
81*18c2aff7Sartem 			usage();
82*18c2aff7Sartem 			return (1);
83*18c2aff7Sartem 		}
84*18c2aff7Sartem 	}
85*18c2aff7Sartem 
86*18c2aff7Sartem 	if ((hal_ctx = rmm_hal_init(0, 0, 0, &error, &rmm_error)) == NULL) {
87*18c2aff7Sartem 		(void) fprintf(stderr,
88*18c2aff7Sartem 		    gettext("HAL initialization failed: %s\n"),
89*18c2aff7Sartem 		    rmm_strerror(&error, rmm_error));
90*18c2aff7Sartem 		rmm_dbus_error_free(&error);
91*18c2aff7Sartem 		return (1);
92*18c2aff7Sartem 	}
93*18c2aff7Sartem 
94*18c2aff7Sartem 	if (optind == argc) {
95*18c2aff7Sartem 		/* no name provided, check all */
96*18c2aff7Sartem 		ret = rmm_rescan(hal_ctx, NULL, B_FALSE);
97*18c2aff7Sartem 	} else {
98*18c2aff7Sartem 		for (; optind < argc; optind++) {
99*18c2aff7Sartem 			if (rmm_rescan(hal_ctx, argv[optind], B_FALSE) != 0) {
100*18c2aff7Sartem 				ret = 1;
101*18c2aff7Sartem 			}
102*18c2aff7Sartem 		}
103*18c2aff7Sartem 	}
104*18c2aff7Sartem 
105*18c2aff7Sartem 	rmm_hal_fini(hal_ctx);
106*18c2aff7Sartem 
107*18c2aff7Sartem 	return (ret);
108*18c2aff7Sartem }
109