⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gftpui.c

📁 一个linux下的ftp程序。它是使用文件传输协议的一系列程序的集合。
💻 C
📖 第 1 页 / 共 4 页
字号:
          gftp_option_types[newcv.otype].write_function (&newcv, buf,                                                         sizeof (buf), 0);          gftpui_common_logfunc (gftp_logging_misc_nolog, request,                                 "%s = %s\n", newcv.key, buf);          if (newcv.flags & GFTP_CVARS_FLAGS_DYNMEM)            g_free (newcv.value);          gftp_configuration_changed = 1;        }    }  return (1);}static intgftpui_common_cmd_help (void *uidata, gftp_request * request,                        void *other_uidata, gftp_request * other_request,                        const char *command){  int i, j, ele, numrows, numcols = 6, handled, number_commands, cmdlen,      found;  char commands[128], cmdstr[30];  const char *pos;  for (number_commands=0;       gftpui_common_commands[number_commands].command != NULL;       number_commands++);  if (command != NULL && *command != '\0')    {      for (pos = command; *pos != ' ' && *pos != '\0'; pos++);      cmdlen = pos - command;      for (i=0; gftpui_common_commands[i].command != NULL; i++)        {          if (strncmp (gftpui_common_commands[i].command, command, cmdlen) == 0)            break;        }      if (gftpui_common_commands[i].cmd_description != NULL)        {          found = 1;          if (*pos != '\0' && *(pos + 1) != '\0' &&              gftpui_common_commands[i].subhelp_func != NULL)            handled = gftpui_common_commands[i].subhelp_func (pos + 1);          else            handled = 0;          if (!handled)            gftpui_common_logfunc (gftp_logging_misc_nolog, request, "%s\n",                                 _(gftpui_common_commands[i].cmd_description));        }      else        found = 0;    }  else    found = 0;    if (!found)    {      numrows = number_commands / numcols;      if (number_commands % numcols != 0)        numrows++;      gftpui_common_logfunc (gftp_logging_misc_nolog, request,                             _("Supported commands:\n\n"));            for (i=0; i<numrows; i++)        {          strncpy (commands, "\t", sizeof (commands));          for (j=0; j<numcols; j++)            {              ele = i + j * numrows;              if (ele >= number_commands)                break;              g_snprintf (cmdstr, sizeof (cmdstr), "%-10s",                          gftpui_common_commands[ele].command);              strncat (commands, cmdstr, sizeof (commands));            }          gftpui_common_logfunc (gftp_logging_misc_nolog, request, "%s\n",                                 commands);        }    }  return (1);}static void_gftpui_common_transfer_files (void *fromuidata, gftp_request * fromrequest,                               void *touidata, gftp_request * torequest,                               const char *cmd, const char *filespec){  gftp_transfer * tdata;  gftp_file * fle;  if (!GFTP_IS_CONNECTED (fromrequest) ||      !GFTP_IS_CONNECTED (torequest))    {      fromrequest->logging_function (gftp_logging_error, fromrequest,                                  _("Error: Not connected to a remote site\n"));      return;    }  if (*filespec == '\0')    {      fromrequest->logging_function (gftp_logging_error, fromrequest,                                      _("usage: %s <filespec>\n"), cmd);      return;    }  tdata = gftp_tdata_new ();  tdata->fromreq = fromrequest;  tdata->toreq = torequest;  if (gftp_list_files (tdata->fromreq) != 0)    {      tdata->fromreq = tdata->toreq = NULL;      free_tdata (tdata);      return;    }  fle = g_malloc0 (sizeof (*fle));  while (gftp_get_next_file (tdata->fromreq, filespec, fle) > 0)    {      if (strcmp (fle->file, ".") == 0 || strcmp (fle->file, "..") == 0)        {          gftp_file_destroy (fle, 0);          continue;        }      tdata->files = g_list_append (tdata->files, fle);      fle = g_malloc (sizeof (*fle));    }  g_free (fle);  gftp_end_transfer (tdata->fromreq);  if (tdata->files == NULL)    {      tdata->fromreq = tdata->toreq = NULL;      free_tdata (tdata);      return;    }  if (gftp_get_all_subdirs (tdata, NULL) != 0)    {      tdata->fromreq = tdata->toreq = NULL;      free_tdata (tdata);      return;    }  if (tdata->files == NULL)    {      tdata->fromreq = tdata->toreq = NULL;      free_tdata (tdata);      return;    }  gftpui_common_add_file_transfer (tdata->fromreq, tdata->toreq,                                   fromuidata, touidata, tdata->files);  g_free (tdata);  return;}intgftpui_common_cmd_mget_file (void *uidata, gftp_request * request,                             void *other_uidata, gftp_request * other_request,                             const char *command){  _gftpui_common_transfer_files (uidata, request, other_uidata, other_request,                                 "mget", command);  return (1);}intgftpui_common_cmd_mput_file (void *uidata, gftp_request * request,                             void *other_uidata, gftp_request * other_request,                             const char *command){  _gftpui_common_transfer_files (other_uidata, other_request, uidata, request,                                 "mput", command);  return (1);}gftpui_common_methods gftpui_common_commands[] = {        {N_("about"),   2, gftpui_common_cmd_about, gftpui_common_request_none,         N_("Shows gFTP information"), NULL},        {N_("ascii"),   2, gftpui_common_cmd_ascii, gftpui_common_request_remote,         N_("Sets the current file transfer mode to Ascii (only for FTP)"), NULL},        {N_("binary"),  1, gftpui_common_cmd_binary, gftpui_common_request_remote,         N_("Sets the current file transfer mode to Binary (only for FTP)"), NULL},        {N_("cd"),      2, gftpui_common_cmd_chdir, gftpui_common_request_remote,         N_("Changes the remote working directory"), NULL},        {N_("chdir"),   3, gftpui_common_cmd_chdir, gftpui_common_request_remote,         N_("Changes the remote working directory"), NULL},        {N_("chmod"),   3, gftpui_common_cmd_chmod, gftpui_common_request_remote,         N_("Changes the permissions of a remote file"), NULL},        {N_("clear"),   3, gftpui_common_cmd_clear, gftpui_common_request_none,         N_("Available options: cache"), gftpui_common_clear_show_subhelp},        {N_("close"),   3, gftpui_common_cmd_close, gftpui_common_request_remote,         N_("Disconnects from the remote site"), NULL},        {N_("delete"),  1, gftpui_common_cmd_delete, gftpui_common_request_remote,         N_("Removes a remote file"), NULL},        {N_("dir"),     3, gftpui_common_cmd_ls, gftpui_common_request_remote,         N_("Shows the directory listing for the current remote directory"), NULL},        {N_("get"),     1, gftpui_common_cmd_mget_file, gftpui_common_request_remote,         N_("Downloads remote file(s)"), NULL},        {N_("help"),    1, gftpui_common_cmd_help, gftpui_common_request_none,         N_("Shows this help screen"), NULL},        {N_("lcd"),     3, gftpui_common_cmd_chdir, gftpui_common_request_local,         N_("Changes the local working directory"), NULL},        {N_("lchdir"),  4, gftpui_common_cmd_chdir, gftpui_common_request_local,         N_("Changes the local working directory"), NULL},        {N_("lchmod"),  4, gftpui_common_cmd_chmod,     gftpui_common_request_local,         N_("Changes the permissions of a local file"), NULL},        {N_("ldelete"), 2, gftpui_common_cmd_delete,    gftpui_common_request_local,         N_("Removes a local file"), NULL},        {N_("ldir"),    4, gftpui_common_cmd_ls, gftpui_common_request_local,         N_("Shows the directory listing for the current local directory"), NULL},        {N_("lls"),     2, gftpui_common_cmd_ls, gftpui_common_request_local,         N_("Shows the directory listing for the current local directory"), NULL},        {N_("lmkdir"),  2, gftpui_common_cmd_mkdir, gftpui_common_request_local,         N_("Creates a local directory"), NULL},        {N_("lpwd"),    2, gftpui_common_cmd_pwd, gftpui_common_request_local,         N_("Show current local directory"), NULL},        {N_("lrename"), 3, gftpui_common_cmd_rename, gftpui_common_request_local,         N_("Rename a local file"), NULL},        {N_("lrmdir"),  3, gftpui_common_cmd_rmdir, gftpui_common_request_local,         N_("Remove a local directory"), NULL},        {N_("ls"),      2, gftpui_common_cmd_ls, gftpui_common_request_remote,         N_("Shows the directory listing for the current remote directory"), NULL},        {N_("mget"),    2, gftpui_common_cmd_mget_file, gftpui_common_request_remote,         N_("Downloads remote file(s)"), NULL},        {N_("mkdir"),   2, gftpui_common_cmd_mkdir, gftpui_common_request_remote,         N_("Creates a remote directory"), NULL},        {N_("mput"),    2, gftpui_common_cmd_mput_file, gftpui_common_request_remote,         N_("Uploads local file(s)"), NULL},        {N_("open"),    1, gftpui_common_cmd_open, gftpui_common_request_remote,         N_("Opens a connection to a remote site"), NULL},        {N_("put"),     2, gftpui_common_cmd_mput_file, gftpui_common_request_remote,         N_("Uploads local file(s)"), NULL},        {N_("pwd"),     2, gftpui_common_cmd_pwd, gftpui_common_request_remote,         N_("Show current remote directory"), NULL},        {N_("quit"),    1, gftpui_common_cmd_quit, gftpui_common_request_none,         N_("Exit from gFTP"), NULL},        {N_("rename"),  2, gftpui_common_cmd_rename, gftpui_common_request_remote,         N_("Rename a remote file"), NULL},        {N_("rmdir"),   2, gftpui_common_cmd_rmdir, gftpui_common_request_remote,         N_("Remove a remote directory"), NULL},        {N_("set"),     1, gftpui_common_cmd_set, gftpui_common_request_none,         N_("Show configuration file variables. You can also set variables by set var=val"),         gftpui_common_set_show_subhelp},        {N_("site"),    2, gftpui_common_cmd_site, gftpui_common_request_remote,         N_("Run a site specific command"), NULL},        {NULL,          0, NULL,                gftpui_common_request_none,	 NULL, NULL}};intgftpui_common_process_command (void *locui, gftp_request * locreq,                               void *remui, gftp_request * remreq,                               const char *command){  gftp_request * request, * other_request;  void *uidata, *other_uidata;  char *pos, *newstr;  const char *stpos;  size_t cmdlen;  int ret, i;  size_t len;  for (stpos = command; *stpos == ' ' || *stpos == '\t'; stpos++);  newstr = g_strdup (stpos);  len = strlen (newstr);  if (len > 0 && newstr[len - 1] == '\n')    newstr[--len] = '\0';  if (len > 0 && newstr[len - 1] == '\r')    newstr[--len] = '\0';  for (pos = newstr + len - 1;       (*pos == ' ' || *pos == '\t') && pos > newstr;       pos--)    *pos = '\0';  if (*stpos == '\0')    {      g_free (newstr);      return (1);    }  if ((pos = strchr (newstr, ' ')) != NULL)    *pos = '\0';   cmdlen = strlen (newstr);  for (i=0; gftpui_common_commands[i].command != NULL; i++)    {      if (strcmp (gftpui_common_commands[i].command, newstr) == 0)        break;      else if (cmdlen >= gftpui_common_commands[i].minlen &&               strncmp (gftpui_common_commands[i].command, newstr, cmdlen) == 0)        break;     }  if (pos != NULL)    pos++;  else    pos = "";    if (gftpui_common_commands[i].reqtype == gftpui_common_request_local)    {      request = locreq;      uidata = locui;      other_request = remreq;      other_uidata = remui;    }  else if (gftpui_common_commands[i].reqtype == gftpui_common_request_remote)    {      request = remreq;      uidata = remui;      other_request = locreq;      other_uidata = locui;    }  else    {      request = other_request = NULL;      uidata = other_uidata = NULL;    }   if (gftpui_common_commands[i].command != NULL)    {      ret = gftpui_common_commands[i].func (uidata, request,                                            other_uidata, other_request, pos);      if (request != NULL && !GFTP_IS_CONNECTED (request))        gftpui_disconnect (uidata);    }  else    {      gftpui_common_logfunc (gftp_logging_error, request,                             _("Error: Command not recognized\n"));      ret = 1;    }  g_free (newstr);  return (ret);}gftp_transfer *gftpui_common_add_file_transfer (gftp_request * fromreq, gftp_request * toreq,                                 void *fromuidata, void *touidata,                                 GList * files){  intptr_t append_transfers, one_transfer;  GList * templist, *curfle;  gftp_transfer * tdata;  gftp_file * tempfle;  int show_dialog;    for (templist = files; templist != NULL; templist = templist->next)    {       tempfle = templist->data;      if (tempfle->startsize > 0)        break;    }  show_dialog = templist != NULL;  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -