ktutil_ct.c revision 2881:ea6360e7e1c5
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 44static char const * const ssu00001[] = { 45"clear_list", 46 "clear", 47 (char const *)0 48}; 49extern void ktutil_clear_list __SS_PROTO; 50static char const * const ssu00002[] = { 51"read_kt", 52 "rkt", 53 (char const *)0 54}; 55extern void ktutil_read_v5 __SS_PROTO; 56static char const * const ssu00003[] = { 57"read_st", 58 "rst", 59 (char const *)0 60}; 61extern void ktutil_read_v4 __SS_PROTO; 62static char const * const ssu00004[] = { 63"write_kt", 64 "wkt", 65 (char const *)0 66}; 67extern void ktutil_write_v5 __SS_PROTO; 68static char const * const ssu00005[] = { 69"write_st", 70 "wst", 71 (char const *)0 72}; 73extern void ktutil_write_v4 __SS_PROTO; 74static char const * const ssu00006[] = { 75"add_entry", 76 "addent", 77 (char const *)0 78}; 79extern void ktutil_add_entry __SS_PROTO; 80static char const * const ssu00007[] = { 81"delete_entry", 82 "delent", 83 (char const *)0 84}; 85extern void ktutil_delete_entry __SS_PROTO; 86static char const * const ssu00008[] = { 87"list", 88 "l", 89 (char const *)0 90}; 91extern void ktutil_list __SS_PROTO; 92static char const * const ssu00009[] = { 93"list_requests", 94 "lr", 95 "?", 96 (char const *)0 97}; 98extern void ss_list_requests __SS_PROTO; 99static char const * const ssu00010[] = { 100"quit", 101 "exit", 102 "q", 103 (char const *)0 104}; 105extern void ss_quit __SS_PROTO; 106static 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 150ss_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 */ 167krb5_error_code 168ktutil_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