Contents of /trunk/mkinitrd-magellan/busybox/console-tools/resize.c
Parent Directory | Revision Log
Revision 532 -
(show annotations)
(download)
Sat Sep 1 22:45:15 2007 UTC (17 years ago) by niro
File MIME type: text/plain
File size: 1004 byte(s)
Sat Sep 1 22:45:15 2007 UTC (17 years ago) by niro
File MIME type: text/plain
File size: 1004 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd
1 | /* vi: set sw=4 ts=4: */ |
2 | /* |
3 | * resize - set terminal width and height. |
4 | * |
5 | * Copyright 2006 Bernhard Fischer |
6 | * |
7 | * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. |
8 | */ |
9 | /* no options, no getopt */ |
10 | #include "busybox.h" |
11 | |
12 | int resize_main(int argc, char **argv) |
13 | { |
14 | struct termios old, new; |
15 | struct winsize w = {0,0,0,0}; |
16 | int ret; |
17 | |
18 | tcgetattr(STDOUT_FILENO, &old); /* fiddle echo */ |
19 | new = old; |
20 | new.c_cflag |= (CLOCAL | CREAD); |
21 | new.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); |
22 | tcsetattr(STDOUT_FILENO, TCSANOW, &new); |
23 | /* save_cursor_pos 7 |
24 | * scroll_whole_screen [r |
25 | * put_cursor_waaaay_off [$x;$yH |
26 | * get_cursor_pos [6n |
27 | * restore_cursor_pos 8 |
28 | */ |
29 | printf("\0337\033[r\033[999;999H\033[6n"); |
30 | scanf("\033[%hu;%huR", &w.ws_row, &w.ws_col); |
31 | ret = ioctl(STDOUT_FILENO, TIOCSWINSZ, &w); |
32 | printf("\0338"); |
33 | tcsetattr(STDOUT_FILENO, TCSANOW, &old); |
34 | if (ENABLE_FEATURE_RESIZE_PRINT) |
35 | printf("COLUMNS=%d;LINES=%d;export COLUMNS LINES;\n", |
36 | w.ws_col, w.ws_row); |
37 | return ret; |
38 | } |