ktutil_ct.c revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* Copyright 2003 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
*
* Openvision retains the copyright to derivative works of
* this source code. Do *NOT* create a derivative of this
* source code before consulting with your legal department.
* Do *NOT* integrate *ANY* of this source code into another
* product before consulting with your legal department.
*
* For further information, read the top-level Openvision
* copyright which is contained in the top-level MIT Kerberos
* copyright.
*
* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
*
*/
/* ktutil_ct.c - automatically generated from ktutil_ct.ct */
/* Above no longer appears to be true */
#include <libintl.h>
#include <ss/ss.h>
#include "k5-int.h"
/*
* I18n hack. We sill define gettext(s) to be s here. That way the info_strings
* will be extracted to the .po file.
*/
#define gettext(s) s
#ifndef __STDC__
#define const
#endif
static char const *const ssu00001[] = {
"clear_list",
"clear",
(char const *) 0
};
extern void ktutil_clear_list __SS_PROTO;
static char const *const ssu00002[] = {
"read_kt",
"rkt",
(char const *) 0
};
extern void ktutil_read_v5 __SS_PROTO;
static char const *const ssu00003[] = {
"read_st",
"rst",
(char const *) 0
};
extern void ktutil_read_v4 __SS_PROTO;
static char const *const ssu00004[] = {
"write_kt",
"wkt",
(char const *) 0
};
extern void ktutil_write_v5 __SS_PROTO;
static char const *const ssu00005[] = {
"write_st",
"wst",
(char const *) 0
};
extern void ktutil_write_v4 __SS_PROTO;
static char const *const ssu00006[] = {
"add_entry",
"addent",
(char const *) 0
};
extern void ktutil_add_entry __SS_PROTO;
static char const *const ssu00007[] = {
"delete_entry",
"delent",
(char const *) 0
};
extern void ktutil_delete_entry __SS_PROTO;
static char const *const ssu00008[] = {
"list",
"l",
(char const *) 0
};
extern void ktutil_list __SS_PROTO;
static char const *const ssu00009[] = {
"list_requests",
"lr",
"?",
(char const *) 0
};
extern void ss_list_requests __SS_PROTO;
static char const *const ssu00010[] = {
"quit",
"exit",
"q",
(char const *) 0
};
extern void ss_quit __SS_PROTO;
static ss_request_entry ssu00011[] = {
{ssu00001,
ktutil_clear_list,
gettext("Clear the current keylist."),
0},
{ssu00002,
ktutil_read_v5,
gettext("Read a krb5 keytab into the current keylist."),
0},
{ssu00003,
ktutil_read_v4,
gettext("Read a krb4 srvtab into the current keylist."),
0},
{ssu00004,
ktutil_write_v5,
gettext("Write the current keylist to a krb5 keytab."),
0},
{ssu00005,
ktutil_write_v4,
gettext("Write the current keylist to a krb4 srvtab."),
0},
{ssu00006,
ktutil_add_entry,
gettext("Add an entry to the current keylist."),
0},
{ssu00007,
ktutil_delete_entry,
gettext("Delete an entry from the current keylist."),
0},
{ssu00008,
ktutil_list,
gettext("List the current keylist."),
0},
{ssu00009,
ss_list_requests,
gettext("List available requests."),
0},
{ssu00010,
ss_quit,
gettext("Exit program."),
0},
{0, 0, 0, 0}
};
ss_request_table ktutil_cmds = {2, ssu00011};
#undef gettext
/*
* This routine is responsible for localizing all the displayable
* messages in the table. This was necessary since ktutil will be
* invoking library calls that need to be able to display the messages
* in the correct text domain (which only ktutil knows).
*
* This function assumes that the US version of the messages are
* pre-loaded in the table and will be used should gettext not be
* successful. This routine does NOT free the replaced strings as
* its expected they may be in the heap (as above) and not malloc'ed.
* If the caller malloc'ed the strings, they should retain pointers
* and free them if not matching the contents of the table.
*/
krb5_error_code
ktutil_initialize_cmds_table(ss_request_table *ktutil_cmds)
{
char *localized_text;
ss_request_entry *ss_cmd;
krb5_error_code retval = 0;
if (ktutil_cmds) {
for (ss_cmd = ktutil_cmds->requests;
ss_cmd->info_string && *(ss_cmd->info_string) != '\0';
++ss_cmd) {
localized_text = gettext(ss_cmd->info_string);
if ((strcmp(localized_text, ss_cmd->info_string))
!= 0) {
ss_cmd->info_string = strdup(localized_text);
}
}
}
else
retval = EINVAL;
return (retval);
}