On Fri, Jan 11, 2002 at 09:42:35AM +0100, heiko wrote:
On Fri, Jan 11, 2002 at 09:24:37AM +0100, Matthias Petermann wrote:
den Teil der mir noch verstaendlich war. stty ermittelt die Groesse des Terminals per getenv aus der Umgebung. Allerdings: COLUMNS und LINES sind ja eigentlich nicht exportiert. Wie schafft es stty, auf die Umgebung des Elternprozesses zuzu- greifen?
Sicher? Bei mir sind beide Variablen nicht gesetzt und trotzdem weiß stty, wie groß das Fenster ist.
Bei mir sieht das etwa so aus: (in stty.c) Ich denke mal, daß Linux TIOCGWINSZ definiert hat, denn nur, wenn's nicht ist, wird getenv() genutzt. In stty.c:screen_columns() findest Du, wenn Du genau hinsiehst, etwa folgendes:
int screen_columns(void) { #ifdef TIOCGWINSZ ... ... if (get_win_size(...)) return win.wins_col; #endif ... ... ... = getenv("COLUMNS"); }
Also wird der erste Teil probiert, wenn TIOCGWINSZ definiert ist, und wenn's dann trotzdem schief ging, wird nach der Umgebungs-Variable COLUMNS geschaut.
...
Und hier die Funktion, die Du wahrscheinlich gesucht hast (auch aus stty.c):
static int get_win_size (int fd, struct winsize *win) { int err = ioctl (fd, TIOCGWINSZ, (char *) win); return err; }
...
Best regards from Dresden Viele Gruesse aus Dresden Heiko Schlittermann