nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit ca86045918ee48e39905dc264eeed2354945e52e
parent cab33779ae237720cfeeeb32c084a6b16a68a1a0
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Tue, 21 Feb 2017 17:04:48 -0500

handle builds on systems without termios.h

Windows doesn't have this, so add some build time checks.

Diffstat:
Mconfigure.ac | 2+-
Msrc/nano.c | 17+++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac @@ -57,7 +57,7 @@ AC_DEFINE_DIR([PKGDATADIR], [pkgdatadir], [Where data are placed to.]) dnl Checks for header files. -AC_CHECK_HEADERS(libintl.h limits.h pwd.h sys/param.h) +AC_CHECK_HEADERS(libintl.h limits.h pwd.h termios.h sys/param.h) dnl Checks for options. diff --git a/src/nano.c b/src/nano.c @@ -34,7 +34,9 @@ #ifdef ENABLE_UTF8 #include <langinfo.h> #endif +#ifdef HAVE_TERMIOS_H #include <termios.h> +#endif #include <getopt.h> #ifndef NANO_TINY #include <sys/ioctl.h> @@ -48,7 +50,12 @@ static int oldinterval = -1; static bool no_rcfiles = FALSE; /* Should we ignore all rcfiles? */ #endif +#ifdef HAVE_TERMIOS_H static struct termios oldterm; +#else +# define tcsetattr(...) +# define tcgetattr(...) +#endif /* The user's original terminal settings. */ static struct sigaction act; /* Used to set up all our fun signal handlers. */ @@ -1417,23 +1424,27 @@ void do_toggle_void(void) * settings. */ void disable_extended_io(void) { +#ifdef HAVE_TERMIOS_H struct termios term; tcgetattr(0, &term); term.c_lflag &= ~IEXTEN; term.c_oflag &= ~OPOST; tcsetattr(0, TCSANOW, &term); +#endif } /* Disable interpretation of the special control keys in our terminal * settings. */ void disable_signals(void) { +#ifdef HAVE_TERMIOS_H struct termios term; tcgetattr(0, &term); term.c_lflag &= ~ISIG; tcsetattr(0, TCSANOW, &term); +#endif } #ifndef NANO_TINY @@ -1441,11 +1452,13 @@ void disable_signals(void) * settings. */ void enable_signals(void) { +#ifdef HAVE_TERMIOS_H struct termios term; tcgetattr(0, &term); term.c_lflag |= ISIG; tcsetattr(0, TCSANOW, &term); +#endif } #endif @@ -1453,22 +1466,26 @@ void enable_signals(void) * settings. */ void disable_flow_control(void) { +#ifdef HAVE_TERMIOS_H struct termios term; tcgetattr(0, &term); term.c_iflag &= ~IXON; tcsetattr(0, TCSANOW, &term); +#endif } /* Enable interpretation of the flow control characters in our terminal * settings. */ void enable_flow_control(void) { +#ifdef HAVE_TERMIOS_H struct termios term; tcgetattr(0, &term); term.c_iflag |= IXON; tcsetattr(0, TCSANOW, &term); +#endif } /* Set up the terminal state. Put the terminal in raw mode (read one