comparison liboctave/util/url-transfer.cc @ 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 d7ca186396d4
children 43b9181340fb
comparison
equal deleted inserted replaced
17594:f957fa0d2748 17595:4b65355a31f2
399 SETOPT (CURLOPT_TRANSFERTEXT, 0); 399 SETOPT (CURLOPT_TRANSFERTEXT, 0);
400 } 400 }
401 401
402 void cwd (const std::string& path) 402 void cwd (const std::string& path)
403 { 403 {
404 struct curl_slist *slist = 0; 404 ftp_file_or_dir_action (path, "cwd");
405
406 unwind_protect frame;
407 frame.add_fcn (curl_slist_free_all, slist);
408
409 std::string cmd = "cwd " + path;
410 slist = curl_slist_append (slist, cmd.c_str ());
411 SETOPT (CURLOPT_POSTQUOTE, slist);
412
413 perform ();
414 if (! good ())
415 return;
416
417 SETOPT (CURLOPT_POSTQUOTE, 0);
418 } 405 }
419 406
420 void del (const std::string& file) 407 void del (const std::string& file)
421 { 408 {
422 struct curl_slist *slist = 0; 409 ftp_file_or_dir_action (file, "dele");
423
424 unwind_protect frame;
425 frame.add_fcn (curl_slist_free_all, slist);
426
427 std::string cmd = "dele " + file;
428 slist = curl_slist_append (slist, cmd.c_str ());
429 SETOPT (CURLOPT_POSTQUOTE, slist);
430
431 perform ();
432 if (! good ())
433 return;
434
435 SETOPT (CURLOPT_POSTQUOTE, 0);
436 } 410 }
437 411
438 void rmdir (const std::string& path) 412 void rmdir (const std::string& path)
439 { 413 {
440 struct curl_slist *slist = 0; 414 ftp_file_or_dir_action (path, "rmd");
441
442 unwind_protect frame;
443 frame.add_fcn (curl_slist_free_all, slist);
444
445 std::string cmd = "rmd " + path;
446 slist = curl_slist_append (slist, cmd.c_str ());
447 SETOPT (CURLOPT_POSTQUOTE, slist);
448
449 perform ();
450 if (! good ())
451 return;
452
453 SETOPT (CURLOPT_POSTQUOTE, 0);
454 } 415 }
455 416
456 void mkdir (const std::string& path) 417 void mkdir (const std::string& path)
457 { 418 {
458 struct curl_slist *slist = 0; 419 ftp_file_or_dir_action (path, "mkd");
459
460 unwind_protect frame;
461 frame.add_fcn (curl_slist_free_all, slist);
462
463 std::string cmd = "mkd " + path;
464 slist = curl_slist_append (slist, cmd.c_str ());
465 SETOPT (CURLOPT_POSTQUOTE, slist);
466
467 perform ();
468 if (! good ())
469 return;
470
471 SETOPT (CURLOPT_POSTQUOTE, 0);
472 } 420 }
473 421
474 void rename (const std::string& oldname, const std::string& newname) 422 void rename (const std::string& oldname, const std::string& newname)
475 { 423 {
476 struct curl_slist *slist = 0; 424 struct curl_slist *slist = 0;
748 696
749 query.flush (); 697 query.flush ();
750 698
751 return query.str (); 699 return query.str ();
752 } 700 }
701
702 void ftp_file_or_dir_action (const std::string& file_or_dir,
703 const std::string& action)
704 {
705 struct curl_slist *slist = 0;
706
707 unwind_protect frame;
708
709 frame.add_fcn (curl_slist_free_all, slist);
710
711 std::string cmd = action + " " + file_or_dir;
712
713 slist = curl_slist_append (slist, cmd.c_str ());
714
715 SETOPT (CURLOPT_POSTQUOTE, slist);
716
717 perform ();
718
719 if (! good ())
720 return;
721
722 SETOPT (CURLOPT_POSTQUOTE, 0);
723 }
753 }; 724 };
754 725
755 #undef SETOPT 726 #undef SETOPT
756 727
757 #else 728 #else