diff options
Diffstat (limited to 'src/bin/psql/startup.c')
-rw-r--r-- | src/bin/psql/startup.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 9e27b8c002b..ff8a5c2431b 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2005, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.116 2005/06/13 06:36:22 neilc Exp $ + * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.117 2005/06/14 02:57:41 momjian Exp $ */ #include "postgres_fe.h" @@ -71,6 +71,7 @@ struct adhoc_opts char *host; char *port; char *username; + char *logfilename; enum _actions action; char *action_string; bool no_readline; @@ -109,8 +110,6 @@ main(int argc, char *argv[]) set_pglocale_pgservice(argv[0], "psql"); - pset.progname = get_progname(argv[0]); - if (argc > 1) { if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) @@ -125,6 +124,8 @@ main(int argc, char *argv[]) } } + pset.progname = get_progname(argv[0]); + #ifdef WIN32 setvbuf(stderr, NULL, _IONBF, 0); setup_win32_locks(); @@ -234,6 +235,13 @@ main(int argc, char *argv[]) exit(success ? EXIT_SUCCESS : EXIT_FAILURE); } + if (options.logfilename) + { + pset.logfile = fopen(options.logfilename, "a"); + if (!pset.logfile) + fprintf(stderr, gettext("logfile open failed for %s\n\n"), options.logfilename); + } + /* * Now find something to do */ @@ -316,6 +324,8 @@ main(int argc, char *argv[]) } /* clean up */ + if (pset.logfile) + fclose(pset.logfile); PQfinish(pset.db); setQFout(NULL); @@ -344,6 +354,7 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options) {"host", required_argument, NULL, 'h'}, {"html", no_argument, NULL, 'H'}, {"list", no_argument, NULL, 'l'}, + {"log", required_argument, NULL, 'L'}, {"no-readline", no_argument, NULL, 'n'}, {"output", required_argument, NULL, 'o'}, {"port", required_argument, NULL, 'p'}, @@ -373,7 +384,7 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options) memset(options, 0, sizeof *options); - while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:h:Hlno:p:P:qR:sStT:uU:v:VWxX?", + while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:h:HlL:no:p:P:qR:sStT:uU:v:VWxX?", long_options, &optindex)) != -1) { switch (c) @@ -419,6 +430,9 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options) case 'l': options->action = ACT_LIST_DB; break; + case 'L': + options->logfilename = optarg; + break; case 'n': options->no_readline = true; break; |