From b51eb265681de8723a34c923032d0e8df143b19a Mon Sep 17 00:00:00 2001
From: Glenn L McGrath <bug1@ihug.co.nz>
Date: Fri, 19 Dec 2003 10:37:52 +0000
Subject: [PATCH] Use getopt_ulflags

---
 networking/ftpgetput.c | 54 ++++++++++++++++++------------------------
 1 file changed, 23 insertions(+), 31 deletions(-)

diff --git a/networking/ftpgetput.c b/networking/ftpgetput.c
index 2fd50e4c4..8724739b5 100644
--- a/networking/ftpgetput.c
+++ b/networking/ftpgetput.c
@@ -287,11 +287,25 @@ static int ftp_send(ftp_host_info_t *server, FILE *control_stream,
 }
 #endif
 
+#define FTPGETPUT_OPT_CONTINUE	1
+#define FTPGETPUT_OPT_VERBOSE	2
+#define FTPGETPUT_OPT_USER	4
+#define FTPGETPUT_OPT_PASSWORD	8
+#define FTPGETPUT_OPT_PORT	16
+
+static const struct option ftpgetput_long_options[] = {
+	{"continue", 1, NULL, 'c'},
+	{"verbose", 0, NULL, 'v'},
+	{"username", 1, NULL, 'u'},
+	{"password", 1, NULL, 'p'},
+	{"port", 1, NULL, 'P'},
+	{0, 0, 0, 0}
+};
+
 int ftpgetput_main(int argc, char **argv)
 {
 	/* content-length of the file */
-	int option_index = -1;
-	int opt;
+	unsigned long opt;
 
 	/* socket to ftp server */
 	FILE *control_stream;
@@ -302,15 +316,6 @@ int ftpgetput_main(int argc, char **argv)
 
 	int (*ftp_action)(ftp_host_info_t *, FILE *, const char *, char *) = NULL;
 
-	struct option long_options[] = {
-		{"username", 1, NULL, 'u'},
-		{"password", 1, NULL, 'p'},
-		{"port", 1, NULL, 'P'},
-		{"continue", 1, NULL, 'c'},
-		{"verbose", 0, NULL, 'v'},
-		{0, 0, 0, 0}
-	};
-
 #ifdef CONFIG_FTPPUT
 	if (bb_applet_name[3] == 'p') {
 		ftp_action = ftp_send;
@@ -330,26 +335,13 @@ int ftpgetput_main(int argc, char **argv)
 	 * Decipher the command line 
 	 */
 	server->port = "21";
-	while ((opt = getopt_long(argc, argv, "u:p:P:cv", long_options, &option_index)) != EOF) {
-		switch(opt) {
-		case 'c':
-			do_continue = 1;
-			break;
-		case 'u':
-			server->user = optarg;
-			break;
-		case 'p':
-			server->password = optarg;
-			break;
-		case 'P':
-			server->port = optarg;
-			break;
-		case 'v':
-			verbose_flag = 1;
-			break;
-		default:
-			bb_show_usage();
-		}
+	bb_applet_long_options = ftpgetput_long_options;
+	opt = bb_getopt_ulflags(argc, argv, "cvu:p:P:", &server->user, &server->password, &server->port);
+	if (opt & FTPGETPUT_OPT_CONTINUE) {
+		do_continue = 1;
+	}
+	if (opt & FTPGETPUT_OPT_VERBOSE) {
+		verbose_flag = 1;
 	}
 
 	/*