mirror of
https://github.com/lxsang/ant-http
synced 2024-12-26 16:58:22 +01:00
allow terminal resize
This commit is contained in:
parent
a27b743c81
commit
22fa1a6338
@ -93,10 +93,49 @@ void handler(int cl, const char* m, const char* rqp, dictionary rq)
|
|||||||
else if(h->opcode == WS_TEXT)
|
else if(h->opcode == WS_TEXT)
|
||||||
{
|
{
|
||||||
int l;
|
int l;
|
||||||
|
char * tok = NULL;
|
||||||
|
char* tok1 = NULL;
|
||||||
while((l = ws_read_data(cl,h,sizeof(buff),buff)) > 0)
|
while((l = ws_read_data(cl,h,sizeof(buff),buff)) > 0)
|
||||||
{
|
{
|
||||||
//buff[l] = '\0';
|
char c = buff[0];
|
||||||
write(fdm, buff, l);
|
switch(c)
|
||||||
|
{
|
||||||
|
case 'i': // input from user
|
||||||
|
write(fdm, buff+1, l-1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 's': // terminal resize event
|
||||||
|
buff[l] = '\0';
|
||||||
|
tok = strdup(buff+1);
|
||||||
|
tok1 = strsep(&tok,":");
|
||||||
|
if(tok != NULL && tok1 != NULL)
|
||||||
|
{
|
||||||
|
int cols = atoi(tok1);
|
||||||
|
int rows = atoi(tok);
|
||||||
|
//free(tok);
|
||||||
|
struct winsize win = { 0, 0, 0, 0 };
|
||||||
|
if (ioctl(fdm, TIOCGWINSZ, &win) != 0) {
|
||||||
|
if (errno != EINVAL) {
|
||||||
|
printf("Exit now \n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
memset(&win, 0, sizeof(win));
|
||||||
|
}
|
||||||
|
//printf("Setting winsize\n");
|
||||||
|
if (rows >= 0)
|
||||||
|
win.ws_row = rows;
|
||||||
|
if (cols >= 0)
|
||||||
|
win.ws_col = cols;
|
||||||
|
|
||||||
|
if (ioctl(fdm, TIOCSWINSZ, (char *) &win) != 0)
|
||||||
|
printf("Cannot set winsize\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
//ws_t(cl,buff);
|
//ws_t(cl,buff);
|
||||||
}
|
}
|
||||||
/*if(l == -1)
|
/*if(l == -1)
|
||||||
@ -188,4 +227,26 @@ void handler(int cl, const char* m, const char* rqp, dictionary rq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
LOG("%s\n","All processes exit");
|
LOG("%s\n","All processes exit");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
static void set_window_size(int rows, int cols)
|
||||||
|
{
|
||||||
|
struct winsize win = { 0, 0, 0, 0 };
|
||||||
|
if (ioctl(STDIN_FILENO, TIOCGWINSZ, &win)) {
|
||||||
|
if (errno != EINVAL) {
|
||||||
|
goto bail;
|
||||||
|
}
|
||||||
|
memset(&win, 0, sizeof(win));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rows >= 0)
|
||||||
|
win.ws_row = rows;
|
||||||
|
if (cols >= 0)
|
||||||
|
win.ws_col = cols;
|
||||||
|
|
||||||
|
if (ioctl(STDIN_FILENO, TIOCSWINSZ, (char *) &win))
|
||||||
|
bail:
|
||||||
|
perror_on_device("%s");
|
||||||
|
}
|
||||||
|
*/
|
Loading…
Reference in New Issue
Block a user