2 Commits
0.2.2 ... 0.2.3

Author SHA1 Message Date
Joachim Nilsson
6d8d857dd4 More build fixes, some code cleanup and untabify. 2008-12-02 21:58:55 +01:00
Joachim Nilsson
77d483da02 Build fixes when building with GCC v4.3.2 and -W -Wall -Werror 2008-12-02 19:09:17 +01:00
10 changed files with 974 additions and 1080 deletions

View File

@@ -19,6 +19,9 @@
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
#undef HAVE_NDIR_H #undef HAVE_NDIR_H
/* Define to 1 if you have the `perror' function. */
#undef HAVE_PERROR
/* Define to 1 if you have the <sgtty.h> header file. */ /* Define to 1 if you have the <sgtty.h> header file. */
#undef HAVE_SGTTY_H #undef HAVE_SGTTY_H

23
configure vendored
View File

@@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for Minix editline 0.2.2. # Generated by GNU Autoconf 2.61 for Minix editline 0.2.3.
# #
# Report bugs to <joachim@vmlinux.org>. # Report bugs to <joachim@vmlinux.org>.
# #
@@ -574,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package. # Identity of this package.
PACKAGE_NAME='Minix editline' PACKAGE_NAME='Minix editline'
PACKAGE_TARNAME='minix-editline' PACKAGE_TARNAME='minix-editline'
PACKAGE_VERSION='0.2.2' PACKAGE_VERSION='0.2.3'
PACKAGE_STRING='Minix editline 0.2.2' PACKAGE_STRING='Minix editline 0.2.3'
PACKAGE_BUGREPORT='joachim@vmlinux.org' PACKAGE_BUGREPORT='joachim@vmlinux.org'
ac_unique_file="src/editline.c" ac_unique_file="src/editline.c"
@@ -1210,7 +1210,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures Minix editline 0.2.2 to adapt to many kinds of systems. \`configure' configures Minix editline 0.2.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1276,7 +1276,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of Minix editline 0.2.2:";; short | recursive ) echo "Configuration of Minix editline 0.2.3:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@@ -1361,7 +1361,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
Minix editline configure 0.2.2 Minix editline configure 0.2.3
generated by GNU Autoconf 2.61 generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1375,7 +1375,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by Minix editline $as_me 0.2.2, which was It was created by Minix editline $as_me 0.2.3, which was
generated by GNU Autoconf 2.61. Invocation command line was generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@ $ $0 $@
@@ -2070,7 +2070,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='minix-editline' PACKAGE='minix-editline'
VERSION='0.2.2' VERSION='0.2.3'
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@@ -4879,7 +4879,8 @@ fi
for ac_func in strchr strdup strrchr tcgetattr
for ac_func in strchr strdup strrchr tcgetattr perror
do do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ echo "$as_me:$LINENO: checking for $ac_func" >&5 { echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -5421,7 +5422,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by Minix editline $as_me 0.2.2, which was This file was extended by Minix editline $as_me 0.2.3, which was
generated by GNU Autoconf 2.61. Invocation command line was generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@@ -5474,7 +5475,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\ ac_cs_version="\\
Minix editline config.status 0.2.2 Minix editline config.status 0.2.3
configured by $0, generated by GNU Autoconf 2.61, configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"

View File

@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61) AC_PREREQ(2.61)
AC_INIT(Minix editline, 0.2.2, joachim@vmlinux.org) AC_INIT(Minix editline, 0.2.3, joachim@vmlinux.org)
AC_CONFIG_SRCDIR([src/editline.c]) AC_CONFIG_SRCDIR([src/editline.c])
AC_CONFIG_HEADER([config.h]) AC_CONFIG_HEADER([config.h])
@@ -38,7 +38,7 @@ AC_PROG_GCC_TRADITIONAL
#AC_FUNC_MALLOC #AC_FUNC_MALLOC
#AC_FUNC_REALLOC #AC_FUNC_REALLOC
AC_FUNC_STAT AC_FUNC_STAT
AC_CHECK_FUNCS([strchr strdup strrchr tcgetattr]) AC_CHECK_FUNCS([strchr strdup strrchr tcgetattr perror])
AC_ARG_ENABLE([default-complete], AC_ARG_ENABLE([default-complete],
[ --enable-default-complete Enable default completion handler.],[ [ --enable-default-complete Enable default completion handler.],[

View File

@@ -62,7 +62,7 @@ int my_rl_list_possib(char *token, char ***av)
return total; return total;
} }
int main(int ac, char *av[]) int main(int ac __attribute__ ((unused)), char *av[] __attribute__ ((unused)))
{ {
char *line; char *line;
char *prompt = "cli> "; char *prompt = "cli> ";

View File

@@ -3,25 +3,35 @@
** A "micro-shell" to test editline library. ** A "micro-shell" to test editline library.
** If given any arguments, commands aren't executed. ** If given any arguments, commands aren't executed.
*/ */
#include <config.h>
#include <stdio.h> #include <stdio.h>
#if defined(HAVE_STDLIB) #if defined(HAVE_STDLIB_H)
#include <stdlib.h> #include <stdlib.h>
#endif /* defined(HAVE_STDLIB) */ #endif
#if defined(HAVE_STRING_H)
#include <string.h>
#endif
#if defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
extern char *readline(); extern char *readline();
extern void add_history(); extern void add_history();
#if !defined(HAVE_STDLIB) #if !defined(HAVE_STDLIB_H)
extern int chdir();
extern int free(); extern int free();
extern int strncmp();
extern int system(); extern int system();
extern void exit(); extern void exit();
extern char *getenv(); extern char *getenv();
#endif /* !defined(HAVE_STDLIB) */ #endif /* !defined(HAVE_STDLIB) */
#if !defined(HAVE_STRING_H)
extern int strncmp();
#endif
#if !defined(HAVE_UNISTD_H)
extern int chdir();
#endif
#if !defined(HAVE_PERROR)
#if defined(NEED_PERROR)
void void
perror(s) perror(s)
char *s; char *s;
@@ -37,7 +47,7 @@ perror(s)
int int
main(ac, av) main(ac, av)
int ac; int ac;
char *av[]; char *av[] __attribute__ ((unused));
{ {
char *prompt; char *prompt;
char *p; char *p;
@@ -45,7 +55,7 @@ main(ac, av)
doit = ac == 1; doit = ac == 1;
if ((prompt = getenv("TESTPROMPT")) == NULL) if ((prompt = getenv("TESTPROMPT")) == NULL)
prompt = "testit> "; prompt = "testit> ";
while ((p = readline(prompt)) != NULL) { while ((p = readline(prompt)) != NULL) {
(void)printf("\t\t\t|%s|\n", p); (void)printf("\t\t\t|%s|\n", p);

View File

@@ -4,8 +4,8 @@
/* Assign these to get command completion, see cli.c for /* Assign these to get command completion, see cli.c for
* example usage. */ * example usage. */
char *(*rl_complete)(char *token, int *match); extern char *(*rl_complete)(char *token, int *match);
int (*rl_list_possib)(char *token, char ***av); extern int (*rl_list_possib)(char *token, char ***av);
/* /*
** For compatibility with FSF readline. ** For compatibility with FSF readline.

View File

@@ -5,32 +5,32 @@
#include "editline.h" #include "editline.h"
#if defined(NEED_STRDUP) #if defined(NEED_STRDUP)
/* /*
** Return an allocated copy of a string. ** Return an allocated copy of a string.
*/ */
char * char *
strdup(p) strdup(p)
char *p; char *p;
{ {
char *new; char *new;
if ((new = NEW(char, strlen(p) + 1)) != NULL) if ((new = NEW(char, strlen(p) + 1)) != NULL)
(void)strcpy(new, p); (void)strcpy(new, p);
return new; return new;
} }
#endif /* defined(NEED_STRDUP) */ #endif /* defined(NEED_STRDUP) */
/* /*
** strcmp-like sorting predicate for qsort. ** strcmp-like sorting predicate for qsort.
*/ */
STATIC int static int
compare(p1, p2) compare(p1, p2)
CONST void *p1; CONST void *p1;
CONST void *p2; CONST void *p2;
{ {
CONST char **v1; CONST char **v1;
CONST char **v2; CONST char **v2;
v1 = (CONST char **)p1; v1 = (CONST char **)p1;
v2 = (CONST char **)p2; v2 = (CONST char **)p2;
@@ -41,25 +41,25 @@ compare(p1, p2)
** Fill in *avp with an array of names that match file, up to its length. ** Fill in *avp with an array of names that match file, up to its length.
** Ignore . and .. . ** Ignore . and .. .
*/ */
STATIC int static int
FindMatches(dir, file, avp) FindMatches(dir, file, avp)
char *dir; char *dir;
char *file; char *file;
char ***avp; char ***avp;
{ {
char **av; char **av;
char **new; char **new;
char *p; char *p;
DIR *dp; DIR *dp;
DIRENTRY *ep; DIRENTRY *ep;
SIZE_T ac; SIZE_T ac;
SIZE_T len; SIZE_T len;
SIZE_T choices; SIZE_T choices;
SIZE_T total; SIZE_T total;
#define MAX_TOTAL (256 << sizeof(char *)) #define MAX_TOTAL (256 << sizeof(char *))
if ((dp = opendir(dir)) == NULL) if ((dp = opendir(dir)) == NULL)
return 0; return 0;
av = NULL; av = NULL;
ac = 0; ac = 0;
@@ -67,56 +67,56 @@ FindMatches(dir, file, avp)
choices = 0; choices = 0;
total = 0; total = 0;
while ((ep = readdir(dp)) != NULL) { while ((ep = readdir(dp)) != NULL) {
p = ep->d_name; p = ep->d_name;
if (p[0] == '.' && (p[1] == '\0' || (p[1] == '.' && p[2] == '\0'))) if (p[0] == '.' && (p[1] == '\0' || (p[1] == '.' && p[2] == '\0')))
continue; continue;
if (len && strncmp(p, file, len) != 0) if (len && strncmp(p, file, len) != 0)
continue; continue;
choices++; choices++;
if ((total += strlen(p)) > MAX_TOTAL) { if ((total += strlen(p)) > MAX_TOTAL) {
/* This is a bit too much. */ /* This is a bit too much. */
while (ac > 0) DISPOSE(av[--ac]); while (ac > 0) DISPOSE(av[--ac]);
continue; continue;
} }
if ((ac % MEM_INC) == 0) { if ((ac % MEM_INC) == 0) {
if ((new = NEW(char*, ac + MEM_INC)) == NULL) { if ((new = NEW(char*, ac + MEM_INC)) == NULL) {
total = 0; total = 0;
break; break;
} }
if (ac) { if (ac) {
COPYFROMTO(new, av, ac * sizeof (char **)); COPYFROMTO(new, av, ac * sizeof (char **));
DISPOSE(av); DISPOSE(av);
} }
*avp = av = new; *avp = av = new;
} }
if ((av[ac] = strdup(p)) == NULL) { if ((av[ac] = strdup(p)) == NULL) {
if (ac == 0) if (ac == 0)
DISPOSE(av); DISPOSE(av);
total = 0; total = 0;
break; break;
} }
ac++; ac++;
} }
/* Clean up and return. */ /* Clean up and return. */
(void)closedir(dp); (void)closedir(dp);
if (total > MAX_TOTAL) { if (total > MAX_TOTAL) {
char many[sizeof(total) * 3]; char many[sizeof(total) * 3];
p = many + sizeof(many); p = many + sizeof(many);
*--p = '\0'; *--p = '\0';
while (choices > 0) { while (choices > 0) {
*--p = '0' + choices % 10; *--p = '0' + choices % 10;
choices /= 10; choices /= 10;
} }
while (p > many + sizeof(many) - 8) *--p = ' '; while (p > many + sizeof(many) - 8) *--p = ' ';
if ((p = strdup(p)) != NULL) av[ac++] = p; if ((p = strdup(p)) != NULL) av[ac++] = p;
if ((p = strdup("choices")) != NULL) av[ac++] = p; if ((p = strdup("choices")) != NULL) av[ac++] = p;
} else { } else {
if (ac) if (ac)
qsort(av, ac, sizeof (char **), compare); qsort(av, ac, sizeof (char **), compare);
} }
return ac; return ac;
} }
@@ -124,32 +124,32 @@ FindMatches(dir, file, avp)
/* /*
** Split a pathname into allocated directory and trailing filename parts. ** Split a pathname into allocated directory and trailing filename parts.
*/ */
STATIC int static int
SplitPath(path, dirpart, filepart) SplitPath(path, dirpart, filepart)
char *path; char *path;
char **dirpart; char **dirpart;
char **filepart; char **filepart;
{ {
static char DOT[] = "."; static char DOT[] = ".";
char *dpart; char *dpart;
char *fpart; char *fpart;
if ((fpart = strrchr(path, '/')) == NULL) { if ((fpart = strrchr(path, '/')) == NULL) {
if ((dpart = strdup(DOT)) == NULL) if ((dpart = strdup(DOT)) == NULL)
return -1; return -1;
if ((fpart = strdup(path)) == NULL) { if ((fpart = strdup(path)) == NULL) {
DISPOSE(dpart); DISPOSE(dpart);
return -1; return -1;
} }
} }
else { else {
if ((dpart = strdup(path)) == NULL) if ((dpart = strdup(path)) == NULL)
return -1; return -1;
dpart[fpart - path + 1] = '\0'; dpart[fpart - path + 1] = '\0';
if ((fpart = strdup(++fpart)) == NULL) { if ((fpart = strdup(++fpart)) == NULL) {
DISPOSE(dpart); DISPOSE(dpart);
return -1; return -1;
} }
} }
*dirpart = dpart; *dirpart = dpart;
*filepart = fpart; *filepart = fpart;
@@ -162,69 +162,69 @@ SplitPath(path, dirpart, filepart)
*/ */
char * char *
default_rl_complete(pathname, unique) default_rl_complete(pathname, unique)
char *pathname; char *pathname;
int *unique; int *unique;
{ {
char **av; char **av;
char *dir; char *dir;
char *file; char *file;
char *new; char *new;
char *p; char *p;
SIZE_T ac; SIZE_T ac;
SIZE_T end; SIZE_T end;
SIZE_T i; SIZE_T i;
SIZE_T j; SIZE_T j;
SIZE_T len; SIZE_T len;
if (SplitPath(pathname, &dir, &file) < 0) if (SplitPath(pathname, &dir, &file) < 0)
return NULL; return NULL;
if ((ac = FindMatches(dir, file, &av)) == 0) { if ((ac = FindMatches(dir, file, &av)) == 0) {
DISPOSE(dir); DISPOSE(dir);
DISPOSE(file); DISPOSE(file);
return NULL; return NULL;
} }
p = NULL; p = NULL;
len = strlen(file); len = strlen(file);
if (ac == 1) { if (ac == 1) {
/* Exactly one match -- finish it off. */ /* Exactly one match -- finish it off. */
*unique = 1; *unique = 1;
j = strlen(av[0]) - len + 2; j = strlen(av[0]) - len + 2;
if ((p = NEW(char, j + 1)) != NULL) { if ((p = NEW(char, j + 1)) != NULL) {
COPYFROMTO(p, av[0] + len, j); COPYFROMTO(p, av[0] + len, j);
if ((new = NEW(char, strlen(dir) + strlen(av[0]) + 2)) != NULL) { if ((new = NEW(char, strlen(dir) + strlen(av[0]) + 2)) != NULL) {
(void)strcpy(new, dir); (void)strcpy(new, dir);
(void)strcat(new, "/"); (void)strcat(new, "/");
(void)strcat(new, av[0]); (void)strcat(new, av[0]);
rl_add_slash(new, p); rl_add_slash(new, p);
DISPOSE(new); DISPOSE(new);
} }
} }
} }
else { else {
*unique = 0; *unique = 0;
if (len) { if (len) {
/* Find largest matching substring. */ /* Find largest matching substring. */
for (i = len, end = strlen(av[0]); i < end; i++) for (i = len, end = strlen(av[0]); i < end; i++)
for (j = 1; j < ac; j++) for (j = 1; j < ac; j++)
if (av[0][i] != av[j][i]) if (av[0][i] != av[j][i])
goto breakout; goto breakout;
breakout: breakout:
if (i > len) { if (i > len) {
j = i - len + 1; j = i - len + 1;
if ((p = NEW(char, j)) != NULL) { if ((p = NEW(char, j)) != NULL) {
COPYFROMTO(p, av[0] + len, j); COPYFROMTO(p, av[0] + len, j);
p[j - 1] = '\0'; p[j - 1] = '\0';
} }
} }
} }
} }
/* Clean up and return. */ /* Clean up and return. */
DISPOSE(dir); DISPOSE(dir);
DISPOSE(file); DISPOSE(file);
for (i = 0; i < ac; i++) for (i = 0; i < ac; i++)
DISPOSE(av[i]); DISPOSE(av[i]);
DISPOSE(av); DISPOSE(av);
return p; return p;
} }
@@ -234,15 +234,15 @@ default_rl_complete(pathname, unique)
*/ */
int int
default_rl_list_possib(pathname, avp) default_rl_list_possib(pathname, avp)
char *pathname; char *pathname;
char ***avp; char ***avp;
{ {
char *dir; char *dir;
char *file; char *file;
int ac; int ac;
if (SplitPath(pathname, &dir, &file) < 0) if (SplitPath(pathname, &dir, &file) < 0)
return 0; return 0;
ac = FindMatches(dir, file, avp); ac = FindMatches(dir, file, avp);
DISPOSE(dir); DISPOSE(dir);
DISPOSE(file); DISPOSE(file);

File diff suppressed because it is too large Load Diff

View File

@@ -35,21 +35,6 @@
typedef unsigned char CHAR; typedef unsigned char CHAR;
#if defined(HIDE)
#define STATIC static
#else
#define STATIC /* NULL */
#endif /* !defined(HIDE) */
#if !defined(CONST)
#if defined(__STDC__)
#define CONST const
#else
#define CONST
#endif /* defined(__STDC__) */
#endif /* !defined(CONST) */
#define MEM_INC 64 #define MEM_INC 64
#define SCREEN_INC 256 #define SCREEN_INC 256

View File

@@ -4,69 +4,69 @@
*/ */
#include "editline.h" #include "editline.h"
#if defined(HAVE_TCGETATTR) #if defined(HAVE_TCGETATTR)
#include <termios.h> #include <termios.h>
void void
rl_ttyset(Reset) rl_ttyset(Reset)
int Reset; int Reset;
{ {
static struct termios old; static struct termios old;
struct termios new; struct termios new;
if (Reset == 0) { if (Reset == 0) {
if (tcgetattr(0, &old) < 0) perror("tcgetattr"); if (tcgetattr(0, &old) < 0) perror("tcgetattr");
rl_erase = old.c_cc[VERASE]; rl_erase = old.c_cc[VERASE];
rl_kill = old.c_cc[VKILL]; rl_kill = old.c_cc[VKILL];
rl_eof = old.c_cc[VEOF]; rl_eof = old.c_cc[VEOF];
rl_intr = old.c_cc[VINTR]; rl_intr = old.c_cc[VINTR];
rl_quit = old.c_cc[VQUIT]; rl_quit = old.c_cc[VQUIT];
#if defined(DO_SIGTSTP) #if defined(DO_SIGTSTP)
rl_susp = old.c_cc[VSUSP]; rl_susp = old.c_cc[VSUSP];
#endif /* defined(DO_SIGTSTP) */ #endif /* defined(DO_SIGTSTP) */
new = old; new = old;
new.c_lflag &= ~(ECHO | ICANON | ISIG); new.c_lflag &= ~(ECHO | ICANON | ISIG);
new.c_iflag &= ~(ISTRIP | INPCK); new.c_iflag &= ~(ISTRIP | INPCK);
new.c_cc[VMIN] = 1; new.c_cc[VMIN] = 1;
new.c_cc[VTIME] = 0; new.c_cc[VTIME] = 0;
if (tcsetattr(0, TCSADRAIN, &new) < 0) perror("tcsetattr"); if (tcsetattr(0, TCSADRAIN, &new) < 0) perror("tcsetattr");
} }
else else
(void)tcsetattr(0, TCSADRAIN, &old); (void)tcsetattr(0, TCSADRAIN, &old);
} }
#else #else
#if defined(HAVE_TERMIO_H) #if defined(HAVE_TERMIO_H)
#include <termio.h> #include <termio.h>
void void
rl_ttyset(Reset) rl_ttyset(Reset)
int Reset; int Reset;
{ {
static struct termio old; static struct termio old;
struct termio new; struct termio new;
if (Reset == 0) { if (Reset == 0) {
(void)ioctl(0, TCGETA, &old); (void)ioctl(0, TCGETA, &old);
rl_erase = old.c_cc[VERASE]; rl_erase = old.c_cc[VERASE];
rl_kill = old.c_cc[VKILL]; rl_kill = old.c_cc[VKILL];
rl_eof = old.c_cc[VEOF]; rl_eof = old.c_cc[VEOF];
rl_intr = old.c_cc[VINTR]; rl_intr = old.c_cc[VINTR];
rl_quit = old.c_cc[VQUIT]; rl_quit = old.c_cc[VQUIT];
#if defined(DO_SIGTSTP) #if defined(DO_SIGTSTP)
rl_susp = old.c_cc[VSUSP]; rl_susp = old.c_cc[VSUSP];
#endif /* defined(DO_SIGTSTP) */ #endif /* defined(DO_SIGTSTP) */
new = old; new = old;
new.c_lflag &= ~(ECHO | ICANON | ISIG); new.c_lflag &= ~(ECHO | ICANON | ISIG);
new.c_iflag &= ~(ISTRIP | INPCK); new.c_iflag &= ~(ISTRIP | INPCK);
new.c_cc[VMIN] = 1; new.c_cc[VMIN] = 1;
new.c_cc[VTIME] = 0; new.c_cc[VTIME] = 0;
(void)ioctl(0, TCSETAW, &new); (void)ioctl(0, TCSETAW, &new);
} }
else else
(void)ioctl(0, TCSETAW, &old); (void)ioctl(0, TCSETAW, &old);
} }
#else #else
@@ -74,61 +74,61 @@ rl_ttyset(Reset)
void void
rl_ttyset(Reset) rl_ttyset(Reset)
int Reset; int Reset;
{ {
static struct sgttyb old_sgttyb; static struct sgttyb old_sgttyb;
static struct tchars old_tchars; static struct tchars old_tchars;
struct sgttyb new_sgttyb; struct sgttyb new_sgttyb;
struct tchars new_tchars; struct tchars new_tchars;
#if defined(DO_SIGTSTP) #if defined(DO_SIGTSTP)
struct ltchars old_ltchars; struct ltchars old_ltchars;
#endif /* defined(DO_SIGTSTP) */ #endif /* defined(DO_SIGTSTP) */
if (Reset == 0) { if (Reset == 0) {
(void)ioctl(0, TIOCGETP, &old_sgttyb); (void)ioctl(0, TIOCGETP, &old_sgttyb);
rl_erase = old_sgttyb.sg_erase; rl_erase = old_sgttyb.sg_erase;
rl_kill = old_sgttyb.sg_kill; rl_kill = old_sgttyb.sg_kill;
(void)ioctl(0, TIOCGETC, &old_tchars); (void)ioctl(0, TIOCGETC, &old_tchars);
rl_eof = old_tchars.t_eofc; rl_eof = old_tchars.t_eofc;
rl_intr = old_tchars.t_intrc; rl_intr = old_tchars.t_intrc;
rl_quit = old_tchars.t_quitc; rl_quit = old_tchars.t_quitc;
#if defined(DO_SIGTSTP) #if defined(DO_SIGTSTP)
(void)ioctl(0, TIOCGLTC, &old_ltchars); (void)ioctl(0, TIOCGLTC, &old_ltchars);
rl_susp = old_ltchars.t_suspc; rl_susp = old_ltchars.t_suspc;
#endif /* defined(DO_SIGTSTP) */ #endif /* defined(DO_SIGTSTP) */
new_sgttyb = old_sgttyb; new_sgttyb = old_sgttyb;
new_sgttyb.sg_flags &= ~ECHO; new_sgttyb.sg_flags &= ~ECHO;
new_sgttyb.sg_flags |= RAW; new_sgttyb.sg_flags |= RAW;
#if defined(PASS8) #if defined(PASS8)
new_sgttyb.sg_flags |= PASS8; new_sgttyb.sg_flags |= PASS8;
#endif /* defined(PASS8) */ #endif /* defined(PASS8) */
(void)ioctl(0, TIOCSETP, &new_sgttyb); (void)ioctl(0, TIOCSETP, &new_sgttyb);
new_tchars = old_tchars; new_tchars = old_tchars;
new_tchars.t_intrc = -1; new_tchars.t_intrc = -1;
new_tchars.t_quitc = -1; new_tchars.t_quitc = -1;
(void)ioctl(0, TIOCSETC, &new_tchars); (void)ioctl(0, TIOCSETC, &new_tchars);
} }
else { else {
(void)ioctl(0, TIOCSETP, &old_sgttyb); (void)ioctl(0, TIOCSETP, &old_sgttyb);
(void)ioctl(0, TIOCSETC, &old_tchars); (void)ioctl(0, TIOCSETC, &old_tchars);
} }
} }
#endif /* defined(HAVE_TERMIO_H) */ #endif /* defined(HAVE_TERMIO_H) */
#endif /* defined(HAVE_TCGETATTR) */ #endif /* defined(HAVE_TCGETATTR) */
void void
rl_add_slash(path, p) rl_add_slash(path, p)
char *path; char *path;
char *p; char *p;
{ {
struct stat Sb; struct stat Sb;
if (stat(path, &Sb) >= 0) if (stat(path, &Sb) >= 0)
(void)strcat(p, S_ISDIR(Sb.st_mode) ? "/" : " "); (void)strcat(p, S_ISDIR(Sb.st_mode) ? "/" : " ");
} }
/* /*