Re: [HACKERS] Proposal: psql force prompting on notty - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [HACKERS] Proposal: psql force prompting on notty
Date
Msg-id 200311110048.hAB0m2N11510@candle.pha.pa.us
Whole thread Raw
Responses Re: [HACKERS] Proposal: psql force prompting on notty
List pgsql-patches
This is an unusual one.  The OS isn't handling things properly, and we
have to work around that.  Can you get a Win32 user to test psql with
this patch to make sure it actually fixes the problem and behaves as
expected?  If you want me to produce a psql binary, I can do that.

Thanks.

---------------------------------------------------------------------------

Michael Mauger wrote:
> I'm the maintainer of sql.el in GNU Emacs.  On both the Mac OS X
> and the Windows/Cygwin platform we've had reports that psql run
> under Emacs does not issue a prompt for commands.
>
> I did a little research and it appears that the cause is that
> pset.notty is being set to false because stdin/stdout are not
> a tty (pgsql-server/src/bin/psql/startup.c).  I'd like to
> propose that an option be added to the psql command line to
> override the detection of the tty and force the prompting for
> commands on stdin.
>
> I believe the attached patch should add the option -I to psql
> and force the prompt to appear as if it were an interactive
> session regardless of the state of stdin/stdout.  I do not
> have a configuration available to properly test this however.
>
> Please be sure to include me in any replies since I do not
> subscribe to this list.  TIA.
>
> -- Michael
>
> __________________________________
> Do you Yahoo!?
> Yahoo! SiteBuilder - Free, easy-to-use web site design software
> http://sitebuilder.yahoo.com

Content-Description: interactive.diff

> --- pgsql-server/src/bin/psql/startup.c    29 Sep 2003 18:21:33 -0000    1.80
> +++ pgsql-server/src/bin/psql/startup.c    01 Nov 2003 06:10:42 -0000
> @@ -322,6 +322,7 @@
>          {"field-separator", required_argument, NULL, 'F'},
>          {"host", required_argument, NULL, 'h'},
>          {"html", no_argument, NULL, 'H'},
> +        {"interactive", no_argument, NULL, 'I'},
>          {"list", no_argument, NULL, 'l'},
>          {"no-readline", no_argument, NULL, 'n'},
>          {"output", required_argument, NULL, 'o'},
> @@ -352,7 +353,7 @@
>
>      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:HlMno:p:P:qR:sStT:uU:v:VWxX?",
>                              long_options, &optindex)) != -1)
>      {
>          switch (c)
> @@ -395,7 +396,10 @@
>              case 'H':
>                  pset.popt.topt.format = PRINT_HTML;
>                  break;
> +            case 'I':
> +                pset.notty = 0;
> +                break;
>              case 'l':
>                  options->action = ACT_LIST_DB;
>                  break;
> --- pgsql-server/src/bin/psql/help.c    02 Oct 2003 06:39:31 -0000    1.81
> +++ pgsql-server/src/bin/psql/help.c    01 Nov 2003 06:29:50 -0000
> @@ -103,6 +103,7 @@
>      puts(_("  -a              echo all input from script"));
>      puts(_("  -e              echo commands sent to server"));
>      puts(_("  -E              display queries that internal commands generate"));
> +    puts(_("  -I              force interactive prompting for input"));
>      puts(_("  -q              run quietly (no messages, only query output)"));
>      puts(_("  -o FILENAME     send query results to file (or |pipe)"));
>      puts(_("  -n              disable enhanced command line editing (readline)"));

>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>       subscribe-nomail command to majordomo@postgresql.org so that your
>       message can get through to the mailing list cleanly

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: initdb in C
Next
From: Christopher Kings-Lynne
Date:
Subject: Re: "make check" improvement for cygwin