This source file includes following definitions.
- main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #include "pmix_config.h"
27
28 #include <stdio.h>
29 #include <string.h>
30 #include <ctype.h>
31 #ifdef HAVE_UNISTD_H
32 #include <unistd.h>
33 #endif
34 #ifdef HAVE_NETDB_H
35 #include <netdb.h>
36 #endif
37 #ifdef HAVE_SYS_PARAM_H
38 #include <sys/param.h>
39 #endif
40 #include <errno.h>
41 #include <signal.h>
42
43 #include "src/mca/pinstalldirs/base/base.h"
44 #include "src/class/pmix_object.h"
45 #include "src/class/pmix_pointer_array.h"
46 #include "src/util/argv.h"
47 #include "src/util/cmd_line.h"
48 #include "src/util/error.h"
49 #include "src/util/error.h"
50 #include "src/util/keyval_parse.h"
51 #include "src/util/output.h"
52 #include "src/util/show_help.h"
53 #include "src/mca/base/base.h"
54 #include "src/runtime/pmix_rte.h"
55
56 #include "pinfo.h"
57 #include "support.h"
58
59
60
61
62
63 pmix_cmd_line_t *pmix_info_cmd_line = NULL;
64
65 const char *pmix_info_type_base = "base";
66
67 int main(int argc, char *argv[])
68 {
69 int ret = 0;
70 bool acted = false;
71 bool want_all = false;
72 int i;
73 pmix_pointer_array_t mca_types;
74 pmix_pointer_array_t component_map;
75 pmix_info_component_map_t *map;
76
77
78
79 signal(SIGPIPE, SIG_IGN);
80
81
82 if (!pmix_output_init()) {
83 return PMIX_ERROR;
84 }
85
86
87 if (PMIX_SUCCESS != (ret = pmix_mca_base_framework_open(&pmix_pinstalldirs_base_framework, 0))) {
88 fprintf(stderr, "pmix_pinstalldirs_base_open() failed -- process will likely abort (%s:%d, returned %d instead of PMIX_SUCCESS)\n",
89 __FILE__, __LINE__, ret);
90 return ret;
91 }
92
93
94 pmix_show_help_init();
95
96
97 if (PMIX_SUCCESS != (ret = pmix_util_keyval_parse_init())) {
98 fprintf(stderr, "pmix_util_keyval_parse_init failed with %d\n", ret);
99 return PMIX_ERROR;
100 }
101
102
103 if (PMIX_SUCCESS != (ret = pmix_mca_base_var_init())) {
104 fprintf(stderr, "pmix_mca_base_var_init failed with %d\n", ret);
105 return PMIX_ERROR;
106 }
107
108
109 if (PMIX_SUCCESS != (ret = pmix_register_params())) {
110 fprintf(stderr, "pmix_register_params failed with %d\n", ret);
111 return PMIX_ERROR;
112 }
113
114 pmix_info_cmd_line = PMIX_NEW(pmix_cmd_line_t);
115 if (NULL == pmix_info_cmd_line) {
116 ret = errno;
117 pmix_show_help("help-pmix-info.txt", "lib-call-fail", true,
118 "pmix_cmd_line_create", __FILE__, __LINE__, NULL);
119 exit(ret);
120 }
121
122 if (PMIX_SUCCESS != (ret = pmix_info_init(argc, argv, pmix_info_cmd_line))) {
123 return ret;
124 }
125
126
127 PMIX_CONSTRUCT(&mca_types, pmix_pointer_array_t);
128 pmix_pointer_array_init(&mca_types, 256, INT_MAX, 128);
129 pmix_info_register_types(&mca_types);
130
131
132 PMIX_CONSTRUCT(&component_map, pmix_pointer_array_t);
133 pmix_pointer_array_init(&component_map, 64, INT_MAX, 32);
134
135
136 if (PMIX_SUCCESS != (ret = pmix_info_register_framework_params(&component_map))) {
137 if (PMIX_ERR_BAD_PARAM == ret) {
138
139 pmix_info_do_params(true, pmix_cmd_line_is_taken(pmix_info_cmd_line, "internal"),
140 &mca_types, &component_map, NULL);
141 }
142 exit(1);
143 }
144
145
146
147 want_all = pmix_cmd_line_is_taken(pmix_info_cmd_line, "all");
148 if (want_all) {
149 pmix_info_out("Package", "package", PMIX_PACKAGE_STRING);
150 pmix_info_show_pmix_version(pmix_info_ver_full);
151 }
152 if (want_all || pmix_cmd_line_is_taken(pmix_info_cmd_line, "path")) {
153 pmix_info_do_path(want_all, pmix_info_cmd_line);
154 acted = true;
155 }
156 if (want_all || pmix_cmd_line_is_taken(pmix_info_cmd_line, "arch")) {
157 pmix_info_do_arch();
158 acted = true;
159 }
160 if (want_all || pmix_cmd_line_is_taken(pmix_info_cmd_line, "hostname")) {
161 pmix_info_do_hostname();
162 acted = true;
163 }
164 if (want_all || pmix_cmd_line_is_taken(pmix_info_cmd_line, "config")) {
165 pmix_info_do_config(true);
166 acted = true;
167 }
168 if (want_all || pmix_cmd_line_is_taken(pmix_info_cmd_line, "param") ||
169 pmix_cmd_line_is_taken(pmix_info_cmd_line, "params")) {
170 pmix_info_do_params(want_all, pmix_cmd_line_is_taken(pmix_info_cmd_line, "internal"),
171 &mca_types, &component_map, pmix_info_cmd_line);
172 acted = true;
173 }
174 if (pmix_cmd_line_is_taken(pmix_info_cmd_line, "type")) {
175 pmix_info_do_type(pmix_info_cmd_line);
176 acted = true;
177 }
178
179
180
181 if (!acted) {
182 pmix_info_out("Package", "package", PMIX_PACKAGE_STRING);
183 pmix_info_show_pmix_version(pmix_info_ver_full);
184 pmix_info_show_path(pmix_info_path_prefix, pmix_pinstall_dirs.prefix);
185 pmix_info_do_arch();
186 pmix_info_do_hostname();
187 pmix_info_do_config(false);
188 pmix_info_show_component_version(&mca_types, &component_map, pmix_info_type_all,
189 pmix_info_component_all, pmix_info_ver_full,
190 pmix_info_ver_all);
191 }
192
193
194
195 pmix_info_close_components();
196 PMIX_RELEASE(pmix_info_cmd_line);
197 PMIX_DESTRUCT(&mca_types);
198 for (i=0; i < component_map.size; i++) {
199 if (NULL != (map = (pmix_info_component_map_t*)pmix_pointer_array_get_item(&component_map, i))) {
200 PMIX_RELEASE(map);
201 }
202 }
203 PMIX_DESTRUCT(&component_map);
204
205 pmix_info_finalize();
206
207 return 0;
208 }