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 <kzak@redhat.com>
This commit is contained in:
Karel Zak 2012-11-22 14:26:41 +01:00
parent 6f05970296
commit 4e76adb0e1
3 changed files with 43 additions and 32 deletions

View File

@ -8,6 +8,9 @@
#include <sys/ioctl.h>
#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 */

View File

@ -23,6 +23,7 @@ libcommon_la_SOURCES = \
lib/sysfs.c \
lib/tt.c \
lib/wholedisk.c \
lib/ttyutils.c \
lib/xgetpass.c
if LINUX

39
lib/ttyutils.c Normal file
View File

@ -0,0 +1,39 @@
#include <ctype.h>
#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;
}