From: Karel Zak Date: Thu, 22 Nov 2012 13:26:41 +0000 (+0100) Subject: lib/ttyutils: create .c file X-Git-Tag: v2.23-rc1~506 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4e76adb0e1aed7b8a094d26adcef793b51ce252b;p=thirdparty%2Futil-linux.git lib/ttyutils: create .c file Well, now all tty stuff are incline functions in include/ttyutils.h. It's seems more elegant to create regular lib/ttyutils.c for libcommon and write test program. Signed-off-by: Karel Zak --- diff --git a/include/ttyutils.h b/include/ttyutils.h index 3c40d72a40..0bcae1493b 100644 --- a/include/ttyutils.h +++ b/include/ttyutils.h @@ -8,6 +8,9 @@ #include #endif +extern int get_terminal_width(void); + + #define UL_TTY_KEEPCFLAGS (1 << 1) #define UL_TTY_UTF8 (1 << 2) @@ -79,38 +82,6 @@ static inline void reset_virtual_console(struct termios *tp, int flags) tp->c_cc[VEOL2] = _POSIX_VDISABLE; } -static inline int get_terminal_width(void) -{ -#ifdef TIOCGSIZE - struct ttysize t_win; -#endif -#ifdef TIOCGWINSZ - struct winsize w_win; -#endif - const char *cp; - -#ifdef TIOCGSIZE - if (ioctl (0, TIOCGSIZE, &t_win) == 0) - return t_win.ts_cols; -#endif -#ifdef TIOCGWINSZ - if (ioctl (0, TIOCGWINSZ, &w_win) == 0) - return w_win.ws_col; -#endif - cp = getenv("COLUMNS"); - if (cp) { - char *end = NULL; - long c; - - errno = 0; - c = strtol(cp, &end, 10); - - if (errno == 0 && end && *end == '\0' && end > cp && - c > 0 && c <= INT_MAX) - return c; - } - return 0; -} #endif /* UTIL_LINUX_TTYUTILS_H */ diff --git a/lib/Makemodule.am b/lib/Makemodule.am index bfe6471b2d..59f89e93e4 100644 --- a/lib/Makemodule.am +++ b/lib/Makemodule.am @@ -23,6 +23,7 @@ libcommon_la_SOURCES = \ lib/sysfs.c \ lib/tt.c \ lib/wholedisk.c \ + lib/ttyutils.c \ lib/xgetpass.c if LINUX diff --git a/lib/ttyutils.c b/lib/ttyutils.c new file mode 100644 index 0000000000..d37c168ae0 --- /dev/null +++ b/lib/ttyutils.c @@ -0,0 +1,39 @@ + +#include + +#include "c.h" +#include "ttyutils.h" + +int get_terminal_width(void) +{ +#ifdef TIOCGSIZE + struct ttysize t_win; +#endif +#ifdef TIOCGWINSZ + struct winsize w_win; +#endif + const char *cp; + +#ifdef TIOCGSIZE + if (ioctl (0, TIOCGSIZE, &t_win) == 0) + return t_win.ts_cols; +#endif +#ifdef TIOCGWINSZ + if (ioctl (0, TIOCGWINSZ, &w_win) == 0) + return w_win.ws_col; +#endif + cp = getenv("COLUMNS"); + if (cp) { + char *end = NULL; + long c; + + errno = 0; + c = strtol(cp, &end, 10); + + if (errno == 0 && end && *end == '\0' && end > cp && + c > 0 && c <= INT_MAX) + return c; + } + return 0; +} +