pgpool2.git / summary / log / commit / refs
commit 0ebd7836f10bbbfb407e2143672995e3069aa2a8
Author: Tatsuo Ishii <ishii at sraoss.co.jp>
Date: Thu Jun 17 09:11:17 2010 +0000
Add proper header comments.
Use getopt_long, rather than homebrew command analysis routine.
Add --md5auth argument(just a mock up)
pg_md5.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 76 insertions(+), 18 deletions(-)
diff --git a/pg_md5.c b/pg_md5.c
index 893c84beb..b71f25713 100644
--- a/pg_md5.c
+++ b/pg_md5.c
@@ -1,35 +1,85 @@
+/* -*-pgsql-c-*- */
+/*
+ * $Header$
+ *
+ * pgpool: a language independent connection pool server for PostgreSQL
+ * written by Tatsuo Ishii
+ *
+ * Copyright (c) 2003-2010 PgPool Global Development Group
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that the above copyright notice appear in all
+ * copies and that both that copyright notice and this permission
+ * notice appear in supporting documentation, and that the name of the
+ * author not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior
+ * permission. The author makes no representations about the
+ * suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * pg_md5 command main
+ *
+ */
+#include "pool.h"
+#include "pool_config.h"
+#include "md5.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <termios.h>
-
-#include "md5.h"
-
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#endif
/* Maximum number of characters allowed for input. */
#define MAX_INPUT_SIZE 32
-void print_usage(const char prog[], int exit_code);
-void set_tio_attr(int enable);
+static void print_usage(const char prog[], int exit_code);
+static void set_tio_attr(int enable);
int
main(int argc, char *argv[])
{
-
#define PRINT_USAGE(exit_code) print_usage(argv[0], exit_code)
-#define COMPARE_ARG(arg) (!strcmp(argv[1], arg))
- if (argc != 2)
- PRINT_USAGE(EXIT_FAILURE);
- else if (COMPARE_ARG("--help") || COMPARE_ARG("-h"))
- PRINT_USAGE(EXIT_SUCCESS);
+ int opt;
+ int optindex;
+ bool md5auth = false;
+ bool prompt = false;
+
+ static struct option long_options[] = {
+ {"help", no_argument, NULL, 'h'},
+ {"prompt", no_argument, NULL, 'p'},
+ {"md5auth", no_argument, NULL, 'm'},
+ {NULL, 0, NULL, 0}
+ };
+
+ while ((opt = getopt_long(argc, argv, "h:p:m", long_options, &optindex)) != -1)
+ {
+ switch (opt)
+ {
+ case 'p': /* prompt for password */
+ prompt = true;
+ break;
+
+ case 'm': /* produce md5 authentication password */
+ md5auth = true;
+ break;
+
+ default:
+ PRINT_USAGE(EXIT_SUCCESS);
+ break;
+ }
+ }
/* Prompt for password. */
- else if (COMPARE_ARG("--prompt") || COMPARE_ARG("-p"))
+ if (prompt)
{
- char md5[MD5_PASSWD_LEN+1];
+ char md5[MD5_PASSWD_LEN+1];
char buf[MAX_INPUT_SIZE+1];
int len;
@@ -58,11 +108,18 @@ main(int argc, char *argv[])
printf("\n%s\n", md5);
}
- /* Read password from argv[1]. */
+ /* Read password from argv. */
else
{
char md5[MD5_PASSWD_LEN+1];
- int len = strlen(argv[1]);
+ int len;
+
+ if (optind >= argc)
+ {
+ PRINT_USAGE(EXIT_FAILURE);
+ }
+
+ len = strlen(argv[optind]);
if (len > MAX_INPUT_SIZE)
{
@@ -70,7 +127,7 @@ main(int argc, char *argv[])
PRINT_USAGE(EXIT_FAILURE);
}
- pool_md5_hash(argv[1], len, md5);
+ pool_md5_hash(argv[optind], len, md5);
printf("%s\n", md5);
}
@@ -78,7 +135,7 @@ main(int argc, char *argv[])
}
-void
+static void
print_usage(const char prog[], int exit_code)
{
fprintf(((exit_code == EXIT_SUCCESS) ? stdout : stderr),
@@ -88,6 +145,7 @@ print_usage(const char prog[], int exit_code)
%s <PASSWORD>\n\
\n\
--prompt, -p Prompt password using standard input.\n\
+ --md5auth, -m Produce md5 authentication password.\n\
--help, -h This help menu.\n\
\n\
Warning: At most %d characters are allowed for input.\n\
@@ -100,7 +158,7 @@ Warning: Plain password argument is deprecated for security concerns\n\
}
-void
+static void
set_tio_attr(int set)
{
struct termios tio;
[parent: a43594f8643c]