//#define TEST
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <ctype.h>
+#include <signal.h>
+#include <limits.h>
#ifndef TEST
#define BB_FEATURE_SH_COMMAND_EDITING
#define BB_FEATURE_SH_TAB_COMPLETION
-#define BB_FEATURE_USERNAME_COMPLETION
+#define BB_FEATURE_SH_USERNAME_COMPLETION
#define BB_FEATURE_NONPRINTABLE_INVERSE_PUT
#define BB_FEATURE_BASH_STYLE_PROMT
#define BB_FEATURE_CLEAN_UP
-#define TRUE 1
-#define FALSE 0
#define D(x) x
#endif /* TEST */
+#ifdef BB_FEATURE_SH_TAB_COMPLETION
+#include <dirent.h>
+#include <sys/stat.h>
+#endif
+
#ifdef BB_FEATURE_SH_COMMAND_EDITING
#ifndef BB_FEATURE_SH_TAB_COMPLETION
-#undef BB_FEATURE_USERNAME_COMPLETION
+#undef BB_FEATURE_SH_USERNAME_COMPLETION
#endif
-#if defined(BB_FEATURE_USERNAME_COMPLETION) || defined(BB_FEATURE_BASH_STYLE_PROMT)
+#if defined(BB_FEATURE_SH_USERNAME_COMPLETION) || defined(BB_FEATURE_BASH_STYLE_PROMT)
#define BB_FEATURE_GETUSERNAME_AND_HOMEDIR
#endif
-#include <stdio.h>
-#include <errno.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <ctype.h>
-#include <signal.h>
-#include <limits.h>
-
-#ifdef BB_FEATURE_SH_TAB_COMPLETION
-#include <dirent.h>
-#include <sys/stat.h>
-#endif
-
#ifdef BB_FEATURE_GETUSERNAME_AND_HOMEDIR
#ifndef TEST
#include "pwd_grp/pwd.h"
return FALSE;
}
-#ifdef BB_FEATURE_USERNAME_COMPLETION
+#ifdef BB_FEATURE_SH_USERNAME_COMPLETION
static char **username_tab_completion(char *ud, int *num_matches)
{
return (matches);
}
}
-#endif /* BB_FEATURE_USERNAME_COMPLETION */
+#endif /* BB_FEATURE_SH_USERNAME_COMPLETION */
enum {
FIND_EXE_ONLY = 0,
strcpy(dirbuf, command);
/* set dir only */
dirbuf[(pfind - command) + 1] = 0;
-#ifdef BB_FEATURE_USERNAME_COMPLETION
+#ifdef BB_FEATURE_SH_USERNAME_COMPLETION
if (dirbuf[0] == '~') /* ~/... or ~user/... */
username_tab_completion(dirbuf, 0);
#endif
/* skip first not quoted '\'' or '"' */
for (i = 0; int_buf[i] == '\'' || int_buf[i] == '"'; i++);
/* collapse quote or unquote // or /~ */
- while ((int_buf[i] & ~QUOT) == '/' && (
- (int_buf[i + 1] & ~QUOT) == '/'
- || (int_buf[i + 1] & ~QUOT) ==
- '~')) i++;
- if (i)
+ while ((int_buf[i] & ~QUOT) == '/' &&
+ ((int_buf[i + 1] & ~QUOT) == '/'
+ || (int_buf[i + 1] & ~QUOT) == '~')) {
+ i++;
+ }
+ if (i) {
collapse_pos(0, i);
+ }
/* set only match and destroy quotes */
j = 0;
/* Free up any memory already allocated */
input_tab(0);
-#ifdef BB_FEATURE_USERNAME_COMPLETION
+#ifdef BB_FEATURE_SH_USERNAME_COMPLETION
/* If the word starts with `~' and there is no slash in the word,
* then try completing this word as a username. */