1
1

* complete.c (check_is_cd): Simplify logic, use isspace().

Этот коммит содержится в:
Pavel Roskin 2003-11-24 21:22:00 +00:00
родитель baa4e26cdc
Коммит 645eeb8118
2 изменённых файлов: 25 добавлений и 9 удалений

Просмотреть файл

@ -1,3 +1,7 @@
2003-11-24 Pavel Roskin <proski@gnu.org>
* complete.c (check_is_cd): Simplify logic, use isspace().
2003-11-24 Andrew V. Samoilov <sav@bcs.zp.ua>
* hotlist.c (add_new_group_input): Clean up.

Просмотреть файл

@ -22,6 +22,7 @@
#include <config.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
@ -608,17 +609,28 @@ completion_matches (char *text, CompletionFunction entry_function)
return match_list;
}
/* Check if directory completion is needed */
static int
check_is_cd (char *text, int start, int flags)
check_is_cd (const char *text, int start, int flags)
{
char *p, *q = text + start;
for (p = text; *p && p < q && (*p == ' ' || *p == '\t'); p++);
if (((flags & INPUT_COMPLETE_COMMANDS) &&
!strncmp (p, "cd", 2) && (p [2] == ' ' || p [2] == '\t') &&
p + 2 < q) ||
(flags & INPUT_COMPLETE_CD))
return 1;
const unsigned char *p, *q;
if (flags & INPUT_COMPLETE_CD)
return 1;
if (!(flags & INPUT_COMPLETE_COMMANDS))
return 0;
/* Skip initial spaces */
p = text;
q = text + start;
while (p < q && *p && isspace (*p))
p++;
/* Check if the command is "cd" and the cursor is after it */
if (p[0] == 'c' && p[1] == 'd' && isspace (p[2]) && (p + 2 < q))
return 1;
return 0;
}