# HG changeset patch # User John W. Eaton # Date 1381195431 14400 # Node ID 4b65355a31f2bcbeb120ddd388ef71543daa3a44 # Parent f957fa0d2748732825677d3a58a204f99f6bedc6 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. diff -r f957fa0d2748 -r 4b65355a31f2 liboctave/util/url-transfer.cc --- 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