projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* aggregate.c: (parse_aggregate_functions) Fix N_NO_VARS format.
[pspp-builds.git]
/
src
/
getline.c
diff --git
a/src/getline.c
b/src/getline.c
index b9f0a1d5b4c4b41f51397c95964ef031e284a409..0b7d4b6df1161a7047e249f430dcd1aab01f53e6 100644
(file)
--- a/
src/getline.c
+++ b/
src/getline.c
@@
-24,6
+24,7
@@
#include <errno.h>
#include <stdlib.h>
#include "alloc.h"
#include <errno.h>
#include <stdlib.h>
#include "alloc.h"
+#include "command.h"
#include "error.h"
#include "filename.h"
#include "lexer.h"
#include "error.h"
#include "filename.h"
#include "lexer.h"
@@
-43,6
+44,10
@@
int getl_welcomed;
int getl_mode;
int getl_prompt;
int getl_mode;
int getl_prompt;
+#if HAVE_LIBREADLINE
+#include <readline/readline.h>
+#endif
+
#if HAVE_LIBHISTORY
static char *history_file;
#if HAVE_LIBHISTORY
static char *history_file;
@@
-57,6
+62,7
@@
extern int write_history (char *);
#endif /* no readline/history.h */
#endif /* -lhistory */
#endif /* no readline/history.h */
#endif /* -lhistory */
+
extern struct cmd_set cmd;
static struct string getl_include_path;
extern struct cmd_set cmd;
static struct string getl_include_path;
@@
-72,19
+78,25
@@
static int read_console (void);
void
getl_initialize (void)
{
void
getl_initialize (void)
{
- ds_create (
NULL,
&getl_include_path,
+ ds_create (&getl_include_path,
fn_getenv_default ("STAT_INCLUDE_PATH", include_path));
fn_getenv_default ("STAT_INCLUDE_PATH", include_path));
- ds_init (NULL, &getl_buf, 256);
+ ds_init (&getl_buf, 256);
+#if HAVE_LIBREADLINE
+ rl_completion_entry_function = pspp_completion_function;
+#endif
}
/* Close getline. */
void
getl_uninitialize (void)
{
}
/* Close getline. */
void
getl_uninitialize (void)
{
+ getl_close_all();
#if HAVE_LIBHISTORY && defined (unix)
if (history_file)
write_history (history_file);
#endif
#if HAVE_LIBHISTORY && defined (unix)
if (history_file)
write_history (history_file);
#endif
+ ds_destroy (&getl_buf);
+ ds_destroy (&getl_include_path);
}
/* Returns a string that represents the directory that the syntax file
}
/* Returns a string that represents the directory that the syntax file
@@
-109,9
+121,9
@@
void
getl_add_include_dir (const char *path)
{
if (ds_length (&getl_include_path))
getl_add_include_dir (const char *path)
{
if (ds_length (&getl_include_path))
- ds_putc
har
(&getl_include_path, PATH_DELIMITER);
+ ds_putc (&getl_include_path, PATH_DELIMITER);
- ds_
concat
(&getl_include_path, path);
+ ds_
puts
(&getl_include_path, path);
}
/* Adds FN to the tail end of the list of script files to execute.
}
/* Adds FN to the tail end of the list of script files to execute.
@@
-154,7
+166,7
@@
getl_include (const char *fn)
{
char *cur_dir = getl_get_current_directory ();
{
char *cur_dir = getl_get_current_directory ();
- real_fn = fn_search_path (fn, ds_
value
(&getl_include_path), cur_dir);
+ real_fn = fn_search_path (fn, ds_
c_str
(&getl_include_path), cur_dir);
free (cur_dir);
}
free (cur_dir);
}
@@
-273,7
+285,7
@@
handle_line_buffer (void)
}
while (s->cur_line == NULL);
}
while (s->cur_line == NULL);
- ds_concat
_buffer
(&getl_buf, s->cur_line->line, s->cur_line->len);
+ ds_concat (&getl_buf, s->cur_line->line, s->cur_line->len);
/* Advance pointers. */
s->cur_line = s->cur_line->next;
/* Advance pointers. */
s->cur_line = s->cur_line->next;
@@
-309,7
+321,7
@@
getl_read_line (void)
perform_DO_REPEAT_substitutions ();
if (getl_head->print)
tab_output_text (TAB_LEFT | TAT_FIX | TAT_PRINTF, "+%s",
perform_DO_REPEAT_substitutions ();
if (getl_head->print)
tab_output_text (TAB_LEFT | TAT_FIX | TAT_PRINTF, "+%s",
- ds_
value
(&getl_buf));
+ ds_
c_str
(&getl_buf));
return 1;
}
return 1;
}
@@
-326,7
+338,7
@@
getl_read_line (void)
}
}
}
}
- if (!ds_get
line
(&getl_buf, s->f))
+ if (!ds_get
s
(&getl_buf, s->f))
{
if (ferror (s->f))
msg (ME, _("Reading `%s': %s."), s->fn, strerror (errno));
{
if (ferror (s->f))
msg (ME, _("Reading `%s': %s."), s->fn, strerror (errno));
@@
-337,13
+349,13
@@
getl_read_line (void)
ds_truncate (&getl_buf, ds_length (&getl_buf) - 1);
if (get_echo())
ds_truncate (&getl_buf, ds_length (&getl_buf) - 1);
if (get_echo())
- tab_output_text (TAB_LEFT | TAT_FIX, ds_
value
(&getl_buf));
+ tab_output_text (TAB_LEFT | TAT_FIX, ds_
c_str
(&getl_buf));
getl_head->ln++;
/* Allows shebang invocation: `#! /usr/local/bin/pspp'. */
getl_head->ln++;
/* Allows shebang invocation: `#! /usr/local/bin/pspp'. */
- if (ds_
value
(&getl_buf)[0] == '#'
- && ds_
value
(&getl_buf)[1] == '!')
+ if (ds_
c_str
(&getl_buf)[0] == '#'
+ && ds_
c_str
(&getl_buf)[1] == '!')
continue;
return 1;
continue;
return 1;
@@
-451,6
+463,7
@@
read_console (void)
default:
assert (0);
default:
assert (0);
+ abort ();
}
line = readline (prompt);
}
line = readline (prompt);
@@
-463,7
+476,7
@@
read_console (void)
#endif
ds_clear (&getl_buf);
#endif
ds_clear (&getl_buf);
- ds_
concat
(&getl_buf, line);
+ ds_
puts
(&getl_buf, line);
return 1;
}
return 1;
}
@@
-476,7
+489,7
@@
read_console (void)
fputs (getl_prompt ? get_cprompt() : get_prompt(), stdout);
ds_clear (&getl_buf);
fputs (getl_prompt ? get_cprompt() : get_prompt(), stdout);
ds_clear (&getl_buf);
- if (ds_get
line
(&getl_buf, stdin))
+ if (ds_get
s
(&getl_buf, stdin))
return 1;
if (ferror (stdin))
return 1;
if (ferror (stdin))