summaryrefslogtreecommitdiff
path: root/src/bin/pg_encoding/pg_encoding.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/pg_encoding/pg_encoding.c')
-rw-r--r--src/bin/pg_encoding/pg_encoding.c66
1 files changed, 52 insertions, 14 deletions
diff --git a/src/bin/pg_encoding/pg_encoding.c b/src/bin/pg_encoding/pg_encoding.c
index fc0714641e1..3e2b84e0bd6 100644
--- a/src/bin/pg_encoding/pg_encoding.c
+++ b/src/bin/pg_encoding/pg_encoding.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_encoding/Attic/pg_encoding.c,v 1.8 2000/02/19 04:59:30 ishii Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_encoding/Attic/pg_encoding.c,v 1.9 2001/09/06 04:57:29 ishii Exp $
*
*-------------------------------------------------------------------------
*/
@@ -15,37 +15,75 @@
#include "miscadmin.h"
#include "mb/pg_wchar.h"
+#include <ctype.h>
+
static void usage(void);
int
main(int argc, char **argv)
{
- char c;
- char *p;
- int rtn;
+ char *p;
+ int enc;
+ bool be_only = FALSE;
if (argc < 2)
{
usage();
exit(1);
}
- p = argv[1];
- while ((c = *p++))
+
+ if (strcmp(argv[1], "-b")==0)
{
- if (c < '0' || c > '9')
+ if (argc < 3)
{
- rtn = pg_char_to_encoding(argv[1]);
- if (rtn >= 0)
- printf("%d\n", rtn);
- exit(0);
+ usage();
+ exit(1);
}
+ be_only = TRUE;
+ p = argv[2];
}
- printf("%s\n", pg_encoding_to_char(atoi(argv[1])));
- exit(0);
+ else
+ p = argv[1];
+
+ if (p && *p && isdigit((unsigned char) *p))
+ {
+ /*
+ * Encoding number to name
+ */
+ char *name;
+
+ enc = atoi(p);
+
+ if ((name = (char *) pg_encoding_to_char(enc)))
+ {
+ if (be_only && pg_valid_server_encoding(name) < 0)
+ exit(0);
+ printf("%s\n", name);
+ }
+ exit(0);
+ }
+ else if (p && *p)
+ {
+ /*
+ * Encoding name to encoding number
+ */
+ if ((enc = pg_char_to_encoding(p)) >= 0)
+ {
+ if (be_only && pg_valid_server_encoding(p) < 0)
+ exit(0);
+ printf("%d\n", enc);
+ }
+ exit(0);
+ }
+ exit(1);
}
static void
usage()
{
- fprintf(stderr, "\nUsage: pg_encoding encoding_name | encoding_number\n\n");
+ fprintf(stderr,
+ "\nUsage: pg_encoding [options] encoding_name | encoding_number\n\n"
+ "options:"
+ " -b check if encoding is valid for backend\n\n"
+ );
}