xref: /illumos-gate/usr/src/cmd/volcheck/volcheck.c (revision d7c57852)
118c2aff7Sartem /*
218c2aff7Sartem  * CDDL HEADER START
318c2aff7Sartem  *
418c2aff7Sartem  * The contents of this file are subject to the terms of the
518c2aff7Sartem  * Common Development and Distribution License (the "License").
618c2aff7Sartem  * You may not use this file except in compliance with the License.
718c2aff7Sartem  *
818c2aff7Sartem  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
918c2aff7Sartem  * or http://www.opensolaris.org/os/licensing.
1018c2aff7Sartem  * See the License for the specific language governing permissions
1118c2aff7Sartem  * and limitations under the License.
1218c2aff7Sartem  *
1318c2aff7Sartem  * When distributing Covered Code, include this CDDL HEADER in each
1418c2aff7Sartem  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1518c2aff7Sartem  * If applicable, add the following below this CDDL HEADER, with the
1618c2aff7Sartem  * fields enclosed by brackets "[]" replaced with your own identifying
1718c2aff7Sartem  * information: Portions Copyright [yyyy] [name of copyright owner]
1818c2aff7Sartem  *
1918c2aff7Sartem  * CDDL HEADER END
2018c2aff7Sartem  */
2118c2aff7Sartem /*
22*d7c57852SGary Mills  * Copyright 2017 Gary Mills
2397ddcdceSArtem Kachitchkine  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
2418c2aff7Sartem  * Use is subject to license terms.
2518c2aff7Sartem  */
2618c2aff7Sartem 
2718c2aff7Sartem #include <stdio.h>
2818c2aff7Sartem #include <stdlib.h>
2918c2aff7Sartem #include <unistd.h>
3018c2aff7Sartem #include <fcntl.h>
3118c2aff7Sartem #include <string.h>
3218c2aff7Sartem #include <strings.h>
3318c2aff7Sartem #include <signal.h>
3418c2aff7Sartem #include <errno.h>
3518c2aff7Sartem #include <libintl.h>
3618c2aff7Sartem #include <sys/types.h>
3718c2aff7Sartem 
3818c2aff7Sartem #include "vold.h"
3918c2aff7Sartem #include "rmm_common.h"
4018c2aff7Sartem 
4118c2aff7Sartem char *progname = "volcheck";
4218c2aff7Sartem 
4318c2aff7Sartem static void
usage()4418c2aff7Sartem usage()
4518c2aff7Sartem {
4618c2aff7Sartem 	fprintf(stderr,
4718c2aff7Sartem 	    gettext("usage: %s [-t #secs -i #secs] [-v] [path | nickname]\n"),
4818c2aff7Sartem 	    progname);
4918c2aff7Sartem 	fprintf(stderr,
5018c2aff7Sartem 	    gettext("If path is not supplied all media is checked\n"));
5118c2aff7Sartem }
5218c2aff7Sartem 
5318c2aff7Sartem int
main(int argc,char ** argv)5418c2aff7Sartem main(int argc, char **argv)
5518c2aff7Sartem {
5618c2aff7Sartem 	const char	*opts = "itv";
5718c2aff7Sartem 	int		c;
5818c2aff7Sartem 	LibHalContext	*hal_ctx;
5918c2aff7Sartem 	DBusError	error;
6018c2aff7Sartem 	rmm_error_t	rmm_error;
6118c2aff7Sartem 	int		ret = 0;
6218c2aff7Sartem 
6318c2aff7Sartem 	vold_init(argc, argv);
6418c2aff7Sartem 
6518c2aff7Sartem 	while ((c = getopt(argc, argv, opts)) != EOF) {
6618c2aff7Sartem 		switch (c) {
6718c2aff7Sartem 		case 'i':
6818c2aff7Sartem 			break;
6918c2aff7Sartem 		case 't':
7018c2aff7Sartem 			break;
7118c2aff7Sartem 		case 'v':
7218c2aff7Sartem 			break;
7318c2aff7Sartem 		default:
7418c2aff7Sartem 			usage();
7518c2aff7Sartem 			return (1);
7618c2aff7Sartem 		}
7718c2aff7Sartem 	}
7818c2aff7Sartem 
7997ddcdceSArtem Kachitchkine 	if ((hal_ctx = rmm_hal_init(0, 0, 0, 0, &error, &rmm_error)) == NULL) {
8018c2aff7Sartem 		(void) fprintf(stderr,
8118c2aff7Sartem 		    gettext("HAL initialization failed: %s\n"),
8218c2aff7Sartem 		    rmm_strerror(&error, rmm_error));
8318c2aff7Sartem 		rmm_dbus_error_free(&error);
8418c2aff7Sartem 		return (1);
8518c2aff7Sartem 	}
8618c2aff7Sartem 
8718c2aff7Sartem 	if (optind == argc) {
8818c2aff7Sartem 		/* no name provided, check all */
8918c2aff7Sartem 		ret = rmm_rescan(hal_ctx, NULL, B_FALSE);
9018c2aff7Sartem 	} else {
9118c2aff7Sartem 		for (; optind < argc; optind++) {
9218c2aff7Sartem 			if (rmm_rescan(hal_ctx, argv[optind], B_FALSE) != 0) {
9318c2aff7Sartem 				ret = 1;
9418c2aff7Sartem 			}
9518c2aff7Sartem 		}
9618c2aff7Sartem 	}
9718c2aff7Sartem 
9818c2aff7Sartem 	rmm_hal_fini(hal_ctx);
9918c2aff7Sartem 
10018c2aff7Sartem 	return (ret);
10118c2aff7Sartem }
102