summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
56561c0)
For the upcoming single key mode of the i9e subsystem, we need to
know the width of the terminal.
This makes this information available to all functions in interactive.c
via the i9e_private structure. The new num_columns variable of this
structure is updated whenever i9e_signal_dispatch() is called with
sig_num equal to SIGWINCH.
struct i9e_private {
struct i9e_client_info *ici;
FILE *stderr_stream;
struct i9e_private {
struct i9e_client_info *ici;
FILE *stderr_stream;
char empty_line[1000];
struct task task;
struct btr_node *stdout_btrn;
char empty_line[1000];
struct task task;
struct btr_node *stdout_btrn;
{
struct winsize w;
int ret = ioctl(i9ep->ici->fds[2], TIOCGWINSZ, (char *)&w);
{
struct winsize w;
int ret = ioctl(i9ep->ici->fds[2], TIOCGWINSZ, (char *)&w);
if (ret >= 0) {
assert(w.ws_col < sizeof(i9ep->empty_line));
if (ret >= 0) {
assert(w.ws_col < sizeof(i9ep->empty_line));
- num_columns = w.ws_col;
- }
- memset(i9ep->empty_line, ' ', num_columns);
- i9ep->empty_line[num_columns] = '\0';
+ i9ep->num_columns = w.ws_col;
+ } else
+ i9ep->num_columns = 80;
+
+ memset(i9ep->empty_line, ' ', i9ep->num_columns);
+ i9ep->empty_line[i9ep->num_columns] = '\0';
*/
void i9e_signal_dispatch(int sig_num)
{
*/
void i9e_signal_dispatch(int sig_num)
{
+ if (sig_num == SIGWINCH)
+ return update_winsize();
if (sig_num == SIGINT) {
fprintf(i9ep->stderr_stream, "\n");
rl_replace_line ("", false /* clear_undo */);
if (sig_num == SIGINT) {
fprintf(i9ep->stderr_stream, "\n");
rl_replace_line ("", false /* clear_undo */);