mkdir_dialog.c
上传用户:tjfeida
上传日期:2013-03-10
资源大小:1917k
文件大小:3k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. /*****************************************************************************/
  2. /*  mkdir_dialog.c - make directory dialog box and ftp routines              */
  3. /*  Copyright (C) 1998-2002 Brian Masney <masneyb@gftp.org>                  */
  4. /*                                                                           */
  5. /*  This program is free software; you can redistribute it and/or modify     */
  6. /*  it under the terms of the GNU General Public License as published by     */
  7. /*  the Free Software Foundation; either version 2 of the License, or        */
  8. /*  (at your option) any later version.                                      */
  9. /*                                                                           */
  10. /*  This program is distributed in the hope that it will be useful,          */
  11. /*  but WITHOUT ANY WARRANTY; without even the implied warranty of           */
  12. /*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            */
  13. /*  GNU General Public License for more details.                             */
  14. /*                                                                           */
  15. /*  You should have received a copy of the GNU General Public License        */
  16. /*  along with this program; if not, write to the Free Software              */
  17. /*  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA      */
  18. /*****************************************************************************/
  19. #include "gftp-gtk.h"
  20. static const char cvsid[] = "$Id: mkdir_dialog.c,v 1.6 2002/11/11 23:16:12 masneyb Exp $";
  21. static const char *edttext;
  22. static void *
  23. do_make_dir_thread (void * data)
  24. {
  25.   gftp_window_data * wdata;
  26.   int success, sj;
  27.   wdata = data;
  28.   if (wdata->request->use_threads)
  29.     {
  30.       sj = sigsetjmp (jmp_environment, 1);
  31.       use_jmp_environment = 1;
  32.     }
  33.   else
  34.     sj = 0;
  35.   success = 0;
  36.   if (sj == 0)
  37.     {
  38.       if (wdata->request->network_timeout > 0)
  39.         alarm (wdata->request->network_timeout);
  40.       success = gftp_make_directory (wdata->request, edttext) == 0;
  41.       alarm (0);
  42.     }
  43.   else
  44.     {
  45.       gftp_disconnect (wdata->request);
  46.       wdata->request->logging_function (gftp_logging_error,
  47.                                         wdata->request->user_data,
  48.                                         _("Operation canceledn"));
  49.     }
  50.   if (wdata->request->use_threads)
  51.     use_jmp_environment = 0;
  52.   wdata->request->stopable = 0;
  53.   return ((void *) success);
  54. }
  55. static void
  56. domkdir (gftp_window_data * wdata, gftp_dialog_data * ddata)
  57. {
  58.   edttext = gtk_entry_get_text (GTK_ENTRY (ddata->edit));
  59.   if (*edttext == '')
  60.     {
  61.       ftp_log (gftp_logging_misc, NULL,
  62.        _("Mkdir: Operation canceled...you must enter a stringn"));
  63.       return;
  64.     }
  65.   if (check_reconnect (wdata) < 0)
  66.     return;
  67.   if ((int) generic_thread (do_make_dir_thread, wdata))
  68.     {
  69.       gftp_delete_cache_entry (wdata->request, 0);
  70.       refresh (wdata);
  71.     }
  72. }
  73. void
  74. mkdir_dialog (gpointer data)
  75. {
  76.   gftp_window_data * wdata;
  77.   wdata = data;
  78.   if (!check_status (_("Mkdir"), wdata, wdata->request->use_threads, 0, 0, 
  79.                      wdata->request->mkdir != NULL))
  80.     return;
  81.   MakeEditDialog (_("Make Directory"), _("Enter name of directory to create"),
  82.   NULL, 1, NULL, gftp_dialog_button_create, domkdir, wdata, 
  83.                   NULL, NULL);
  84. }