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 #include <libintl.h>
28 #include <locale.h>
29 #include <stdio.h>
30
31 #include "libfru.h"
32 #include "prtfru.h"
33
34
35 static void
usage(const char * command)36 usage(const char *command)
37 {
38 (void) fprintf(stderr,
39 gettext("Usage: %s [ -d ] | [ -clx ] [ container ]\n"),
40 command);
41 }
42
43 int
main(int argc,char * argv[])44 main(int argc, char *argv[])
45 {
46 char *command = argv[0], *searchpath = NULL;
47
48 int containers_only = 0, dtd = 0, list_only = 0, nodtd = 0, option,
49 status, xml = 0;
50
51
52 (void) setlocale(LC_ALL, "");
53 (void) textdomain(TEXT_DOMAIN);
54
55 opterr = 0; /* "getopt" should not print to "stderr" */
56 while ((option = getopt(argc, argv, "cdlx")) != EOF) {
57 switch (option) {
58 case 'c':
59 containers_only = 1;
60 nodtd = 1;
61 break;
62 case 'd':
63 dtd = 1;
64 break;
65 case 'l':
66 list_only = 1;
67 nodtd = 1;
68 break;
69 case 'x':
70 xml = 1;
71 nodtd = 1;
72 break;
73 default:
74 usage(command);
75 return (1);
76 }
77 }
78
79 argc -= optind;
80 argv += optind;
81
82 if (dtd) {
83 if (nodtd || (argc > 0)) {
84 usage(command);
85 (void) fprintf(stderr,
86 gettext("Specify \"-d\" alone\n"));
87 return (1);
88 }
89
90 return (output_dtd());
91 }
92
93 switch (argc) {
94 case 0:
95 break;
96 case 1:
97 searchpath = argv[0];
98 if (!searchpath[0]) {
99 usage(command);
100 (void) fprintf(stderr,
101 gettext("\"container\" should not be empty\n"));
102 return (1);
103 }
104 break;
105 default:
106 usage(command);
107 return (1);
108 }
109
110
111 /*
112 * Select the data source and print all the data
113 */
114 if ((status = fru_open_data_source("picl")) != FRU_SUCCESS) {
115 (void) fprintf(stderr,
116 gettext("Error opening FRU ID data source: %s\n"),
117 fru_strerror(status));
118 return (1);
119 }
120
121 return (prtfru(searchpath, containers_only, list_only, xml));
122 }
123