source: branches/stable/mindi-busybox/libbb/get_terminal_width_height.c @ 821

Last change on this file since 821 was 821, checked in by Bruno Cornec, 14 years ago

Addition of busybox 1.2.1 as a mindi-busybox new package
This should avoid delivering binary files in mindi not built there (Fedora and Debian are quite serious about that)

File size: 837 bytes
Line 
1/* vi: set sw=4 ts=4: */
2/*
3 * Determine the width and height of the terminal.
4 *
5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
6 *
7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
8 */
9
10#include <stdio.h>
11#include <errno.h>
12#include <fcntl.h>
13#include <unistd.h>
14#include <unistd.h>
15#include <termios.h>
16#include <sys/ioctl.h>
17#include "libbb.h"
18
19/* It is perfectly ok to pass in a NULL for either width or for
20 * height, in which case that value will not be set.  */
21int get_terminal_width_height(int fd, int *width, int *height)
22{
23    struct winsize win = { 0, 0, 0, 0 };
24    int ret = ioctl(fd, TIOCGWINSZ, &win);
25    if (win.ws_row <= 1) win.ws_row = 24;
26    if (win.ws_col <= 1) win.ws_col = 80;
27    if (height) *height = (int) win.ws_row;
28    if (width) *width = (int) win.ws_col;
29
30    return ret;
31}
Note: See TracBrowser for help on using the repository browser.