先看下例子
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
static char *line_read = (char *)NULL;
char *rl_gets()
{
if(line_read)
{ free (line_read);
line_read = (char *)NULL;
}
line_read = readline("Please Enter:");
if(line_read && *line_read)
add_history(line_read);
return(line_read);
}
int main()
{ char *mline;
mline = rl_gets();
printf("%s\n",mline);
}
运行后就可以使用tab补全文件了。但是不能补全命令。
下面这个程序可以补全命令,
static char* command_generator(const char *text, int state)
{
const char *name;
static int list_index, len;
if (!state)
{
list_index = 0;
len = strlen (text);
}
while (name = commands[list_index])
{
list_index++;
if (strncmp (name, text, len) == 0)
return strdup(name);
}
return ((char *)NULL);
}
char** command_completion (const char *text, int start, int end)
{
char **matches = NULL;
if (start == 0)
matches = rl_completion_matches (text, command_generator);