summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2001-06-27 06:26:37 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2001-06-27 06:26:37 +0000
commitbf4fece23cda82840fdb21c594bb09eac65b89bf (patch)
treeb253382d9722dacc3a9857820e73a5bffe83f901
parentc962ada4d29b57ee4abf5ff80d7b72671ae5692d (diff)
convert to getopt(3)
-rw-r--r--usr.bin/ssh/ssh-add.c89
1 files changed, 40 insertions, 49 deletions
diff --git a/usr.bin/ssh/ssh-add.c b/usr.bin/ssh/ssh-add.c
index 0cf7031d95b..961fa5746ba 100644
--- a/usr.bin/ssh/ssh-add.c
+++ b/usr.bin/ssh/ssh-add.c
@@ -35,7 +35,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: ssh-add.c,v 1.42 2001/06/26 04:59:59 markus Exp $");
+RCSID("$OpenBSD: ssh-add.c,v 1.43 2001/06/27 06:26:36 markus Exp $");
#include <openssl/evp.h>
@@ -195,20 +195,17 @@ usage(void)
printf(" -D : delete all identities\n");
printf(" -s reader_num : add key in the smartcard in reader_num.\n");
printf(" -e reader_num : remove key in the smartcard in reader_num.\n");
- exit (1);
}
int
main(int argc, char **argv)
{
+ extern char *optarg;
+ extern int optind;
AuthenticationConnection *ac = NULL;
struct passwd *pw;
char buf[1024];
- int no_files = 1;
- int i;
- int deleting = 0;
- int sc_mode = 0;
- int sc_reader_num = 0;
+ int i, ch, deleting = 0, sc_reader_num = -1;
SSLeay_add_all_algorithms();
@@ -218,55 +215,40 @@ main(int argc, char **argv)
fprintf(stderr, "Could not open a connection to your authentication agent.\n");
exit(1);
}
- for (i = 1; i < argc; i++) {
- if ((strcmp(argv[i], "-l") == 0) ||
- (strcmp(argv[i], "-L") == 0)) {
- list_identities(ac, argv[i][1] == 'l' ? 1 : 0);
- /* Don't default-add/delete if -l. */
- no_files = 0;
- continue;
- }
- if (strcmp(argv[i], "-d") == 0) {
+ while ((ch = getopt(argc, argv, "lLdDe:s:")) != -1) {
+ switch (ch) {
+ case 'l':
+ case 'L':
+ list_identities(ac, ch == 'l' ? 1 : 0);
+ goto done;
+ break;
+ case 'd':
deleting = 1;
- continue;
- }
- if (strcmp(argv[i], "-D") == 0) {
+ break;
+ case 'D':
delete_all(ac);
- no_files = 0;
- continue;
- }
- if (strcmp(argv[i], "-s") == 0) {
- sc_mode = 1;
- deleting = 0;
- i++;
- if (i >= argc)
- usage();
- sc_reader_num = atoi(argv[i]);
- continue;
- }
- if (strcmp(argv[i], "-e") == 0) {
- sc_mode = 1;
+ goto done;
+ break;
+ case 's':
+ sc_reader_num = atoi(optarg);
+ break;
+ case 'e':
deleting = 1;
- i++;
- if (i >= argc)
- usage();
- sc_reader_num = atoi(argv[i]);
- continue;
+ sc_reader_num = atoi(optarg);
+ break;
+ default:
+ usage();
+ exit(1);
+ break;
}
- if (sc_mode == 1)
- update_card(ac, !deleting, sc_reader_num);
- no_files = 0;
- if (deleting)
- delete_file(ac, argv[i]);
- else
- add_file(ac, argv[i]);
}
- if (sc_mode == 1) {
+ argc -= optind;
+ argv += optind;
+ if (sc_reader_num != -1) {
update_card(ac, !deleting, sc_reader_num);
- ssh_close_authentication_connection(ac);
- exit(0);
+ goto done;
}
- if (no_files) {
+ if (argc == 0) {
pw = getpwuid(getuid());
if (!pw) {
fprintf(stderr, "No user found with uid %u\n",
@@ -279,8 +261,17 @@ main(int argc, char **argv)
delete_file(ac, buf);
else
add_file(ac, buf);
+ } else {
+ for (i = 0; i < argc; i++) {
+ if (deleting)
+ delete_file(ac, argv[i]);
+ else
+ add_file(ac, argv[i]);
+ }
}
clear_pass();
+
+done:
ssh_close_authentication_connection(ac);
exit(0);
}