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

Reply via email to