1 /*
2 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
3 * Use is subject to license terms.
4 */
5
6 #pragma ident "%Z%%M% %I% %E% SMI"
7
8 /*
9 * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
10 *
11 * Openvision retains the copyright to derivative works of
12 * this source code. Do *NOT* create a derivative of this
13 * source code before consulting with your legal department.
14 * Do *NOT* integrate *ANY* of this source code into another
15 * product before consulting with your legal department.
16 *
17 * For further information, read the top-level Openvision
18 * copyright which is contained in the top-level MIT Kerberos
19 * copyright.
20 *
21 * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
22 *
23 */
24
25
26 /* ktutil_ct.c - automatically generated from ktutil_ct.ct */
27 /* Above no longer appears to be true */
28
29 #include <libintl.h>
30 #include <ss/ss.h>
31 #include "k5-int.h"
32
33 /*
34 * I18n hack. We sill define gettext(s) to be s here. That way the info_strings
35 * will be extracted to the .po file.
36 */
37
38 #define gettext(s) s
39
40 #ifndef __STDC__
41 #define const
42 #endif
43
44 static char const * const ssu00001[] = {
45 "clear_list",
46 "clear",
47 (char const *)0
48 };
49 extern void ktutil_clear_list __SS_PROTO;
50 static char const * const ssu00002[] = {
51 "read_kt",
52 "rkt",
53 (char const *)0
54 };
55 extern void ktutil_read_v5 __SS_PROTO;
56 static char const * const ssu00003[] = {
57 "read_st",
58 "rst",
59 (char const *)0
60 };
61 extern void ktutil_read_v4 __SS_PROTO;
62 static char const * const ssu00004[] = {
63 "write_kt",
64 "wkt",
65 (char const *)0
66 };
67 extern void ktutil_write_v5 __SS_PROTO;
68 static char const * const ssu00005[] = {
69 "write_st",
70 "wst",
71 (char const *)0
72 };
73 extern void ktutil_write_v4 __SS_PROTO;
74 static char const * const ssu00006[] = {
75 "add_entry",
76 "addent",
77 (char const *)0
78 };
79 extern void ktutil_add_entry __SS_PROTO;
80 static char const * const ssu00007[] = {
81 "delete_entry",
82 "delent",
83 (char const *)0
84 };
85 extern void ktutil_delete_entry __SS_PROTO;
86 static char const * const ssu00008[] = {
87 "list",
88 "l",
89 (char const *)0
90 };
91 extern void ktutil_list __SS_PROTO;
92 static char const * const ssu00009[] = {
93 "list_requests",
94 "lr",
95 "?",
96 (char const *)0
97 };
98 extern void ss_list_requests __SS_PROTO;
99 static char const * const ssu00010[] = {
100 "quit",
101 "exit",
102 "q",
103 (char const *)0
104 };
105 extern void ss_quit __SS_PROTO;
106 static ss_request_entry ssu00011[] = {
107 { ssu00001,
108 ktutil_clear_list,
109 gettext("Clear the current keylist."),
110 0 },
111 { ssu00002,
112 ktutil_read_v5,
113 gettext("Read a krb5 keytab into the current keylist."),
114 0 },
115 { ssu00003,
116 ktutil_read_v4,
117 gettext("Read a krb4 srvtab into the current keylist."),
118 0 },
119 { ssu00004,
120 ktutil_write_v5,
121 gettext("Write the current keylist to a krb5 keytab."),
122 0 },
123 { ssu00005,
124 ktutil_write_v4,
125 gettext("Write the current keylist to a krb4 srvtab."),
126 0 },
127 { ssu00006,
128 ktutil_add_entry,
129 gettext("Add an entry to the current keylist."),
130 0 },
131 { ssu00007,
132 ktutil_delete_entry,
133 gettext("Delete an entry from the current keylist."),
134 0 },
135 { ssu00008,
136 ktutil_list,
137 gettext("List the current keylist."),
138 0 },
139 { ssu00009,
140 ss_list_requests,
141 gettext("List available requests."),
142 0 },
143 { ssu00010,
144 ss_quit,
145 gettext("Exit program."),
146 0 },
147 { 0, 0, 0, 0 }
148 };
149
150 ss_request_table ktutil_cmds = { 2, ssu00011 };
151
152 #undef gettext
153
154 /*
155 * This routine is responsible for localizing all the displayable
156 * messages in the table. This was necessary since ktutil will be
157 * invoking library calls that need to be able to display the messages
158 * in the correct text domain (which only ktutil knows).
159 *
160 * This function assumes that the US version of the messages are
161 * pre-loaded in the table and will be used should gettext not be
162 * successful. This routine does NOT free the replaced strings as
163 * its expected they may be in the heap (as above) and not malloc'ed.
164 * If the caller malloc'ed the strings, they should retain pointers
165 * and free them if not matching the contents of the table.
166 */
167 krb5_error_code
ktutil_initialize_cmds_table(ss_request_table * ktutil_cmds)168 ktutil_initialize_cmds_table(ss_request_table *ktutil_cmds)
169 {
170 char *localized_text;
171 ss_request_entry *ss_cmd;
172 krb5_error_code retval = 0;
173
174 if (ktutil_cmds) {
175 for (ss_cmd = ktutil_cmds->requests;
176 ss_cmd->info_string && *(ss_cmd->info_string) != '\0';
177 ++ss_cmd) {
178 localized_text = gettext(ss_cmd->info_string);
179
180 if ((strcmp(localized_text, ss_cmd->info_string))
181 != 0) {
182 ss_cmd->info_string = strdup(localized_text);
183 }
184 }
185 }
186 else
187 retval = EINVAL;
188
189 return (retval);
190 }
191