Index: src/bin/psql/command.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/psql/command.c,v retrieving revision 1.177 diff -u -p -r1.177 command.c --- src/bin/psql/command.c 5 Jan 2007 22:19:49 -0000 1.177 +++ src/bin/psql/command.c 8 Feb 2007 11:28:46 -0000 @@ -712,6 +712,45 @@ exec_command(const char *cmd, free(pw2); } + /* \prompt -- prompt and set variable */ + else if (strcmp(cmd, "prompt") == 0) + { + char *opt = psql_scan_slash_option(scan_state, + OT_NORMAL, NULL, false); + + if (!opt) + { + psql_error("\\%s: missing required argument\n", cmd); + success = false; + } + else + { + char *prompt_text; + char *result; + + prompt_text = psql_scan_slash_option(scan_state, + OT_WHOLE_LINE, NULL, false); + + if (!prompt_text) + { + prompt_text = malloc(strlen(opt) + 32); + sprintf(prompt_text, "Enter value for \"%s\": ", opt); + } + + result = simple_prompt(prompt_text, 4096, true); + + if (!SetVariable(pset.vars, opt, result)) + { + psql_error("\\%s: error\n", cmd); + success = false; + } + + free(result); + free(prompt_text); + free(opt); + } + } + /* \pset -- set printing parameters */ else if (strcmp(cmd, "pset") == 0) { Index: src/bin/psql/help.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/psql/help.c,v retrieving revision 1.116 diff -u -p -r1.116 help.c --- src/bin/psql/help.c 5 Jan 2007 22:19:49 -0000 1.116 +++ src/bin/psql/help.c 8 Feb 2007 11:28:46 -0000 @@ -161,7 +161,7 @@ slashUsage(unsigned short int pager) { FILE *output; - output = PageOutput(67, pager); + output = PageOutput(69, pager); /* if you add/remove a line here, change the row count above */ @@ -184,6 +184,8 @@ slashUsage(unsigned short int pager) fprintf(output, _(" \\timing toggle timing of commands (currently %s)\n"), ON(pset.timing)); fprintf(output, _(" \\unset NAME unset (delete) internal variable\n")); + fprintf(output, _(" \\prompt NAME [TEXT]\n" + " prompt user and set internal variable\n")); fprintf(output, _(" \\! [COMMAND] execute command in shell or start interactive shell\n")); fprintf(output, "\n"); Index: src/bin/psql/tab-complete.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/psql/tab-complete.c,v retrieving revision 1.158 diff -u -p -r1.158 tab-complete.c --- src/bin/psql/tab-complete.c 7 Feb 2007 00:52:35 -0000 1.158 +++ src/bin/psql/tab-complete.c 8 Feb 2007 11:28:47 -0000 @@ -542,7 +542,7 @@ psql_completion(char *text, int start, i "\\e", "\\echo", "\\encoding", "\\f", "\\g", "\\h", "\\help", "\\H", "\\i", "\\l", "\\lo_import", "\\lo_export", "\\lo_list", "\\lo_unlink", - "\\o", "\\p", "\\password", "\\pset", "\\q", "\\qecho", "\\r", + "\\o", "\\p", "\\password", "\\prompt", "\\pset", "\\q", "\\qecho", "\\r", "\\set", "\\t", "\\T", "\\timing", "\\unset", "\\x", "\\w", "\\z", "\\!", NULL };