Binding mod_curl [Descarga de ficheros de Internet]

Started by josebita, November 25, 2011, 12:32:52 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

josebita

Splinter, tengo la descarga a string funcionando, pero es a través de una función auxiliar que recupera la cadena una vez que se ha completado la descarga porque si lo que hago es pasar un puntero al string mientras configuro la descarga y cuando la descarga está terminada lo actualizo, obtengo un segfault. Creo recordar que comentaste que no es posible hacer eso, ¿no?.
Es decir, que el código de ejemplo actual sería:
    curl_setopt(curl, 10001, 0);        //CURLOPT_WRITEDATA
    curl_setopt(curl, 10002, "http://localhost/~joseba/html5upload/upload.html");   //CURLOPT_URL
   
    curl_perform(curl, &status);
   
    // Wait for the transfer to finish
    while(status != 0)
        FRAME;
    end;
   
    output = curl_fetch(curl);
   
    say("BennuGD download:");
    say(output);

Cuando lo ideal sería que fuera algo como:
    curl_setopt(curl, 10001, &output);        //CURLOPT_WRITEDATA
    curl_setopt(curl, 10002, "http://localhost/~joseba/html5upload/upload.html");   //CURLOPT_URL
   
    curl_perform(curl, &status);
   
    // Wait for the transfer to finish
    while(status != 0)
        FRAME;
    end;
   
    say("BennuGD download:");
    say(output);
Lo segundo no es posible, ¿verdad?. Si lo es, dímelo y pongo el código, para ver qué estoy haciendo mal...

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita


SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2


SplinterGU

y string te da segment violation?

en cualquier caso deberias pasar en la funcion el puntero a esa string... lo cual *output deberia apuntar al entero que representa la string, luego deberias hacer un discard y luego una new_string+string_use y setearlo en *output...

creo que eso deberia funcionar, no estoy 100% seguro, deberia probarlo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on December 02, 2011, 01:38:54 AM
y string te da segment violation?

en cualquier caso deberias pasar en la funcion el puntero a esa string... lo cual *output deberia apuntar al entero que representa la string, luego deberias hacer un discard y luego una new_string+string_use y setearlo en *output...

creo que eso deberia funcionar, no estoy 100% seguro, deberia probarlo.
Pff, imagino que estaré haciendo algo mal... A ver si lo miro en los próximos días.
Lo siento pero no podrá haber binarios para iOS con esto al menos hasta el lunes, que estoy más que cansado, me voy a dormir y mañana me voy de viaje.

El código de la librería ya define constantes para el comportamiento de libcurl y las constantes relacionadas con HTTP (casi todas son directamente las mismas que las constantes de libcurl de C) tal y como se describen aquí.


Adjunto también la librería compilada para MacOS X para el que quiera ir haciendo pruebas durante el fin de semana, aunque ya aviso de que si consigo hacer lo que comento el API cambiará algo si hago que no haga falta la función de llamada para retornar la string. Incluye un pequeño código de ejemplo que descarga la página del foro bien a una string o a un fichero. Imagino que este finde sí que podré sacar un binario rápido para Linux y subirlo al PPA. Windows me da miedo por una cosa que he leído en la documentación de libcurl, pero llegará también.

Erkosone

Muchas gracias por la lib Joseba, me he animado a probarla pero me ha surgido un problema, no tengo mucha idea de como configurar el entorno en macosx todo sea dicho..
He descargado el Kantaoke y he intentado sin exito hacer alguna prueba con otro .dcb, el caso es que no consigo hacerlo funcionar.


Existe algun template, o un .APP listo para meterle el .dcb con los recursos para poder empezar a trastear la curl en macosx?
Bueno, gracias por el curro que te pegas, está fenomenal tener la lib tan rápido.

josebita

Sé que me has preguntado otra cosa, pero para empezar por el principio: ¿tienes bennugd en macosx funcionando desde la línea de comandos?

Si no lo tines, bájatelo desde la web de descargas y lo instalas siguiendo las instrucciones de aquí:
http://forum.bennugd.org/index.php?topic=2641.msg46733#msg46733

Cuando lo tengas funcionando de ahí, pasamos a las apps :)

Erkosone


Erkosone

#55
cd
open -a TextEdit .profile


En esto me he atascado..  haber, he bajado el paquete para macosx de bennugd, lo he dejado en user/bennugd/      aquí tengo las dos carpetas, bin y lib.


Pero al editar el archivo que me dices el shell me indica que no existe..   he mirado por el disco haber si lo encontraba pero no parece que esté.. no se si no estoy en la ubicación correcta o que,
el tema es que nada mas abrir el terminal, pongo cd a secas, pero supongo que falta algo no? porque con eso que estoy haciendo en macosx exactamente? es igual que en windows?
La verdad es que ando un poco perdido, en que ubicación se supone que esta el .profile?

josebita

Es cd sin más, para que vaya a tu carpeta personal.
Si el fichero no existe, tienes que crearlo, pero el textedit debería hacerlo solo. Si no se crea antes, después del cd escribe:
touch .profile
Eso te lo crea y te lo deja en blanco.

Erkosone

Pues me tira este error que puedes ver en el screenshot, mi nombre de usuario es 'luislopez', parece que algo falla.





He dejado la carpeta de bennugd al abrir el finder, picando en mi usuario a la izquierda, tal cual ahí, la carpeta se llama 'bennugd' y dentro están las bin y lib.

josebita

#58
Pon el fichero .profile tal y como te ha quedado.


[edito] vamos, que me da que te has comido un cacho de la línea que tenías que poner, revísalo.

Erkosone


export PATH=$PATH: /Users/luislopez/bennugd/bin/
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH: /Users/luislopez/bennugd/lib/