ktutil.c (90926) | ktutil.c (178825) |
---|---|
1/* | 1/* |
2 * Copyright (c) 1997 - 2002 Kungliga Tekniska H�gskolan | 2 * Copyright (c) 1997-2004 Kungliga Tekniska H�gskolan |
3 * (Royal Institute of Technology, Stockholm, Sweden). 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright --- 18 unchanged lines hidden (view full) --- 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34#include "ktutil_locl.h" 35#include <err.h> 36 | 3 * (Royal Institute of Technology, Stockholm, Sweden). 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright --- 18 unchanged lines hidden (view full) --- 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34#include "ktutil_locl.h" 35#include <err.h> 36 |
37RCSID("$Id: ktutil.c,v 1.36 2002/02/11 14:14:11 joda Exp $"); | 37RCSID("$Id: ktutil.c 15585 2005-07-07 21:52:04Z lha $"); |
38 39static int help_flag; 40static int version_flag; 41int verbose_flag; 42char *keytab_string; 43static char keytab_buf[256]; 44 | 38 39static int help_flag; 40static int version_flag; 41int verbose_flag; 42char *keytab_string; 43static char keytab_buf[256]; 44 |
45static int help(int argc, char **argv); 46 47static SL_cmd cmds[] = { 48 { "add", kt_add, "add", 49 "adds key to keytab" }, 50 { "change", kt_change, "change [principal...]", 51 "get new key for principals (all)" }, 52 { "copy", kt_copy, "copy src dst", 53 "copy one keytab to another" }, 54 { "get", kt_get, "get [principal...]", 55 "create key in database and add to keytab" }, 56 { "list", kt_list, "list", 57 "shows contents of a keytab" }, 58 { "purge", kt_purge, "purge", 59 "remove old and superceeded entries" }, 60 { "remove", kt_remove, "remove", 61 "remove key from keytab" }, 62 { "rename", kt_rename, "rename from to", 63 "rename entry" }, 64 { "srvconvert", srvconv, "srvconvert [flags]", 65 "convert v4 srvtab to keytab" }, 66 { "srv2keytab" }, 67 { "srvcreate", srvcreate, "srvcreate [flags]", 68 "convert keytab to v4 srvtab" }, 69 { "key2srvtab" }, 70 { "help", help, "help", "" }, 71 { NULL, NULL, NULL, NULL } 72}; 73 | |
74static struct getargs args[] = { 75 { 76 "version", 77 0, 78 arg_flag, 79 &version_flag, 80 NULL, 81 NULL --- 47 unchanged lines hidden (view full) --- 129 return NULL; 130 } 131 if (verbose_flag) 132 fprintf (stderr, "Using keytab %s\n", keytab_string); 133 134 return keytab; 135} 136 | 45static struct getargs args[] = { 46 { 47 "version", 48 0, 49 arg_flag, 50 &version_flag, 51 NULL, 52 NULL --- 47 unchanged lines hidden (view full) --- 100 return NULL; 101 } 102 if (verbose_flag) 103 fprintf (stderr, "Using keytab %s\n", keytab_string); 104 105 return keytab; 106} 107 |
137static int 138help(int argc, char **argv) | 108int 109help(void *opt, int argc, char **argv) |
139{ | 110{ |
140 sl_help(cmds, argc, argv); | 111 if(argc == 0) { 112 sl_help(commands, 1, argv - 1 /* XXX */); 113 } else { 114 SL_cmd *c = sl_match (commands, argv[0], 0); 115 if(c == NULL) { 116 fprintf (stderr, "No such command: %s. " 117 "Try \"help\" for a list of commands\n", 118 argv[0]); 119 } else { 120 if(c->func) { 121 char *fake[] = { NULL, "--help", NULL }; 122 fake[0] = argv[0]; 123 (*c->func)(2, fake); 124 fprintf(stderr, "\n"); 125 } 126 if(c->help && *c->help) 127 fprintf (stderr, "%s\n", c->help); 128 if((++c)->name && c->func == NULL) { 129 int f = 0; 130 fprintf (stderr, "Synonyms:"); 131 while (c->name && c->func == NULL) { 132 fprintf (stderr, "%s%s", f ? ", " : " ", (c++)->name); 133 f = 1; 134 } 135 fprintf (stderr, "\n"); 136 } 137 } 138 } |
141 return 0; 142} 143 144static void 145usage(int status) 146{ 147 arg_printusage(args, num_args, NULL, "command"); 148 exit(status); 149} 150 151int 152main(int argc, char **argv) 153{ | 139 return 0; 140} 141 142static void 143usage(int status) 144{ 145 arg_printusage(args, num_args, NULL, "command"); 146 exit(status); 147} 148 149int 150main(int argc, char **argv) 151{ |
154 int optind = 0; | 152 int optidx = 0; |
155 krb5_error_code ret; 156 setprogname(argv[0]); 157 ret = krb5_init_context(&context); 158 if (ret) 159 errx (1, "krb5_init_context failed: %d", ret); | 153 krb5_error_code ret; 154 setprogname(argv[0]); 155 ret = krb5_init_context(&context); 156 if (ret) 157 errx (1, "krb5_init_context failed: %d", ret); |
160 if(getarg(args, num_args, argc, argv, &optind)) | 158 if(getarg(args, num_args, argc, argv, &optidx)) |
161 usage(1); 162 if(help_flag) 163 usage(0); 164 if(version_flag) { 165 print_version(NULL); 166 exit(0); 167 } | 159 usage(1); 160 if(help_flag) 161 usage(0); 162 if(version_flag) { 163 print_version(NULL); 164 exit(0); 165 } |
168 argc -= optind; 169 argv += optind; | 166 argc -= optidx; 167 argv += optidx; |
170 if(argc == 0) 171 usage(1); | 168 if(argc == 0) 169 usage(1); |
172 ret = sl_command(cmds, argc, argv); | 170 ret = sl_command(commands, argc, argv); |
173 if(ret == -1) 174 krb5_warnx (context, "unrecognized command: %s", argv[0]); 175 return ret; 176} | 171 if(ret == -1) 172 krb5_warnx (context, "unrecognized command: %s", argv[0]); 173 return ret; 174} |