No tengo ni la mas remota idea de que estoy haciendo mal:
Citar
samsaga2@ubuntu:~/tmp $ cat kk.c
main() {
printf("%s\n", getenv("COLUMNS"));
}
samsaga2@ubuntu:~/tmp $ gcc kk.c
samsaga2@ubuntu:~/tmp $ ./a.out
(null)
samsaga2@ubuntu:~/tmp $ echo $COLUMNS
80
Alguna pista?
Si, eso es que columns no es una variable de entorno exportada, por lo tanto, cuando arrancas el programa, no se encuentra en el entorno y sale null.
Pues es verdad, pues entonces no se como se lo hace ncurses para averiguar el tamaño del terminal.
Cita de: "samsaga2"Pues es verdad, pues entonces no se como se lo hace ncurses para averiguar el tamaño del terminal.
Luke, use the Source!
Cita de: "ZaelSiuS"Cita de: "samsaga2"Pues es verdad, pues entonces no se como se lo hace ncurses para averiguar el tamaño del terminal.
Luke, use the Source!
Eso hice, de donde crees que saque el getenv("COLUMNS"), lo que pasa es que el resto del codigo de la funcion no lo tengo muy claro.
Tu código tampoco me funciona en OS X. He estado buscando un rato por google, y lo que buscas lo puedes sacar del código fuente del comando resize:
http://www.ohse.de/uwe/software/resize.c.html( función get_term_size )
He compilado y ejecutado este programita cogiendo código de ahí, y me devuelve el ancho y alto correctos de mi terminal:
Citar#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
main() {
int x=0;
int y=0;
struct ttysize win;
if (ioctl (STDIN_FILENO, TIOCGSIZE, &win))
return 0;
y=win.ts_lines;
x=win.ts_cols;
printf( "x = %d, y = %d", x, y );
}
Sobran la mitad de #includes pero no me apetecía ir probando :P
Cita de: "ZaelSiuS"Tu código tampoco me funciona en OS X. He estado buscando un rato por google, y lo que buscas lo puedes sacar del código fuente del comando resize: http://www.ohse.de/uwe/software/resize.c.html( función get_term_size )
He compilado y ejecutado este programita cogiendo código de ahí, y me devuelve el ancho y alto correctos de mi terminal:
Citar#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
main() {
int x=0;
int y=0;
struct ttysize win;
if (ioctl (STDIN_FILENO, TIOCGSIZE, &win))
return 0;
y=win.ts_lines;
x=win.ts_cols;
printf( "x = %d, y = %d", x, y );
}
Sobran la mitad de #includes pero no me apetecía ir probando :P
Me da errores de compilacion, pero por ahi debe andar la cosa.