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*97ddcdceSArtem Kachitchkine * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
2318c2aff7Sartem * Use is subject to license terms.
2418c2aff7Sartem */
2518c2aff7Sartem
2618c2aff7Sartem #include <stdio.h>
2718c2aff7Sartem #include <stdlib.h>
2818c2aff7Sartem #include <unistd.h>
2918c2aff7Sartem #include <fcntl.h>
3018c2aff7Sartem #include <string.h>
3118c2aff7Sartem #include <strings.h>
3218c2aff7Sartem #include <signal.h>
3318c2aff7Sartem #include <errno.h>
3418c2aff7Sartem #include <libintl.h>
3518c2aff7Sartem #include <sys/types.h>
3618c2aff7Sartem
3718c2aff7Sartem #include "vold.h"
3818c2aff7Sartem #include "rmm_common.h"
3918c2aff7Sartem
4018c2aff7Sartem char *progname = "volcheck";
4118c2aff7Sartem
4218c2aff7Sartem static void
usage()4318c2aff7Sartem usage()
4418c2aff7Sartem {
4518c2aff7Sartem fprintf(stderr,
4618c2aff7Sartem gettext("usage: %s [-t #secs -i #secs] [-v] [path | nickname]\n"),
4718c2aff7Sartem progname);
4818c2aff7Sartem fprintf(stderr,
4918c2aff7Sartem gettext("If path is not supplied all media is checked\n"));
5018c2aff7Sartem }
5118c2aff7Sartem
5218c2aff7Sartem int
main(int argc,char ** argv)5318c2aff7Sartem main(int argc, char **argv)
5418c2aff7Sartem {
5518c2aff7Sartem const char *opts = "itv";
5618c2aff7Sartem int c;
5718c2aff7Sartem boolean_t opt_i = B_FALSE;
5818c2aff7Sartem boolean_t opt_t = B_FALSE;
5918c2aff7Sartem boolean_t opt_v = B_FALSE;
6018c2aff7Sartem LibHalContext *hal_ctx;
6118c2aff7Sartem DBusError error;
6218c2aff7Sartem rmm_error_t rmm_error;
6318c2aff7Sartem int ret = 0;
6418c2aff7Sartem
6518c2aff7Sartem vold_init(argc, argv);
6618c2aff7Sartem
6718c2aff7Sartem while ((c = getopt(argc, argv, opts)) != EOF) {
6818c2aff7Sartem switch (c) {
6918c2aff7Sartem case 'i':
7018c2aff7Sartem opt_i = B_TRUE;
7118c2aff7Sartem break;
7218c2aff7Sartem case 't':
7318c2aff7Sartem opt_t = B_TRUE;
7418c2aff7Sartem break;
7518c2aff7Sartem case 'v':
7618c2aff7Sartem opt_v = B_TRUE;
7718c2aff7Sartem break;
7818c2aff7Sartem default:
7918c2aff7Sartem usage();
8018c2aff7Sartem return (1);
8118c2aff7Sartem }
8218c2aff7Sartem }
8318c2aff7Sartem
84*97ddcdceSArtem Kachitchkine if ((hal_ctx = rmm_hal_init(0, 0, 0, 0, &error, &rmm_error)) == NULL) {
8518c2aff7Sartem (void) fprintf(stderr,
8618c2aff7Sartem gettext("HAL initialization failed: %s\n"),
8718c2aff7Sartem rmm_strerror(&error, rmm_error));
8818c2aff7Sartem rmm_dbus_error_free(&error);
8918c2aff7Sartem return (1);
9018c2aff7Sartem }
9118c2aff7Sartem
9218c2aff7Sartem if (optind == argc) {
9318c2aff7Sartem /* no name provided, check all */
9418c2aff7Sartem ret = rmm_rescan(hal_ctx, NULL, B_FALSE);
9518c2aff7Sartem } else {
9618c2aff7Sartem for (; optind < argc; optind++) {
9718c2aff7Sartem if (rmm_rescan(hal_ctx, argv[optind], B_FALSE) != 0) {
9818c2aff7Sartem ret = 1;
9918c2aff7Sartem }
10018c2aff7Sartem }
10118c2aff7Sartem }
10218c2aff7Sartem
10318c2aff7Sartem rmm_hal_fini(hal_ctx);
10418c2aff7Sartem
10518c2aff7Sartem return (ret);
10618c2aff7Sartem }
107