1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * Copyright 2002 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 #pragma ident "%Z%%M% %I% %E% SMI" 28 29 #include <libintl.h> 30 #include <locale.h> 31 #include <stdio.h> 32 33 #include "libfru.h" 34 #include "prtfru.h" 35 36 37 static void 38 usage(const char *command) 39 { 40 (void) fprintf(stderr, 41 gettext("Usage: %s [ -d ] | [ -clx ] [ container ]\n"), 42 command); 43 } 44 45 int 46 main(int argc, char *argv[]) 47 { 48 char *command = argv[0], *searchpath = NULL; 49 50 int containers_only = 0, dtd = 0, list_only = 0, nodtd = 0, option, 51 status, xml = 0; 52 53 54 (void) setlocale(LC_ALL, ""); 55 (void) textdomain(TEXT_DOMAIN); 56 57 opterr = 0; /* "getopt" should not print to "stderr" */ 58 while ((option = getopt(argc, argv, "cdlx")) != EOF) { 59 switch (option) { 60 case 'c': 61 containers_only = 1; 62 nodtd = 1; 63 break; 64 case 'd': 65 dtd = 1; 66 break; 67 case 'l': 68 list_only = 1; 69 nodtd = 1; 70 break; 71 case 'x': 72 xml = 1; 73 nodtd = 1; 74 break; 75 default: 76 usage(command); 77 return (1); 78 } 79 } 80 81 argc -= optind; 82 argv += optind; 83 84 if (dtd) { 85 if (nodtd || (argc > 0)) { 86 usage(command); 87 (void) fprintf(stderr, 88 gettext("Specify \"-d\" alone\n")); 89 return (1); 90 } 91 92 return (output_dtd()); 93 } 94 95 switch (argc) { 96 case 0: 97 break; 98 case 1: 99 searchpath = argv[0]; 100 if (!searchpath[0]) { 101 usage(command); 102 (void) fprintf(stderr, 103 gettext("\"container\" should not be empty\n")); 104 return (1); 105 } 106 break; 107 default: 108 usage(command); 109 return (1); 110 } 111 112 113 /* 114 * Select the data source and print all the data 115 */ 116 if ((status = fru_open_data_source("picl")) != FRU_SUCCESS) { 117 (void) fprintf(stderr, 118 gettext("Error opening FRU ID data source: %s\n"), 119 fru_strerror(status)); 120 return (1); 121 } 122 123 return (prtfru(searchpath, containers_only, list_only, xml)); 124 } 125