- printf("\0337\033[r\033[999;999H\033[6n");
- scanf("\033[%hu;%huR", &w.ws_row, &w.ws_col);
- ret = ioctl(STDOUT_FILENO, TIOCSWINSZ, &w);
- printf("\0338");
- tcsetattr(STDOUT_FILENO, TCSANOW, &old);
+ fprintf(stderr, ESC"7" ESC"[r" ESC"[999;999H" ESC"[6n");
+ alarm(3); /* Just in case terminal won't answer */
+ scanf(ESC"[%hu;%huR", &w.ws_row, &w.ws_col);
+ fprintf(stderr, ESC"8");
+
+ /* BTW, other versions of resize recalculate w.ws_xpixel, ws.ws_ypixel
+ * by calculating character cell HxW from old values
+ * (gotten via TIOCGWINSZ) and recomputing *pixel values */
+ ret = ioctl(STDERR_FILENO, TIOCSWINSZ, &w);
+
+ tcsetattr(STDERR_FILENO, TCSANOW, old_termios_p);
+