1*4e0c81c5SKonstantin Belousov.\"- 2*4e0c81c5SKonstantin Belousov.\" Copyright (c) 2020 Soumendra Ganguly <soumendraganguly@gmail.com> 3*4e0c81c5SKonstantin Belousov.\" 4*4e0c81c5SKonstantin Belousov.\" Redistribution and use in source and binary forms, with or without 5*4e0c81c5SKonstantin Belousov.\" modification, are permitted provided that the following conditions 6*4e0c81c5SKonstantin Belousov.\" are met: 7*4e0c81c5SKonstantin Belousov.\" 1. Redistributions of source code must retain the above copyright 8*4e0c81c5SKonstantin Belousov.\" notice, this list of conditions and the following disclaimer. 9*4e0c81c5SKonstantin Belousov.\" 2. Redistributions in binary form must reproduce the above copyright 10*4e0c81c5SKonstantin Belousov.\" notice, this list of conditions and the following disclaimer in the 11*4e0c81c5SKonstantin Belousov.\" documentation and/or other materials provided with the distribution. 12*4e0c81c5SKonstantin Belousov.\" 13*4e0c81c5SKonstantin Belousov.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY 14*4e0c81c5SKonstantin Belousov.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15*4e0c81c5SKonstantin Belousov.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16*4e0c81c5SKonstantin Belousov.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE 17*4e0c81c5SKonstantin Belousov.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18*4e0c81c5SKonstantin Belousov.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19*4e0c81c5SKonstantin Belousov.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 20*4e0c81c5SKonstantin Belousov.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 21*4e0c81c5SKonstantin Belousov.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 22*4e0c81c5SKonstantin Belousov.\" OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 23*4e0c81c5SKonstantin Belousov.\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24*4e0c81c5SKonstantin Belousov.\" 25*4e0c81c5SKonstantin Belousov.\" Portions of this text are reprinted and reproduced in electronic form 26*4e0c81c5SKonstantin Belousov.\" from P1003.1-202x, Draft 1.1, Draft Standard for Information Technology -- 27*4e0c81c5SKonstantin Belousov.\" Portable Operating System Interface (POSIX), The Open Group Base 28*4e0c81c5SKonstantin Belousov.\" Specifications Issue 8, Copyright (C) 2020 by the Institute of 29*4e0c81c5SKonstantin Belousov.\" Electrical and Electronics Engineers, Inc and The Open Group. In the 30*4e0c81c5SKonstantin Belousov.\" event of any discrepancy between this version and the original IEEE and 31*4e0c81c5SKonstantin Belousov.\" The Open Group Standard, the original IEEE and The Open Group Standard is 32*4e0c81c5SKonstantin Belousov.\" the referee document. The original Standard can be obtained online at 33*4e0c81c5SKonstantin Belousov.\" http://www.opengroup.org/unix/online.html. 34*4e0c81c5SKonstantin Belousov.\" 35*4e0c81c5SKonstantin Belousov.Dd December 28, 2020 36*4e0c81c5SKonstantin Belousov.Dt TCGETWINSIZE 3 37*4e0c81c5SKonstantin Belousov.Os 38*4e0c81c5SKonstantin Belousov.Sh NAME 39*4e0c81c5SKonstantin Belousov.Nm tcgetwinsize , 40*4e0c81c5SKonstantin Belousov.Nm tcsetwinsize 41*4e0c81c5SKonstantin Belousov.Nd get, set the size of a terminal window 42*4e0c81c5SKonstantin Belousov.Sh LIBRARY 43*4e0c81c5SKonstantin Belousov.Lb libc 44*4e0c81c5SKonstantin Belousov.Sh SYNOPSIS 45*4e0c81c5SKonstantin Belousov.In termios.h 46*4e0c81c5SKonstantin Belousov.Bd -literal 47*4e0c81c5SKonstantin Belousovstruct winsize { 48*4e0c81c5SKonstantin Belousov unsigned short ws_row; /* number of rows, in characters */ 49*4e0c81c5SKonstantin Belousov unsigned short ws_col; /* number of columns, in characters */ 50*4e0c81c5SKonstantin Belousov unsigned short ws_xpixel; /* horizontal size, in pixels */ 51*4e0c81c5SKonstantin Belousov unsigned short ws_ypixel; /* vertical size, in pixels */ 52*4e0c81c5SKonstantin Belousov}; 53*4e0c81c5SKonstantin Belousov.Ed 54*4e0c81c5SKonstantin Belousov.Pp 55*4e0c81c5SKonstantin Belousov.Ft int 56*4e0c81c5SKonstantin Belousov.Fn tcgetwinsize "int fd" "struct winsize *w" 57*4e0c81c5SKonstantin Belousov.Ft int 58*4e0c81c5SKonstantin Belousov.Fn tcsetwinsize "int fd" "const struct winsize *w" 59*4e0c81c5SKonstantin Belousov.Sh DESCRIPTION 60*4e0c81c5SKonstantin BelousovThe 61*4e0c81c5SKonstantin Belousov.Fn tcgetwinsize 62*4e0c81c5SKonstantin Belousovfunction gets the terminal window size of the terminal of which 63*4e0c81c5SKonstantin Belousov.Fa fd 64*4e0c81c5SKonstantin Belousovis an open file descriptor and stores it in the 65*4e0c81c5SKonstantin Belousov.Vt winsize 66*4e0c81c5SKonstantin Belousovstructure of which 67*4e0c81c5SKonstantin Belousov.Fa w 68*4e0c81c5SKonstantin Belousovis a pointer. 69*4e0c81c5SKonstantin Belousov.Pp 70*4e0c81c5SKonstantin BelousovThe 71*4e0c81c5SKonstantin Belousov.Fn tcsetwinsize 72*4e0c81c5SKonstantin Belousovfunction sets the terminal window size of the terminal of which 73*4e0c81c5SKonstantin Belousov.Fa fd 74*4e0c81c5SKonstantin Belousovis an open file descriptor from the 75*4e0c81c5SKonstantin Belousov.Vt winsize 76*4e0c81c5SKonstantin Belousovstructure referenced by 77*4e0c81c5SKonstantin Belousov.Fa w . 78*4e0c81c5SKonstantin BelousovThe change occurs immediately. 79*4e0c81c5SKonstantin BelousovIf the terminal window size of the terminal 80*4e0c81c5SKonstantin Belousovis changed successfully to have a value that is different from the value that 81*4e0c81c5SKonstantin Belousovit had before the 82*4e0c81c5SKonstantin Belousov.Fn tcsetwinsize 83*4e0c81c5SKonstantin Belousovcall, then the 84*4e0c81c5SKonstantin Belousov.Dv SIGWINCH 85*4e0c81c5SKonstantin Belousovsignal is sent to all those members of the foreground process group of the 86*4e0c81c5SKonstantin Belousovterminal that have the terminal as their controlling terminal. 87*4e0c81c5SKonstantin Belousov.Pp 88*4e0c81c5SKonstantin BelousovThe above declaration of 89*4e0c81c5SKonstantin Belousov.Vt "struct winsize" 90*4e0c81c5SKonstantin Belousovmay not be literal. 91*4e0c81c5SKonstantin BelousovIt is provided only to list the accessible members. 92*4e0c81c5SKonstantin BelousovTherefore, before calling 93*4e0c81c5SKonstantin Belousov.Fn tcsetwinsize , 94*4e0c81c5SKonstantin Belousovthe members of the 95*4e0c81c5SKonstantin Belousov.Vt winsize 96*4e0c81c5SKonstantin Belousovstructure must be initialized by calling 97*4e0c81c5SKonstantin Belousov.Fn tcgetwinsize . 98*4e0c81c5SKonstantin BelousovThe information in a 99*4e0c81c5SKonstantin Belousov.Vt winsize 100*4e0c81c5SKonstantin Belousovstructure is stored by the kernel in order to provide a consistent interface, 101*4e0c81c5SKonstantin Belousovbut it is not used by the kernel. 102*4e0c81c5SKonstantin Belousov.Sh RETURN VALUE 103*4e0c81c5SKonstantin Belousov.Rv -std tcgetwinsize tcsetwinsize 104*4e0c81c5SKonstantin BelousovThe terminal window size remains unchanged if 105*4e0c81c5SKonstantin Belousov.Fn tcsetwinsize 106*4e0c81c5SKonstantin Belousovfails. 107*4e0c81c5SKonstantin Belousov.Pp 108*4e0c81c5SKonstantin Belousov.Sh ERRORS 109*4e0c81c5SKonstantin BelousovThe following are the possible failure conditions: 110*4e0c81c5SKonstantin Belousov.Bl -tag -width Er 111*4e0c81c5SKonstantin Belousov.It Bq Er EBADF 112*4e0c81c5SKonstantin BelousovThe 113*4e0c81c5SKonstantin Belousov.Fa fd 114*4e0c81c5SKonstantin Belousovargument to 115*4e0c81c5SKonstantin Belousov.Fn tcgetwinsize 116*4e0c81c5SKonstantin Belousovor to 117*4e0c81c5SKonstantin Belousov.Fn tcsetwinsize 118*4e0c81c5SKonstantin Belousovis not a valid file descriptor. 119*4e0c81c5SKonstantin Belousov.It Bq Er ENOTTY 120*4e0c81c5SKonstantin BelousovThe 121*4e0c81c5SKonstantin Belousov.Fa fd 122*4e0c81c5SKonstantin Belousovargument to 123*4e0c81c5SKonstantin Belousov.Fn tcgetwinsize 124*4e0c81c5SKonstantin Belousovor to 125*4e0c81c5SKonstantin Belousov.Fn tcsetwinsize 126*4e0c81c5SKonstantin Belousovis not associated with a character special device. 127*4e0c81c5SKonstantin Belousov.It Bq Er EINVAL 128*4e0c81c5SKonstantin BelousovThe 129*4e0c81c5SKonstantin Belousov.Fa w 130*4e0c81c5SKonstantin Belousovargument to 131*4e0c81c5SKonstantin Belousov.Fn tcsetwinsize 132*4e0c81c5SKonstantin Belousovis not valid. 133*4e0c81c5SKonstantin Belousov.It Bq Er EFAULT 134*4e0c81c5SKonstantin BelousovThe 135*4e0c81c5SKonstantin Belousov.Fa w 136*4e0c81c5SKonstantin Belousovargument to 137*4e0c81c5SKonstantin Belousov.Fn tcgetwinsize 138*4e0c81c5SKonstantin Belousovor to 139*4e0c81c5SKonstantin Belousov.Fn tcsetwinsize 140*4e0c81c5SKonstantin Belousovpoints outside the process's allocated address space. 141*4e0c81c5SKonstantin Belousov.El 142*4e0c81c5SKonstantin Belousov.Sh SEE ALSO 143*4e0c81c5SKonstantin Belousov.Xr stty 1 , 144*4e0c81c5SKonstantin Belousov.Xr ioctl 2 , 145*4e0c81c5SKonstantin Belousov.Xr sigaction 2 , 146*4e0c81c5SKonstantin Belousov.Xr termios 4 , 147*4e0c81c5SKonstantin Belousov.Xr tty 4 148*4e0c81c5SKonstantin Belousov.Sh STANDARDS 149*4e0c81c5SKonstantin BelousovThe 150*4e0c81c5SKonstantin Belousov.Fn tcgetwinsize 151*4e0c81c5SKonstantin Belousovand 152*4e0c81c5SKonstantin Belousov.Fn tcsetwinsize 153*4e0c81c5SKonstantin Belousovfunctions are expected to conform to 154*4e0c81c5SKonstantin Belousov.St -p1003.1 155*4e0c81c5SKonstantin BelousovBase Specifications, Issue 8. 156*4e0c81c5SKonstantin BelousovThe 157*4e0c81c5SKonstantin Belousov.Fa ws_xpixel 158*4e0c81c5SKonstantin Belousovand 159*4e0c81c5SKonstantin Belousov.Fa ws_ypixel 160*4e0c81c5SKonstantin Belousovmembers of 161*4e0c81c5SKonstantin Belousov.Vt "struct winsize" 162*4e0c81c5SKonstantin Belousovare FreeBSD extensions. 163