Enlightenment CVS committal Author : cedric Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_con Modified Files: Ecore_Con.h ecore_con_url.c Log Message: Add FTP upload support for Ecore_Con from Massimiliano Calamelli. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_con/Ecore_Con.h,v retrieving revision 1.38 retrieving revision 1.39 diff -u -3 -r1.38 -r1.39 --- Ecore_Con.h 26 May 2008 05:16:33 -0000 1.38 +++ Ecore_Con.h 28 May 2008 09:02:39 -0000 1.39 @@ -212,7 +212,8 @@ EAPI int ecore_con_dns_lookup(const char *name, void (*done_cb)(void *data, struct hostent *hostent), void *data); - + + EAPI int ecore_con_url_ftp_upload(Ecore_Con_Url *url_con, char *filename, char *user, char *pass, char *uploadas); #ifdef __cplusplus } =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_con/ecore_con_url.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -3 -r1.21 -r1.22 --- ecore_con_url.c 13 Mar 2008 09:26:24 -0000 1.21 +++ ecore_con_url.c 28 May 2008 09:02:39 -0000 1.22 @@ -33,7 +33,7 @@ * ecore_con_url_url_set(url_con, "ftp://ftp.example.com/pub/myfile"); * ecore_con_url_send(url, NULL, 0, NULL); * - * FIXME: Support more CURL features: Authentication, FTP upload, Progress callbacks and more... + * FIXME: Support more CURL features: Authentication, Progress callbacks and more... */ #include "Ecore.h" #include "ecore_private.h" @@ -41,6 +41,7 @@ #include "ecore_con_private.h" #include <errno.h> +#include <sys/stat.h> /** * @defgroup Ecore_Con_Url_Group Ecore URL Connection Functions @@ -491,6 +492,55 @@ content_type = NULL; #endif } + +/** + * Makes a FTP upload + * @return FIXME: To be documented. + * @ingroup Ecore_Con_Url_Group + */ +EAPI int +ecore_con_url_ftp_upload(Ecore_Con_Url *url_con, char *filename, char *user, char *pass, char *uploadas) +{ +#ifdef HAVE_CURL + char url[4096]; + char userpwd[4096]; + FILE *fd; + struct stat file_info; + + if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL)) + { + ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_ftp_upload"); + return 0; + } + + if (url_con->active) return 0; + if (!url_con->url) return 0; + + if (filename) + { + if (stat(filename, &file_info)) return 0; + fd = fopen(filename, "rb"); + snprintf(url, sizeof(url), "ftp://%s/%s", url_con->url, basename(filename)); + snprintf(userpwd, sizeof(userpwd), "%s:%s", user, pass); + curl_easy_setopt(url_con->curl_easy, CURLOPT_VERBOSE, 1); + curl_easy_setopt(url_con->curl_easy, CURLOPT_USERPWD, userpwd); + curl_easy_setopt(url_con->curl_easy, CURLOPT_UPLOAD, 1); + curl_easy_setopt(url_con->curl_easy, CURLOPT_READDATA, fd); + ecore_con_url_url_set(url_con, url); + + return _ecore_con_url_perform(url_con); + fclose(fd); + } +#else + return 0; + url_con = NULL; + filename = NULL; + user = NULL; + pass = NULL; + uploadas = NULL; +#endif +} + #ifdef HAVE_CURL static int ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs