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