Revert function pointers for rl_complete() and rl_list_possib() introduced in 0.2.2.

Instead merge afd8b4de9dca8ec6afc3 from http://github.com/heimdal/heimdal.git project.
This lets rl_complete() and rl_list_possib() become wrapper functions calling a set of
function pointers, set using rl_set_complete_func() and rl_set_list_possib_funct().

Each wrapper has a fallback to do filename completion, which in turn can be disabled
by leaving out --enable-default-complete from the configure line.

This change, admittedly quite intrusive for a library, is a better implementation in
many ways.  For one it is much more readable, but it also enables further adoption of
other editline forks as well as a simpler implementation of GNU Readline function
pointers rl_completion_entry_function and rl_attempted_completion_function at a later
stage.

My apologies to everyone for whom this change breaks backwards compatibility.  For
help on converting your code, please see examples/cli.c.
This commit is contained in:
Joachim Nilsson
2010-07-24 00:50:40 +02:00
parent 511a1a65a4
commit 98b846c8b1
5 changed files with 69 additions and 42 deletions

View File

@@ -73,12 +73,10 @@ extern int rl_quit;
#ifdef CONFIG_SIGSTOP
extern int rl_susp;
#endif
#ifdef CONFIG_DEFAULT_COMPLETE
extern char *default_rl_complete(char *pathname, int *unique);
extern int default_rl_list_possib(char *pathname, char ***avp);
#endif
extern void rl_ttyset(int Reset);
extern void rl_add_slash(char *path, char *p);
void rl_ttyset(int Reset);
void rl_add_slash(char *path, char *p);
char *rl_complete(char *token, int *match);
int rl_list_possib(char *token, char ***av);
#ifndef HAVE_STDLIB_H
extern char *getenv(const char *name);