source: MondoRescue/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, 18 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
RevLine 
[821]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.