X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fterminal%2Fread-line.c;h=c6279ce9c4bd6514ee797ed034d498bcdfdd671b;hb=9db3101d0bbbcfb687acd3e442e550557e4e56b1;hp=f28fb6fe3912a989a1df8ef74d234ffc402474c4;hpb=44326932c8227c64a87f7a92ef16ce83c2fba2d4;p=pspp-builds.git diff --git a/src/ui/terminal/read-line.c b/src/ui/terminal/read-line.c index f28fb6fe..c6279ce9 100644 --- a/src/ui/terminal/read-line.c +++ b/src/ui/terminal/read-line.c @@ -1,20 +1,18 @@ -/* PSPP - computes sample statistics. - Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. +/* PSPP - a program for statistical analysis. + Copyright (C) 1997-9, 2000, 2007 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. */ + along with this program. If not, see . */ #include @@ -34,6 +32,7 @@ #include #include #include +#include #include "xalloc.h" @@ -51,7 +50,7 @@ static char **dont_complete (const char *, int, int); #endif /* HAVE_READLINE */ -struct readln_source +struct readln_source { struct getl_interface parent ; @@ -75,10 +74,10 @@ readln_initialize (void) if (history_file == NULL) { const char *home_dir = getenv ("HOME"); - if (home_dir != NULL) + if (home_dir != NULL) { history_file = xasprintf ("%s/.pspp_history", home_dir); - read_history (history_file); + read_history (history_file); } } #endif @@ -143,13 +142,16 @@ readln_read (struct string *line, enum prompt_style style) #if HAVE_READLINE char *string; #endif - + assert (initialised); reset_msg_count (); welcome (); + if (style == PROMPT_FIRST) + som_flush (); + #if HAVE_READLINE rl_attempted_completion_function = (style == PROMPT_FIRST ? complete_command_name @@ -157,18 +159,18 @@ readln_read (struct string *line, enum prompt_style style) string = readline (prompt); if (string == NULL) return false; - else + else { if (string[0]) add_history (string); ds_assign_cstr (line, string); free (string); - return true; + return true; } #else fputs (prompt, stdout); fflush (stdout); - if (ds_read_line (line, stdin)) + if (ds_read_line (line, stdin)) { ds_chomp (line, '\n'); return true; @@ -210,16 +212,16 @@ static char *command_generator (const char *text, int state); static char ** complete_command_name (const char *text, int start, int end UNUSED) { - if (start == 0) + if (start == 0) { /* Complete command name at start of line. */ - return rl_completion_matches (text, command_generator); + return rl_completion_matches (text, command_generator); } - else + else { /* Otherwise don't do any completion. */ rl_attempted_completion_over = 1; - return NULL; + return NULL; } } @@ -228,15 +230,15 @@ static char ** dont_complete (const char *text UNUSED, int start UNUSED, int end UNUSED) { rl_attempted_completion_over = 1; - return NULL; + return NULL; } /* If STATE is 0, returns the first command name matching TEXT. Otherwise, returns the next command name matching TEXT. Returns a null pointer when no matches are left. */ static char * -command_generator (const char *text, int state) -{ +command_generator (const char *text, int state) +{ static const struct command *cmd; const char *name;