changeset 17595:4b65355a31f2

avoid some code duplication in url-transfer ftp methods * url-transfer.cc (url_transfer::ftp_file_or_dir_action): New function. (url_transfer::cwd, url_transfer::del, url_transfer::rmdir, url_transfer::mkdir): Call ftp_file_or_dir_action.
author John W. Eaton <jwe@octave.org>
date Mon, 07 Oct 2013 21:23:51 -0400
parents f957fa0d2748
children 43b9181340fb
files liboctave/util/url-transfer.cc
diffstat 1 files changed, 27 insertions(+), 56 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/util/url-transfer.cc	Mon Oct 07 17:23:17 2013 -0700
+++ b/liboctave/util/url-transfer.cc	Mon Oct 07 21:23:51 2013 -0400
@@ -401,74 +401,22 @@
 
   void cwd (const std::string& path)
   {
-    struct curl_slist *slist = 0;
-
-    unwind_protect frame;
-    frame.add_fcn (curl_slist_free_all, slist);
-
-    std::string cmd = "cwd " + path;
-    slist = curl_slist_append (slist, cmd.c_str ());
-    SETOPT (CURLOPT_POSTQUOTE, slist);
-
-    perform ();
-    if (! good ())
-      return;
-
-    SETOPT (CURLOPT_POSTQUOTE, 0);
+    ftp_file_or_dir_action (path, "cwd");
   }
 
   void del (const std::string& file)
   {
-    struct curl_slist *slist = 0;
-
-    unwind_protect frame;
-    frame.add_fcn (curl_slist_free_all, slist);
-
-    std::string cmd = "dele " + file;
-    slist = curl_slist_append (slist, cmd.c_str ());
-    SETOPT (CURLOPT_POSTQUOTE, slist);
-
-    perform ();
-    if (! good ())
-      return;
-
-    SETOPT (CURLOPT_POSTQUOTE, 0);
+    ftp_file_or_dir_action (file, "dele");
   }
 
   void rmdir (const std::string& path)
   {
-    struct curl_slist *slist = 0;
-
-    unwind_protect frame;
-    frame.add_fcn (curl_slist_free_all, slist);
-
-    std::string cmd = "rmd " + path;
-    slist = curl_slist_append (slist, cmd.c_str ());
-    SETOPT (CURLOPT_POSTQUOTE, slist);
-
-    perform ();
-    if (! good ())
-      return;
-
-    SETOPT (CURLOPT_POSTQUOTE, 0);
+    ftp_file_or_dir_action (path, "rmd");
   }
 
   void mkdir (const std::string& path)
   {
-    struct curl_slist *slist = 0;
-
-    unwind_protect frame;
-    frame.add_fcn (curl_slist_free_all, slist);
-
-    std::string cmd = "mkd " + path;
-    slist = curl_slist_append (slist, cmd.c_str ());
-    SETOPT (CURLOPT_POSTQUOTE, slist);
-
-    perform ();
-    if (! good ())
-      return;
-
-    SETOPT (CURLOPT_POSTQUOTE, 0);
+    ftp_file_or_dir_action (path, "mkd");
   }
 
   void rename (const std::string& oldname, const std::string& newname)
@@ -750,6 +698,29 @@
 
     return query.str ();
   }
+
+  void ftp_file_or_dir_action (const std::string& file_or_dir,
+                               const std::string& action)
+  {
+    struct curl_slist *slist = 0;
+
+    unwind_protect frame;
+
+    frame.add_fcn (curl_slist_free_all, slist);
+
+    std::string cmd = action + " " + file_or_dir;
+
+    slist = curl_slist_append (slist, cmd.c_str ());
+
+    SETOPT (CURLOPT_POSTQUOTE, slist);
+
+    perform ();
+
+    if (! good ())
+      return;
+
+    SETOPT (CURLOPT_POSTQUOTE, 0);
+  }
 };
 
 #undef SETOPT