diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 01:11:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 01:11:49 +0000 |
commit | 1b88cd5ee8510e90e69f885bfd730ce57621781c (patch) | |
tree | b6b33bd695258f68c68824029c279d660ee4b85e /src/vfs/shell/shell.c | |
parent | Adding upstream version 3:4.8.30. (diff) | |
download | mc-upstream.tar.xz mc-upstream.zip |
Adding upstream version 3:4.8.31.upstream/3%4.8.31upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | src/vfs/shell/shell.c (renamed from src/vfs/fish/fish.c) | 652 |
1 files changed, 323 insertions, 329 deletions
diff --git a/src/vfs/fish/fish.c b/src/vfs/shell/shell.c index ec71a41..74788d6 100644 --- a/src/vfs/fish/fish.c +++ b/src/vfs/shell/shell.c @@ -1,8 +1,8 @@ /* - Virtual File System: FISH implementation for transferring files over + Virtual File System: SHELL implementation for transferring files over shell connections. - Copyright (C) 1998-2023 + Copyright (C) 1998-2024 Free Software Foundation, Inc. Written by: @@ -32,20 +32,20 @@ /** * \file - * \brief Source: Virtual File System: FISH implementation for transferring files over + * \brief Source: Virtual File System: SHELL implementation for transferring files over * shell connections * \author Pavel Machek * \author Michal Svec * \date 1998, 2000 * * Derived from ftpfs.c - * Read README.fish for protocol specification. + * Read README.shell for protocol specification. * * Syntax of path is: \verbatim sh://user@host[:Cr]/path \endverbatim * where C means you want compressed connection, * and r means you want to use rsh * - * Namespace: fish_vfs_ops exported. + * Namespace: shell_vfs_ops exported. */ /* Define this if your ssh can take -I option */ @@ -74,12 +74,12 @@ #include "lib/vfs/xdirentry.h" #include "lib/vfs/gc.h" /* vfs_stamp_create */ -#include "fish.h" -#include "fishdef.h" +#include "shell.h" +#include "shelldef.h" /*** global variables ****************************************************************************/ -int fish_directory_timeout = 900; +int shell_directory_timeout = 900; /*** file scope macro definitions ****************************************************************/ @@ -87,8 +87,8 @@ int fish_directory_timeout = 900; #define DO_OPEN 2 #define DO_FREE_RESOURCE 4 -#define FISH_FLAG_COMPRESSED 1 -#define FISH_FLAG_RSH 2 +#define SHELL_FLAG_COMPRESSED 1 +#define SHELL_FLAG_RSH 2 #define OPT_FLUSH 1 #define OPT_IGNORE_ERROR 2 @@ -108,16 +108,16 @@ int fish_directory_timeout = 900; #define WANT_STRING 0x02 /* environment flags */ -#define FISH_HAVE_HEAD 1 -#define FISH_HAVE_SED 2 -#define FISH_HAVE_AWK 4 -#define FISH_HAVE_PERL 8 -#define FISH_HAVE_LSQ 16 -#define FISH_HAVE_DATE_MDYT 32 -#define FISH_HAVE_TAIL 64 +#define SHELL_HAVE_HEAD 1 +#define SHELL_HAVE_SED 2 +#define SHELL_HAVE_AWK 4 +#define SHELL_HAVE_PERL 8 +#define SHELL_HAVE_LSQ 16 +#define SHELL_HAVE_DATE_MDYT 32 +#define SHELL_HAVE_TAIL 64 -#define FISH_SUPER(super) ((fish_super_t *) (super)) -#define FISH_FILE_HANDLER(fh) ((fish_file_handler_t *) fh) +#define SHELL_SUPER(super) ((shell_super_t *) (super)) +#define SHELL_FILE_HANDLER(fh) ((shell_file_handler_t *) fh) /*** file scope type declarations ****************************************************************/ @@ -144,7 +144,7 @@ typedef struct char *scr_info; int host_flags; GString *scr_env; -} fish_super_t; +} shell_super_t; typedef struct { @@ -153,7 +153,7 @@ typedef struct off_t got; off_t total; gboolean append; -} fish_file_handler_t; +} shell_file_handler_t; /*** forward declarations (file scope functions) *************************************************/ @@ -161,15 +161,15 @@ typedef struct static char reply_str[80]; -static struct vfs_s_subclass fish_subclass; -static struct vfs_class *vfs_fish_ops = VFS_CLASS (&fish_subclass); +static struct vfs_s_subclass shell_subclass; +static struct vfs_class *vfs_shell_ops = VFS_CLASS (&shell_subclass); /* --------------------------------------------------------------------------------------------- */ /*** file scope functions ************************************************************************/ /* --------------------------------------------------------------------------------------------- */ static void -fish_set_blksize (struct stat *s) +shell_set_blksize (struct stat *s) { #ifdef HAVE_STRUCT_STAT_ST_BLKSIZE /* redefine block size */ @@ -180,12 +180,12 @@ fish_set_blksize (struct stat *s) /* --------------------------------------------------------------------------------------------- */ static struct stat * -fish_default_stat (struct vfs_class *me) +shell_default_stat (struct vfs_class *me) { struct stat *s; s = vfs_s_default_stat (me, S_IFDIR | 0755); - fish_set_blksize (s); + shell_set_blksize (s); vfs_adjust_stat (s); return s; @@ -194,15 +194,16 @@ fish_default_stat (struct vfs_class *me) /* --------------------------------------------------------------------------------------------- */ static char * -fish_load_script_from_file (const char *hostname, const char *script_name, const char *def_content) +shell_load_script_from_file (const char *hostname, const char *script_name, const char *def_content) { char *scr_filename = NULL; char *scr_content; gsize scr_len = 0; /* 1st: scan user directory */ - scr_filename = g_build_path (PATH_SEP_STR, mc_config_get_data_path (), FISH_PREFIX, hostname, - script_name, (char *) NULL); + scr_filename = + g_build_path (PATH_SEP_STR, mc_config_get_data_path (), VFS_SHELL_PREFIX, hostname, + script_name, (char *) NULL); /* silent about user dir */ g_file_get_contents (scr_filename, &scr_content, &scr_len, NULL); g_free (scr_filename); @@ -210,7 +211,7 @@ fish_load_script_from_file (const char *hostname, const char *script_name, const if (scr_content == NULL) { scr_filename = - g_build_path (PATH_SEP_STR, LIBEXECDIR, FISH_PREFIX, script_name, (char *) NULL); + g_build_path (PATH_SEP_STR, LIBEXECDIR, VFS_SHELL_PREFIX, script_name, (char *) NULL); g_file_get_contents (scr_filename, &scr_content, &scr_len, NULL); g_free (scr_filename); } @@ -224,7 +225,7 @@ fish_load_script_from_file (const char *hostname, const char *script_name, const /* --------------------------------------------------------------------------------------------- */ static int -fish_decode_reply (char *s, gboolean was_garbage) +shell_decode_reply (char *s, gboolean was_garbage) { int code; @@ -243,7 +244,7 @@ fish_decode_reply (char *s, gboolean was_garbage) /* Returns a reply code, check /usr/include/arpa/ftp.h for possible values */ static int -fish_get_reply (struct vfs_class *me, int sock, char *string_buf, int string_len) +shell_get_reply (struct vfs_class *me, int sock, char *string_buf, int string_len) { char answer[BUF_1K]; gboolean was_garbage = FALSE; @@ -258,7 +259,7 @@ fish_get_reply (struct vfs_class *me, int sock, char *string_buf, int string_len } if (strncmp (answer, "### ", 4) == 0) - return fish_decode_reply (answer + 4, was_garbage ? 1 : 0); + return shell_decode_reply (answer + 4, was_garbage ? 1 : 0); was_garbage = TRUE; if (string_buf != NULL) @@ -269,8 +270,8 @@ fish_get_reply (struct vfs_class *me, int sock, char *string_buf, int string_len /* --------------------------------------------------------------------------------------------- */ static int -fish_command (struct vfs_class *me, struct vfs_s_super *super, int wait_reply, const char *cmd, - size_t cmd_len) +shell_command (struct vfs_class *me, struct vfs_s_super *super, int wait_reply, const char *cmd, + size_t cmd_len) { ssize_t status; FILE *logfile = me->logfile; @@ -288,16 +289,16 @@ fish_command (struct vfs_class *me, struct vfs_s_super *super, int wait_reply, c } tty_enable_interrupt_key (); - status = write (FISH_SUPER (super)->sockw, cmd, cmd_len); + status = write (SHELL_SUPER (super)->sockw, cmd, cmd_len); tty_disable_interrupt_key (); if (status < 0) return TRANSIENT; if (wait_reply) - return fish_get_reply (me, FISH_SUPER (super)->sockr, - (wait_reply & WANT_STRING) != 0 ? reply_str : - NULL, sizeof (reply_str) - 1); + return shell_get_reply (me, SHELL_SUPER (super)->sockr, + (wait_reply & WANT_STRING) != 0 ? reply_str : NULL, + sizeof (reply_str) - 1); return COMPLETE; } @@ -305,16 +306,16 @@ fish_command (struct vfs_class *me, struct vfs_s_super *super, int wait_reply, c static int G_GNUC_PRINTF (5, 0) -fish_command_va (struct vfs_class *me, struct vfs_s_super *super, int wait_reply, const char *scr, - const char *vars, va_list ap) +shell_command_va (struct vfs_class *me, struct vfs_s_super *super, int wait_reply, const char *scr, + const char *vars, va_list ap) { int r; GString *command; - command = mc_g_string_dup (FISH_SUPER (super)->scr_env); + command = mc_g_string_dup (SHELL_SUPER (super)->scr_env); g_string_append_vprintf (command, vars, ap); g_string_append (command, scr); - r = fish_command (me, super, wait_reply, command->str, command->len); + r = shell_command (me, super, wait_reply, command->str, command->len); g_string_free (command, TRUE); return r; @@ -324,14 +325,14 @@ fish_command_va (struct vfs_class *me, struct vfs_s_super *super, int wait_reply static int G_GNUC_PRINTF (5, 6) -fish_command_v (struct vfs_class *me, struct vfs_s_super *super, int wait_reply, const char *scr, - const char *vars, ...) +shell_command_v (struct vfs_class *me, struct vfs_s_super *super, int wait_reply, const char *scr, + const char *vars, ...) { int r; va_list ap; va_start (ap, vars); - r = fish_command_va (me, super, wait_reply, scr, vars, ap); + r = shell_command_va (me, super, wait_reply, scr, vars, ap); va_end (ap); return r; @@ -341,16 +342,16 @@ fish_command_v (struct vfs_class *me, struct vfs_s_super *super, int wait_reply, static int G_GNUC_PRINTF (5, 6) -fish_send_command (struct vfs_class *me, struct vfs_s_super *super, int flags, const char *scr, - const char *vars, ...) +shell_send_command (struct vfs_class *me, struct vfs_s_super *super, int flags, const char *scr, + const char *vars, ...) { int r; va_list ap; va_start (ap, vars); - r = fish_command_va (me, super, WAIT_REPLY, scr, vars, ap); + r = shell_command_va (me, super, WAIT_REPLY, scr, vars, ap); va_end (ap); - vfs_stamp_create (vfs_fish_ops, super); + vfs_stamp_create (vfs_shell_ops, super); if (r != COMPLETE) ERRNOR (E_REMOTE, -1); @@ -363,11 +364,11 @@ fish_send_command (struct vfs_class *me, struct vfs_s_super *super, int flags, c /* --------------------------------------------------------------------------------------------- */ static struct vfs_s_super * -fish_new_archive (struct vfs_class *me) +shell_new_archive (struct vfs_class *me) { - fish_super_t *arch; + shell_super_t *arch; - arch = g_new0 (fish_super_t, 1); + arch = g_new0 (shell_super_t, 1); arch->base.me = me; return VFS_SUPER (arch); @@ -376,48 +377,48 @@ fish_new_archive (struct vfs_class *me) /* --------------------------------------------------------------------------------------------- */ static void -fish_free_archive (struct vfs_class *me, struct vfs_s_super *super) +shell_free_archive (struct vfs_class *me, struct vfs_s_super *super) { - fish_super_t *fish_super = FISH_SUPER (super); + shell_super_t *shell_super = SHELL_SUPER (super); - if ((fish_super->sockw != -1) || (fish_super->sockr != -1)) - vfs_print_message (_("fish: Disconnecting from %s"), super->name ? super->name : "???"); + if ((shell_super->sockw != -1) || (shell_super->sockr != -1)) + vfs_print_message (_("shell: Disconnecting from %s"), super->name ? super->name : "???"); - if (fish_super->sockw != -1) + if (shell_super->sockw != -1) { - fish_command (me, super, NONE, "#BYE\nexit\n", -1); - close (fish_super->sockw); - fish_super->sockw = -1; + shell_command (me, super, NONE, "exit\n", -1); + close (shell_super->sockw); + shell_super->sockw = -1; } - if (fish_super->sockr != -1) + if (shell_super->sockr != -1) { - close (fish_super->sockr); - fish_super->sockr = -1; + close (shell_super->sockr); + shell_super->sockr = -1; } - g_free (fish_super->scr_ls); - g_free (fish_super->scr_exists); - g_free (fish_super->scr_mkdir); - g_free (fish_super->scr_unlink); - g_free (fish_super->scr_chown); - g_free (fish_super->scr_chmod); - g_free (fish_super->scr_utime); - g_free (fish_super->scr_rmdir); - g_free (fish_super->scr_ln); - g_free (fish_super->scr_mv); - g_free (fish_super->scr_hardlink); - g_free (fish_super->scr_get); - g_free (fish_super->scr_send); - g_free (fish_super->scr_append); - g_free (fish_super->scr_info); - g_string_free (fish_super->scr_env, TRUE); + g_free (shell_super->scr_ls); + g_free (shell_super->scr_exists); + g_free (shell_super->scr_mkdir); + g_free (shell_super->scr_unlink); + g_free (shell_super->scr_chown); + g_free (shell_super->scr_chmod); + g_free (shell_super->scr_utime); + g_free (shell_super->scr_rmdir); + g_free (shell_super->scr_ln); + g_free (shell_super->scr_mv); + g_free (shell_super->scr_hardlink); + g_free (shell_super->scr_get); + g_free (shell_super->scr_send); + g_free (shell_super->scr_append); + g_free (shell_super->scr_info); + g_string_free (shell_super->scr_env, TRUE); } /* --------------------------------------------------------------------------------------------- */ static void -fish_pipeopen (struct vfs_s_super *super, const char *path, const char *argv[]) +shell_pipeopen (struct vfs_s_super *super, const char *path, const char *argv[]) { int fileset1[2], fileset2[2]; int res; @@ -433,9 +434,9 @@ fish_pipeopen (struct vfs_s_super *super, const char *path, const char *argv[]) vfs_die ("Cannot fork(): %m."); /* We are the parent */ close (fileset1[0]); - FISH_SUPER (super)->sockw = fileset1[1]; + SHELL_SUPER (super)->sockw = fileset1[1]; close (fileset2[1]); - FISH_SUPER (super)->sockr = fileset2[0]; + SHELL_SUPER (super)->sockr = fileset2[0]; } else { @@ -456,32 +457,32 @@ fish_pipeopen (struct vfs_s_super *super, const char *path, const char *argv[]) /* --------------------------------------------------------------------------------------------- */ static GString * -fish_set_env (int flags) +shell_set_env (int flags) { GString *ret; ret = g_string_sized_new (256); - if ((flags & FISH_HAVE_HEAD) != 0) - g_string_append (ret, "FISH_HAVE_HEAD=1 export FISH_HAVE_HEAD; "); + if ((flags & SHELL_HAVE_HEAD) != 0) + g_string_append (ret, "SHELL_HAVE_HEAD=1 export SHELL_HAVE_HEAD; "); - if ((flags & FISH_HAVE_SED) != 0) - g_string_append (ret, "FISH_HAVE_SED=1 export FISH_HAVE_SED; "); + if ((flags & SHELL_HAVE_SED) != 0) + g_string_append (ret, "SHELL_HAVE_SED=1 export SHELL_HAVE_SED; "); - if ((flags & FISH_HAVE_AWK) != 0) - g_string_append (ret, "FISH_HAVE_AWK=1 export FISH_HAVE_AWK; "); + if ((flags & SHELL_HAVE_AWK) != 0) + g_string_append (ret, "SHELL_HAVE_AWK=1 export SHELL_HAVE_AWK; "); - if ((flags & FISH_HAVE_PERL) != 0) - g_string_append (ret, "FISH_HAVE_PERL=1 export FISH_HAVE_PERL; "); + if ((flags & SHELL_HAVE_PERL) != 0) + g_string_append (ret, "SHELL_HAVE_PERL=1 export SHELL_HAVE_PERL; "); - if ((flags & FISH_HAVE_LSQ) != 0) - g_string_append (ret, "FISH_HAVE_LSQ=1 export FISH_HAVE_LSQ; "); + if ((flags & SHELL_HAVE_LSQ) != 0) + g_string_append (ret, "SHELL_HAVE_LSQ=1 export SHELL_HAVE_LSQ; "); - if ((flags & FISH_HAVE_DATE_MDYT) != 0) - g_string_append (ret, "FISH_HAVE_DATE_MDYT=1 export FISH_HAVE_DATE_MDYT; "); + if ((flags & SHELL_HAVE_DATE_MDYT) != 0) + g_string_append (ret, "SHELL_HAVE_DATE_MDYT=1 export SHELL_HAVE_DATE_MDYT; "); - if ((flags & FISH_HAVE_TAIL) != 0) - g_string_append (ret, "FISH_HAVE_TAIL=1 export FISH_HAVE_TAIL; "); + if ((flags & SHELL_HAVE_TAIL) != 0) + g_string_append (ret, "SHELL_HAVE_TAIL=1 export SHELL_HAVE_TAIL; "); return ret; } @@ -489,23 +490,23 @@ fish_set_env (int flags) /* --------------------------------------------------------------------------------------------- */ static gboolean -fish_info (struct vfs_class *me, struct vfs_s_super *super) +shell_info (struct vfs_class *me, struct vfs_s_super *super) { - fish_super_t *fish_super = FISH_SUPER (super); + shell_super_t *shell_super = SHELL_SUPER (super); - if (fish_command (me, super, NONE, fish_super->scr_info, -1) == COMPLETE) + if (shell_command (me, super, NONE, shell_super->scr_info, -1) == COMPLETE) { while (TRUE) { int res; char buffer[BUF_8K] = ""; - res = vfs_s_get_line_interruptible (me, buffer, sizeof (buffer), fish_super->sockr); + res = vfs_s_get_line_interruptible (me, buffer, sizeof (buffer), shell_super->sockr); if ((res == 0) || (res == EINTR)) ERRNOR (ECONNRESET, FALSE); if (strncmp (buffer, "### ", 4) == 0) break; - fish_super->host_flags = atol (buffer); + shell_super->host_flags = atol (buffer); } return TRUE; } @@ -515,18 +516,18 @@ fish_info (struct vfs_class *me, struct vfs_s_super *super) /* --------------------------------------------------------------------------------------------- */ static void -fish_open_archive_pipeopen (struct vfs_s_super *super) +shell_open_archive_pipeopen (struct vfs_s_super *super) { char gbuf[10]; const char *argv[10]; /* All of 10 is used now */ - const char *xsh = (super->path_element->port == FISH_FLAG_RSH ? "rsh" : "ssh"); + const char *xsh = (super->path_element->port == SHELL_FLAG_RSH ? "rsh" : "ssh"); int i = 0; argv[i++] = xsh; - if (super->path_element->port == FISH_FLAG_COMPRESSED) + if (super->path_element->port == SHELL_FLAG_COMPRESSED) argv[i++] = "-C"; - if (super->path_element->port > FISH_FLAG_RSH) + if (super->path_element->port > SHELL_FLAG_RSH) { argv[i++] = "-p"; g_snprintf (gbuf, sizeof (gbuf), "%d", super->path_element->port); @@ -552,23 +553,23 @@ fish_open_archive_pipeopen (struct vfs_s_super *super) } argv[i++] = super->path_element->host; - argv[i++] = "echo FISH:; /bin/sh"; + argv[i++] = "echo SHELL:; /bin/sh"; argv[i++] = NULL; - fish_pipeopen (super, xsh, argv); + shell_pipeopen (super, xsh, argv); } /* --------------------------------------------------------------------------------------------- */ static gboolean -fish_open_archive_talk (struct vfs_class *me, struct vfs_s_super *super) +shell_open_archive_talk (struct vfs_class *me, struct vfs_s_super *super) { - fish_super_t *fish_super = FISH_SUPER (super); + shell_super_t *shell_super = SHELL_SUPER (super); char answer[2048]; - printf ("\n%s\n", _("fish: Waiting for initial line...")); + printf ("\n%s\n", _("shell: Waiting for initial line...")); - if (vfs_s_get_line (me, fish_super->sockr, answer, sizeof (answer), ':') == 0) + if (vfs_s_get_line (me, shell_super->sockr, answer, sizeof (answer), ':') == 0) return FALSE; if (strstr (answer, "assword") != NULL) @@ -584,7 +585,8 @@ fish_open_archive_talk (struct vfs_class *me, struct vfs_s_super *super) { char *p, *op; - p = g_strdup_printf (_("fish: Password is required for %s"), super->path_element->user); + p = g_strdup_printf (_("shell: Password is required for %s"), + super->path_element->user); op = vfs_get_password (p); g_free (p); if (op == NULL) @@ -592,14 +594,14 @@ fish_open_archive_talk (struct vfs_class *me, struct vfs_s_super *super) super->path_element->password = op; } - printf ("\n%s\n", _("fish: Sending password...")); + printf ("\n%s\n", _("shell: Sending password...")); { size_t str_len; str_len = strlen (super->path_element->password); - if ((write (fish_super.sockw, super->path_element->password, str_len) != - (ssize_t) str_len) || (write (fish_super->sockw, "\n", 1) != 1)) + if ((write (shell_super.sockw, super->path_element->password, str_len) != + (ssize_t) str_len) || (write (shell_super->sockw, "\n", 1) != 1)) return FALSE; } #endif @@ -610,7 +612,7 @@ fish_open_archive_talk (struct vfs_class *me, struct vfs_s_super *super) /* --------------------------------------------------------------------------------------------- */ static int -fish_open_archive_int (struct vfs_class *me, struct vfs_s_super *super) +shell_open_archive_int (struct vfs_class *me, struct vfs_s_super *super) { gboolean ftalk; @@ -618,10 +620,10 @@ fish_open_archive_int (struct vfs_class *me, struct vfs_s_super *super) pre_exec (); /* open pipe */ - fish_open_archive_pipeopen (super); + shell_open_archive_pipeopen (super); /* Start talk with ssh-server (password prompt, etc ) */ - ftalk = fish_open_archive_talk (me, super); + ftalk = shell_open_archive_talk (me, super); /* show panels */ post_exec (); @@ -629,31 +631,18 @@ fish_open_archive_int (struct vfs_class *me, struct vfs_s_super *super) if (!ftalk) ERRNOR (E_PROTO, -1); - vfs_print_message ("%s", _("fish: Sending initial line...")); - /* - * Run 'start_fish_server'. If it doesn't exist - no problem, - * we'll talk directly to the shell. - */ - - if (fish_command - (me, super, WAIT_REPLY, "#FISH\necho; start_fish_server 2>&1; echo '### 200'\n", - -1) != COMPLETE) - ERRNOR (E_PROTO, -1); - - vfs_print_message ("%s", _("fish: Handshaking version...")); - if (fish_command (me, super, WAIT_REPLY, "#VER 0.0.3\necho '### 000'\n", -1) != COMPLETE) - ERRNOR (E_PROTO, -1); + vfs_print_message ("%s", _("shell: Sending initial line...")); /* Set up remote locale to C, otherwise dates cannot be recognized */ - if (fish_command + if (shell_command (me, super, WAIT_REPLY, "LANG=C LC_ALL=C LC_TIME=C; export LANG LC_ALL LC_TIME;\n" "echo '### 200'\n", -1) != COMPLETE) ERRNOR (E_PROTO, -1); - vfs_print_message ("%s", _("fish: Getting host info...")); - if (fish_info (me, super)) - FISH_SUPER (super)->scr_env = fish_set_env (FISH_SUPER (super)->host_flags); + vfs_print_message ("%s", _("shell: Getting host info...")); + if (shell_info (me, super)) + SHELL_SUPER (super)->scr_env = shell_set_env (SHELL_SUPER (super)->host_flags); #if 0 super->name = @@ -663,7 +652,7 @@ fish_open_archive_int (struct vfs_class *me, struct vfs_s_super *super) super->name = g_strdup (PATH_SEP_STR); #endif - super->root = vfs_s_new_inode (me, super, fish_default_stat (me)); + super->root = vfs_s_new_inode (me, super, shell_default_stat (me)); return 0; } @@ -671,68 +660,72 @@ fish_open_archive_int (struct vfs_class *me, struct vfs_s_super *super) /* --------------------------------------------------------------------------------------------- */ static int -fish_open_archive (struct vfs_s_super *super, - const vfs_path_t * vpath, const vfs_path_element_t * vpath_element) +shell_open_archive (struct vfs_s_super *super, + const vfs_path_t * vpath, const vfs_path_element_t * vpath_element) { - fish_super_t *fish_super = FISH_SUPER (super); + shell_super_t *shell_super = SHELL_SUPER (super); (void) vpath; super->path_element = vfs_path_element_clone (vpath_element); if (strncmp (vpath_element->vfs_prefix, "rsh", 3) == 0) - super->path_element->port = FISH_FLAG_RSH; - - fish_super->scr_ls = - fish_load_script_from_file (super->path_element->host, FISH_LS_FILE, FISH_LS_DEF_CONTENT); - fish_super->scr_exists = - fish_load_script_from_file (super->path_element->host, FISH_EXISTS_FILE, - FISH_EXISTS_DEF_CONTENT); - fish_super->scr_mkdir = - fish_load_script_from_file (super->path_element->host, FISH_MKDIR_FILE, - FISH_MKDIR_DEF_CONTENT); - fish_super->scr_unlink = - fish_load_script_from_file (super->path_element->host, FISH_UNLINK_FILE, - FISH_UNLINK_DEF_CONTENT); - fish_super->scr_chown = - fish_load_script_from_file (super->path_element->host, FISH_CHOWN_FILE, - FISH_CHOWN_DEF_CONTENT); - fish_super->scr_chmod = - fish_load_script_from_file (super->path_element->host, FISH_CHMOD_FILE, - FISH_CHMOD_DEF_CONTENT); - fish_super->scr_utime = - fish_load_script_from_file (super->path_element->host, FISH_UTIME_FILE, - FISH_UTIME_DEF_CONTENT); - fish_super->scr_rmdir = - fish_load_script_from_file (super->path_element->host, FISH_RMDIR_FILE, - FISH_RMDIR_DEF_CONTENT); - fish_super->scr_ln = - fish_load_script_from_file (super->path_element->host, FISH_LN_FILE, FISH_LN_DEF_CONTENT); - fish_super->scr_mv = - fish_load_script_from_file (super->path_element->host, FISH_MV_FILE, FISH_MV_DEF_CONTENT); - fish_super->scr_hardlink = - fish_load_script_from_file (super->path_element->host, FISH_HARDLINK_FILE, - FISH_HARDLINK_DEF_CONTENT); - fish_super->scr_get = - fish_load_script_from_file (super->path_element->host, FISH_GET_FILE, FISH_GET_DEF_CONTENT); - fish_super->scr_send = - fish_load_script_from_file (super->path_element->host, FISH_SEND_FILE, - FISH_SEND_DEF_CONTENT); - fish_super->scr_append = - fish_load_script_from_file (super->path_element->host, FISH_APPEND_FILE, - FISH_APPEND_DEF_CONTENT); - fish_super->scr_info = - fish_load_script_from_file (super->path_element->host, FISH_INFO_FILE, - FISH_INFO_DEF_CONTENT); - - return fish_open_archive_int (vpath_element->class, super); + super->path_element->port = SHELL_FLAG_RSH; + + shell_super->scr_ls = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_LS_FILE, + VFS_SHELL_LS_DEF_CONTENT); + shell_super->scr_exists = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_EXISTS_FILE, + VFS_SHELL_EXISTS_DEF_CONTENT); + shell_super->scr_mkdir = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_MKDIR_FILE, + VFS_SHELL_MKDIR_DEF_CONTENT); + shell_super->scr_unlink = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_UNLINK_FILE, + VFS_SHELL_UNLINK_DEF_CONTENT); + shell_super->scr_chown = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_CHOWN_FILE, + VFS_SHELL_CHOWN_DEF_CONTENT); + shell_super->scr_chmod = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_CHMOD_FILE, + VFS_SHELL_CHMOD_DEF_CONTENT); + shell_super->scr_utime = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_UTIME_FILE, + VFS_SHELL_UTIME_DEF_CONTENT); + shell_super->scr_rmdir = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_RMDIR_FILE, + VFS_SHELL_RMDIR_DEF_CONTENT); + shell_super->scr_ln = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_LN_FILE, + VFS_SHELL_LN_DEF_CONTENT); + shell_super->scr_mv = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_MV_FILE, + VFS_SHELL_MV_DEF_CONTENT); + shell_super->scr_hardlink = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_HARDLINK_FILE, + VFS_SHELL_HARDLINK_DEF_CONTENT); + shell_super->scr_get = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_GET_FILE, + VFS_SHELL_GET_DEF_CONTENT); + shell_super->scr_send = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_SEND_FILE, + VFS_SHELL_SEND_DEF_CONTENT); + shell_super->scr_append = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_APPEND_FILE, + VFS_SHELL_APPEND_DEF_CONTENT); + shell_super->scr_info = + shell_load_script_from_file (super->path_element->host, VFS_SHELL_INFO_FILE, + VFS_SHELL_INFO_DEF_CONTENT); + + return shell_open_archive_int (vpath_element->class, super); } /* --------------------------------------------------------------------------------------------- */ static int -fish_archive_same (const vfs_path_element_t * vpath_element, struct vfs_s_super *super, - const vfs_path_t * vpath, void *cookie) +shell_archive_same (const vfs_path_element_t * vpath_element, struct vfs_s_super *super, + const vfs_path_t * vpath, void *cookie) { vfs_path_element_t *path_element; int result; @@ -757,7 +750,7 @@ fish_archive_same (const vfs_path_element_t * vpath_element, struct vfs_s_super /* --------------------------------------------------------------------------------------------- */ static void -fish_parse_ls (char *buffer, struct vfs_s_entry *ent) +shell_parse_ls (char *buffer, struct vfs_s_entry *ent) { #define ST ent->ino->st @@ -914,7 +907,7 @@ fish_parse_ls (char *buffer, struct vfs_s_entry *ent) /* --------------------------------------------------------------------------------------------- */ static int -fish_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote_path) +shell_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote_path) { struct vfs_s_super *super = dir->super; char buffer[BUF_8K] = "\0"; @@ -923,20 +916,20 @@ fish_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote int reply_code; /* - * Simple FISH debug interface :] + * Simple SHELL debug interface :] */ #if 0 if (me->logfile == NULL) - me->logfile = fopen ("/tmp/mc-FISH.sh", "w"); + me->logfile = fopen ("/tmp/mc-SHELL.sh", "w"); #endif - vfs_print_message (_("fish: Reading directory %s..."), remote_path); + vfs_print_message (_("shell: Reading directory %s..."), remote_path); - dir->timestamp = g_get_monotonic_time () + fish_directory_timeout * G_USEC_PER_SEC; + dir->timestamp = g_get_monotonic_time () + shell_directory_timeout * G_USEC_PER_SEC; quoted_path = strutils_shell_escape (remote_path); - (void) fish_command_v (me, super, NONE, FISH_SUPER (super)->scr_ls, "FISH_FILENAME=%s;\n", - quoted_path); + (void) shell_command_v (me, super, NONE, SHELL_SUPER (super)->scr_ls, "SHELL_FILENAME=%s;\n", + quoted_path); g_free (quoted_path); ent = vfs_s_generate_entry (me, NULL, dir, 0); @@ -945,7 +938,8 @@ fish_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote { int res; - res = vfs_s_get_line_interruptible (me, buffer, sizeof (buffer), FISH_SUPER (super)->sockr); + res = + vfs_s_get_line_interruptible (me, buffer, sizeof (buffer), SHELL_SUPER (super)->sockr); if ((res == 0) || (res == EINTR)) { @@ -963,7 +957,7 @@ fish_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote break; if (buffer[0] != '\0') - fish_parse_ls (buffer, ent); + shell_parse_ls (buffer, ent); else if (ent->name != NULL) { vfs_s_insert_entry (me, dir, ent); @@ -972,7 +966,7 @@ fish_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote } vfs_s_free_entry (me, ent); - reply_code = fish_decode_reply (buffer + 4, 0); + reply_code = shell_decode_reply (buffer + 4, 0); if (reply_code == COMPLETE) { vfs_print_message (_("%s: done."), me->name); @@ -989,11 +983,11 @@ fish_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote /* --------------------------------------------------------------------------------------------- */ static int -fish_file_store (struct vfs_class *me, vfs_file_handler_t * fh, char *name, char *localname) +shell_file_store (struct vfs_class *me, vfs_file_handler_t * fh, char *name, char *localname) { - fish_file_handler_t *fish = FISH_FILE_HANDLER (fh); + shell_file_handler_t *shell = SHELL_FILE_HANDLER (fh); struct vfs_s_super *super = VFS_FILE_HANDLER_SUPER (fh); - fish_super_t *fish_super = FISH_SUPER (super); + shell_super_t *shell_super = SHELL_SUPER (super); int code; off_t total = 0; char buffer[BUF_8K]; @@ -1040,14 +1034,14 @@ fish_file_store (struct vfs_class *me, vfs_file_handler_t * fh, char *name, char */ quoted_name = strutils_shell_escape (name); - vfs_print_message (_("fish: store %s: sending command..."), quoted_name); + vfs_print_message (_("shell: store %s: sending command..."), quoted_name); /* FIXME: File size is limited to ULONG_MAX */ code = - fish_command_v (me, super, WAIT_REPLY, - fish->append ? fish_super->scr_append : fish_super->scr_send, - "FISH_FILENAME=%s FISH_FILESIZE=%" PRIuMAX ";\n", quoted_name, - (uintmax_t) s.st_size); + shell_command_v (me, super, WAIT_REPLY, + shell->append ? shell_super->scr_append : shell_super->scr_send, + "SHELL_FILENAME=%s SHELL_FILESIZE=%" PRIuMAX ";\n", quoted_name, + (uintmax_t) s.st_size); g_free (quoted_name); if (code != PRELIM) @@ -1064,7 +1058,7 @@ fish_file_store (struct vfs_class *me, vfs_file_handler_t * fh, char *name, char { if ((errno == EINTR) && tty_got_interrupt ()) continue; - vfs_print_message ("%s", _("fish: Local read failed, sending zeros")); + vfs_print_message ("%s", _("shell: Local read failed, sending zeros")); close (h); h = open ("/dev/zero", O_RDONLY); } @@ -1072,7 +1066,7 @@ fish_file_store (struct vfs_class *me, vfs_file_handler_t * fh, char *name, char if (n == 0) break; - t = write (fish_super->sockw, buffer, n); + t = write (shell_super->sockw, buffer, n); if (t != n) { if (t == -1) @@ -1083,27 +1077,27 @@ fish_file_store (struct vfs_class *me, vfs_file_handler_t * fh, char *name, char } tty_disable_interrupt_key (); total += n; - vfs_print_message ("%s: %" PRIuMAX "/%" PRIuMAX, _("fish: storing file"), + vfs_print_message ("%s: %" PRIuMAX "/%" PRIuMAX, _("shell: storing file"), (uintmax_t) total, (uintmax_t) s.st_size); } close (h); - if (fish_get_reply (me, fish_super->sockr, NULL, 0) != COMPLETE) + if (shell_get_reply (me, shell_super->sockr, NULL, 0) != COMPLETE) ERRNOR (E_REMOTE, -1); return 0; error_return: close (h); - fish_get_reply (me, fish_super->sockr, NULL, 0); + shell_get_reply (me, shell_super->sockr, NULL, 0); return -1; } /* --------------------------------------------------------------------------------------------- */ static int -fish_linear_start (struct vfs_class *me, vfs_file_handler_t * fh, off_t offset) +shell_linear_start (struct vfs_class *me, vfs_file_handler_t * fh, off_t offset) { - fish_file_handler_t *fish = FISH_FILE_HANDLER (fh); + shell_file_handler_t *shell = SHELL_FILE_HANDLER (fh); struct vfs_s_super *super = VFS_FILE_HANDLER_SUPER (fh); char *name; char *quoted_name; @@ -1113,7 +1107,7 @@ fish_linear_start (struct vfs_class *me, vfs_file_handler_t * fh, off_t offset) return 0; quoted_name = strutils_shell_escape (name); g_free (name); - fish->append = FALSE; + shell->append = FALSE; /* * Check whether the remote file is readable by using 'dd' to copy @@ -1123,20 +1117,20 @@ fish_linear_start (struct vfs_class *me, vfs_file_handler_t * fh, off_t offset) */ offset = - fish_command_v (me, super, WANT_STRING, FISH_SUPER (super)->scr_get, - "FISH_FILENAME=%s FISH_START_OFFSET=%" PRIuMAX ";\n", quoted_name, - (uintmax_t) offset); + shell_command_v (me, super, WANT_STRING, SHELL_SUPER (super)->scr_get, + "SHELL_FILENAME=%s SHELL_START_OFFSET=%" PRIuMAX ";\n", quoted_name, + (uintmax_t) offset); g_free (quoted_name); if (offset != PRELIM) ERRNOR (E_REMOTE, 0); fh->linear = LS_LINEAR_OPEN; - fish->got = 0; + shell->got = 0; errno = 0; #if SIZEOF_OFF_T == SIZEOF_LONG - fish->total = (off_t) strtol (reply_str, NULL, 10); + shell->total = (off_t) strtol (reply_str, NULL, 10); #else - fish->total = (off_t) g_ascii_strtoll (reply_str, NULL, 10); + shell->total = (off_t) g_ascii_strtoll (reply_str, NULL, 10); #endif if (errno != 0) ERRNOR (E_REMOTE, 0); @@ -1146,9 +1140,9 @@ fish_linear_start (struct vfs_class *me, vfs_file_handler_t * fh, off_t offset) /* --------------------------------------------------------------------------------------------- */ static void -fish_linear_abort (struct vfs_class *me, vfs_file_handler_t * fh) +shell_linear_abort (struct vfs_class *me, vfs_file_handler_t * fh) { - fish_file_handler_t *fish = FISH_FILE_HANDLER (fh); + shell_file_handler_t *shell = SHELL_FILE_HANDLER (fh); struct vfs_s_super *super = VFS_FILE_HANDLER_SUPER (fh); char buffer[BUF_8K]; ssize_t n; @@ -1157,18 +1151,18 @@ fish_linear_abort (struct vfs_class *me, vfs_file_handler_t * fh) do { - n = MIN ((off_t) sizeof (buffer), (fish->total - fish->got)); + n = MIN ((off_t) sizeof (buffer), (shell->total - shell->got)); if (n != 0) { - n = read (FISH_SUPER (super)->sockr, buffer, n); + n = read (SHELL_SUPER (super)->sockr, buffer, n); if (n < 0) return; - fish->got += n; + shell->got += n; } } while (n != 0); - if (fish_get_reply (me, FISH_SUPER (super)->sockr, NULL, 0) != COMPLETE) + if (shell_get_reply (me, SHELL_SUPER (super)->sockr, NULL, 0) != COMPLETE) vfs_print_message ("%s", _("Error reported after abort.")); else vfs_print_message ("%s", _("Aborted transfer would be successful.")); @@ -1177,15 +1171,15 @@ fish_linear_abort (struct vfs_class *me, vfs_file_handler_t * fh) /* --------------------------------------------------------------------------------------------- */ static ssize_t -fish_linear_read (struct vfs_class *me, vfs_file_handler_t * fh, void *buf, size_t len) +shell_linear_read (struct vfs_class *me, vfs_file_handler_t * fh, void *buf, size_t len) { - fish_file_handler_t *fish = FISH_FILE_HANDLER (fh); + shell_file_handler_t *shell = SHELL_FILE_HANDLER (fh); struct vfs_s_super *super = VFS_FILE_HANDLER_SUPER (fh); ssize_t n = 0; - len = MIN ((size_t) (fish->total - fish->got), len); + len = MIN ((size_t) (shell->total - shell->got), len); tty_disable_interrupt_key (); - while (len != 0 && ((n = read (FISH_SUPER (super)->sockr, buf, len)) < 0)) + while (len != 0 && ((n = read (SHELL_SUPER (super)->sockr, buf, len)) < 0)) { if ((errno == EINTR) && !tty_got_interrupt ()) continue; @@ -1194,10 +1188,10 @@ fish_linear_read (struct vfs_class *me, vfs_file_handler_t * fh, void *buf, size tty_enable_interrupt_key (); if (n > 0) - fish->got += n; + shell->got += n; else if (n < 0) - fish_linear_abort (me, fh); - else if (fish_get_reply (me, FISH_SUPER (super)->sockr, NULL, 0) != COMPLETE) + shell_linear_abort (me, fh); + else if (shell_get_reply (me, SHELL_SUPER (super)->sockr, NULL, 0) != COMPLETE) ERRNOR (E_REMOTE, -1); ERRNOR (errno, n); } @@ -1205,18 +1199,18 @@ fish_linear_read (struct vfs_class *me, vfs_file_handler_t * fh, void *buf, size /* --------------------------------------------------------------------------------------------- */ static void -fish_linear_close (struct vfs_class *me, vfs_file_handler_t * fh) +shell_linear_close (struct vfs_class *me, vfs_file_handler_t * fh) { - fish_file_handler_t *fish = FISH_FILE_HANDLER (fh); + shell_file_handler_t *shell = SHELL_FILE_HANDLER (fh); - if (fish->total != fish->got) - fish_linear_abort (me, fh); + if (shell->total != shell->got) + shell_linear_abort (me, fh); } /* --------------------------------------------------------------------------------------------- */ static int -fish_ctl (void *fh, int ctlop, void *arg) +shell_ctl (void *fh, int ctlop, void *arg) { (void) arg; (void) fh; @@ -1237,7 +1231,7 @@ fish_ctl (void *fh, int ctlop, void *arg) if (file->linear == LS_LINEAR_CLOSED || file->linear == LS_LINEAR_PREOPEN) return 0; - v = vfs_s_select_on_two (VFS_FILE_HANDLER_SUPER (fh)->u.fish.sockr, 0); + v = vfs_s_select_on_two (VFS_FILE_HANDLER_SUPER (fh)->u.shell.sockr, 0); return (((v < 0) && (errno == EINTR)) || v == 0) ? 1 : 0; } @@ -1250,7 +1244,7 @@ fish_ctl (void *fh, int ctlop, void *arg) /* --------------------------------------------------------------------------------------------- */ static int -fish_rename (const vfs_path_t * vpath1, const vfs_path_t * vpath2) +shell_rename (const vfs_path_t * vpath1, const vfs_path_t * vpath2) { const char *crpath1, *crpath2; char *rpath1, *rpath2; @@ -1272,8 +1266,8 @@ fish_rename (const vfs_path_t * vpath1, const vfs_path_t * vpath2) me = VFS_CLASS (vfs_path_get_last_path_vfs (vpath1)); ret = - fish_send_command (me, super2, OPT_FLUSH, FISH_SUPER (super)->scr_mv, - "FISH_FILEFROM=%s FISH_FILETO=%s;\n", rpath1, rpath2); + shell_send_command (me, super2, OPT_FLUSH, SHELL_SUPER (super)->scr_mv, + "SHELL_FILEFROM=%s SHELL_FILETO=%s;\n", rpath1, rpath2); g_free (rpath1); g_free (rpath2); @@ -1284,7 +1278,7 @@ fish_rename (const vfs_path_t * vpath1, const vfs_path_t * vpath2) /* --------------------------------------------------------------------------------------------- */ static int -fish_link (const vfs_path_t * vpath1, const vfs_path_t * vpath2) +shell_link (const vfs_path_t * vpath1, const vfs_path_t * vpath2) { const char *crpath1, *crpath2; char *rpath1, *rpath2; @@ -1306,8 +1300,8 @@ fish_link (const vfs_path_t * vpath1, const vfs_path_t * vpath2) me = VFS_CLASS (vfs_path_get_last_path_vfs (vpath1)); ret = - fish_send_command (me, super2, OPT_FLUSH, FISH_SUPER (super)->scr_hardlink, - "FISH_FILEFROM=%s FISH_FILETO=%s;\n", rpath1, rpath2); + shell_send_command (me, super2, OPT_FLUSH, SHELL_SUPER (super)->scr_hardlink, + "SHELL_FILEFROM=%s SHELL_FILETO=%s;\n", rpath1, rpath2); g_free (rpath1); g_free (rpath2); @@ -1318,7 +1312,7 @@ fish_link (const vfs_path_t * vpath1, const vfs_path_t * vpath2) /* --------------------------------------------------------------------------------------------- */ static int -fish_symlink (const vfs_path_t * vpath1, const vfs_path_t * vpath2) +shell_symlink (const vfs_path_t * vpath1, const vfs_path_t * vpath2) { char *qsetto; const char *crpath; @@ -1337,8 +1331,8 @@ fish_symlink (const vfs_path_t * vpath1, const vfs_path_t * vpath2) me = VFS_CLASS (vfs_path_get_last_path_vfs (vpath2)); ret = - fish_send_command (me, super, OPT_FLUSH, FISH_SUPER (super)->scr_ln, - "FISH_FILEFROM=%s FISH_FILETO=%s;\n", qsetto, rpath); + shell_send_command (me, super, OPT_FLUSH, SHELL_SUPER (super)->scr_ln, + "SHELL_FILEFROM=%s SHELL_FILETO=%s;\n", qsetto, rpath); g_free (qsetto); g_free (rpath); @@ -1349,43 +1343,43 @@ fish_symlink (const vfs_path_t * vpath1, const vfs_path_t * vpath2) /* --------------------------------------------------------------------------------------------- */ static int -fish_stat (const vfs_path_t * vpath, struct stat *buf) +shell_stat (const vfs_path_t * vpath, struct stat *buf) { int ret; ret = vfs_s_stat (vpath, buf); - fish_set_blksize (buf); + shell_set_blksize (buf); return ret; } /* --------------------------------------------------------------------------------------------- */ static int -fish_lstat (const vfs_path_t * vpath, struct stat *buf) +shell_lstat (const vfs_path_t * vpath, struct stat *buf) { int ret; ret = vfs_s_lstat (vpath, buf); - fish_set_blksize (buf); + shell_set_blksize (buf); return ret; } /* --------------------------------------------------------------------------------------------- */ static int -fish_fstat (void *vfs_info, struct stat *buf) +shell_fstat (void *vfs_info, struct stat *buf) { int ret; ret = vfs_s_fstat (vfs_info, buf); - fish_set_blksize (buf); + shell_set_blksize (buf); return ret; } /* --------------------------------------------------------------------------------------------- */ static int -fish_chmod (const vfs_path_t * vpath, mode_t mode) +shell_chmod (const vfs_path_t * vpath, mode_t mode) { const char *crpath; char *rpath; @@ -1402,9 +1396,9 @@ fish_chmod (const vfs_path_t * vpath, mode_t mode) me = VFS_CLASS (vfs_path_get_last_path_vfs (vpath)); ret = - fish_send_command (me, super, OPT_FLUSH, FISH_SUPER (super)->scr_chmod, - "FISH_FILENAME=%s FISH_FILEMODE=%4.4o;\n", rpath, - (unsigned int) (mode & 07777)); + shell_send_command (me, super, OPT_FLUSH, SHELL_SUPER (super)->scr_chmod, + "SHELL_FILENAME=%s SHELL_FILEMODE=%4.4o;\n", rpath, + (unsigned int) (mode & 07777)); g_free (rpath); @@ -1414,7 +1408,7 @@ fish_chmod (const vfs_path_t * vpath, mode_t mode) /* --------------------------------------------------------------------------------------------- */ static int -fish_chown (const vfs_path_t * vpath, uid_t owner, gid_t group) +shell_chown (const vfs_path_t * vpath, uid_t owner, gid_t group) { char *sowner, *sgroup; struct passwd *pw; @@ -1446,9 +1440,9 @@ fish_chown (const vfs_path_t * vpath, uid_t owner, gid_t group) /* FIXME: what should we report if chgrp succeeds but chown fails? */ ret = - fish_send_command (me, super, OPT_FLUSH, FISH_SUPER (super)->scr_chown, - "FISH_FILENAME=%s FISH_FILEOWNER=%s FISH_FILEGROUP=%s;\n", rpath, sowner, - sgroup); + shell_send_command (me, super, OPT_FLUSH, SHELL_SUPER (super)->scr_chown, + "SHELL_FILENAME=%s SHELL_FILEOWNER=%s SHELL_FILEGROUP=%s;\n", rpath, + sowner, sgroup); g_free (rpath); @@ -1458,7 +1452,7 @@ fish_chown (const vfs_path_t * vpath, uid_t owner, gid_t group) /* --------------------------------------------------------------------------------------------- */ static void -fish_get_atime (mc_timesbuf_t * times, time_t * sec, long *nsec) +shell_get_atime (mc_timesbuf_t * times, time_t * sec, long *nsec) { #ifdef HAVE_UTIMENSAT *sec = (*times)[0].tv_sec; @@ -1472,7 +1466,7 @@ fish_get_atime (mc_timesbuf_t * times, time_t * sec, long *nsec) /* --------------------------------------------------------------------------------------------- */ static void -fish_get_mtime (mc_timesbuf_t * times, time_t * sec, long *nsec) +shell_get_mtime (mc_timesbuf_t * times, time_t * sec, long *nsec) { #ifdef HAVE_UTIMENSAT *sec = (*times)[1].tv_sec; @@ -1486,7 +1480,7 @@ fish_get_mtime (mc_timesbuf_t * times, time_t * sec, long *nsec) /* --------------------------------------------------------------------------------------------- */ static int -fish_utime (const vfs_path_t * vpath, mc_timesbuf_t * times) +shell_utime (const vfs_path_t * vpath, mc_timesbuf_t * times) { char utcatime[16], utcmtime[16]; char utcatime_w_nsec[30], utcmtime_w_nsec[30]; @@ -1505,7 +1499,7 @@ fish_utime (const vfs_path_t * vpath, mc_timesbuf_t * times) rpath = strutils_shell_escape (crpath); - fish_get_atime (times, &atime, &atime_nsec); + shell_get_atime (times, &atime, &atime_nsec); gmt = gmtime (&atime); g_snprintf (utcatime, sizeof (utcatime), "%04d%02d%02d%02d%02d.%02d", gmt->tm_year + 1900, gmt->tm_mon + 1, gmt->tm_mday, @@ -1514,7 +1508,7 @@ fish_utime (const vfs_path_t * vpath, mc_timesbuf_t * times) gmt->tm_year + 1900, gmt->tm_mon + 1, gmt->tm_mday, gmt->tm_hour, gmt->tm_min, gmt->tm_sec, atime_nsec); - fish_get_mtime (times, &mtime, &mtime_nsec); + shell_get_mtime (times, &mtime, &mtime_nsec); gmt = gmtime (&mtime); g_snprintf (utcmtime, sizeof (utcmtime), "%04d%02d%02d%02d%02d.%02d", gmt->tm_year + 1900, gmt->tm_mon + 1, gmt->tm_mday, @@ -1525,11 +1519,11 @@ fish_utime (const vfs_path_t * vpath, mc_timesbuf_t * times) me = VFS_CLASS (vfs_path_get_last_path_vfs (vpath)); - ret = fish_send_command (me, super, OPT_FLUSH, FISH_SUPER (super)->scr_utime, - "FISH_FILENAME=%s FISH_FILEATIME=%ld FISH_FILEMTIME=%ld " - "FISH_TOUCHATIME=%s FISH_TOUCHMTIME=%s FISH_TOUCHATIME_W_NSEC=\"%s\" " - "FISH_TOUCHMTIME_W_NSEC=\"%s\";\n", rpath, (long) atime, (long) mtime, - utcatime, utcmtime, utcatime_w_nsec, utcmtime_w_nsec); + ret = shell_send_command (me, super, OPT_FLUSH, SHELL_SUPER (super)->scr_utime, + "SHELL_FILENAME=%s SHELL_FILEATIME=%ld SHELL_FILEMTIME=%ld " + "SHELL_TOUCHATIME=%s SHELL_TOUCHMTIME=%s SHELL_TOUCHATIME_W_NSEC=\"%s\" " + "SHELL_TOUCHMTIME_W_NSEC=\"%s\";\n", rpath, (long) atime, + (long) mtime, utcatime, utcmtime, utcatime_w_nsec, utcmtime_w_nsec); g_free (rpath); @@ -1539,7 +1533,7 @@ fish_utime (const vfs_path_t * vpath, mc_timesbuf_t * times) /* --------------------------------------------------------------------------------------------- */ static int -fish_unlink (const vfs_path_t * vpath) +shell_unlink (const vfs_path_t * vpath) { const char *crpath; char *rpath; @@ -1556,8 +1550,8 @@ fish_unlink (const vfs_path_t * vpath) me = VFS_CLASS (vfs_path_get_last_path_vfs (vpath)); ret = - fish_send_command (me, super, OPT_FLUSH, FISH_SUPER (super)->scr_unlink, - "FISH_FILENAME=%s;\n", rpath); + shell_send_command (me, super, OPT_FLUSH, SHELL_SUPER (super)->scr_unlink, + "SHELL_FILENAME=%s;\n", rpath); g_free (rpath); @@ -1567,7 +1561,7 @@ fish_unlink (const vfs_path_t * vpath) /* --------------------------------------------------------------------------------------------- */ static int -fish_exists (const vfs_path_t * vpath) +shell_exists (const vfs_path_t * vpath) { const char *crpath; char *rpath; @@ -1584,8 +1578,8 @@ fish_exists (const vfs_path_t * vpath) me = VFS_CLASS (vfs_path_get_last_path_vfs (vpath)); ret = - fish_send_command (me, super, OPT_FLUSH, FISH_SUPER (super)->scr_exists, - "FISH_FILENAME=%s;\n", rpath); + shell_send_command (me, super, OPT_FLUSH, SHELL_SUPER (super)->scr_exists, + "SHELL_FILENAME=%s;\n", rpath); g_free (rpath); @@ -1595,7 +1589,7 @@ fish_exists (const vfs_path_t * vpath) /* --------------------------------------------------------------------------------------------- */ static int -fish_mkdir (const vfs_path_t * vpath, mode_t mode) +shell_mkdir (const vfs_path_t * vpath, mode_t mode) { const char *crpath; char *rpath; @@ -1614,14 +1608,14 @@ fish_mkdir (const vfs_path_t * vpath, mode_t mode) me = VFS_CLASS (vfs_path_get_last_path_vfs (vpath)); ret = - fish_send_command (me, super, OPT_FLUSH, FISH_SUPER (super)->scr_mkdir, - "FISH_FILENAME=%s;\n", rpath); + shell_send_command (me, super, OPT_FLUSH, SHELL_SUPER (super)->scr_mkdir, + "SHELL_FILENAME=%s;\n", rpath); g_free (rpath); if (ret != 0) return ret; - if (fish_exists (vpath) == 0) + if (shell_exists (vpath) == 0) { me->verrno = EACCES; return -1; @@ -1632,7 +1626,7 @@ fish_mkdir (const vfs_path_t * vpath, mode_t mode) /* --------------------------------------------------------------------------------------------- */ static int -fish_rmdir (const vfs_path_t * vpath) +shell_rmdir (const vfs_path_t * vpath) { const char *crpath; char *rpath; @@ -1649,8 +1643,8 @@ fish_rmdir (const vfs_path_t * vpath) me = VFS_CLASS (vfs_path_get_last_path_vfs (vpath)); ret = - fish_send_command (me, super, OPT_FLUSH, FISH_SUPER (super)->scr_rmdir, - "FISH_FILENAME=%s;\n", rpath); + shell_send_command (me, super, OPT_FLUSH, SHELL_SUPER (super)->scr_rmdir, + "SHELL_FILENAME=%s;\n", rpath); g_free (rpath); @@ -1660,11 +1654,11 @@ fish_rmdir (const vfs_path_t * vpath) /* --------------------------------------------------------------------------------------------- */ static vfs_file_handler_t * -fish_fh_new (struct vfs_s_inode *ino, gboolean changed) +shell_fh_new (struct vfs_s_inode *ino, gboolean changed) { - fish_file_handler_t *fh; + shell_file_handler_t *fh; - fh = g_new0 (fish_file_handler_t, 1); + fh = g_new0 (shell_file_handler_t, 1); vfs_s_init_fh (VFS_FILE_HANDLER (fh), ino, changed); return VFS_FILE_HANDLER (fh); @@ -1673,9 +1667,9 @@ fish_fh_new (struct vfs_s_inode *ino, gboolean changed) /* --------------------------------------------------------------------------------------------- */ static int -fish_fh_open (struct vfs_class *me, vfs_file_handler_t * fh, int flags, mode_t mode) +shell_fh_open (struct vfs_class *me, vfs_file_handler_t * fh, int flags, mode_t mode) { - fish_file_handler_t *fish = FISH_FILE_HANDLER (fh); + shell_file_handler_t *shell = SHELL_FILE_HANDLER (fh); (void) mode; @@ -1684,7 +1678,7 @@ fish_fh_open (struct vfs_class *me, vfs_file_handler_t * fh, int flags, mode_t m { /* user pressed the button [ Append ] in the "Copy" dialog */ if ((flags & O_APPEND) != 0) - fish->append = TRUE; + shell->append = TRUE; if (fh->ino->localname == NULL) { @@ -1712,7 +1706,7 @@ fish_fh_open (struct vfs_class *me, vfs_file_handler_t * fh, int flags, mode_t m /* --------------------------------------------------------------------------------------------- */ static void -fish_fill_names (struct vfs_class *me, fill_names_f func) +shell_fill_names (struct vfs_class *me, fill_names_f func) { GList *iter; @@ -1726,14 +1720,14 @@ fish_fill_names (struct vfs_class *me, fill_names_f func) switch (super->path_element->port) { - case FISH_FLAG_RSH: + case SHELL_FLAG_RSH: flags = ":r"; break; - case FISH_FLAG_COMPRESSED: + case SHELL_FLAG_COMPRESSED: flags = ":C"; break; default: - if (super->path_element->port > FISH_FLAG_RSH) + if (super->path_element->port > SHELL_FLAG_RSH) { g_snprintf (gbuf, sizeof (gbuf), ":%d", super->path_element->port); flags = gbuf; @@ -1742,7 +1736,7 @@ fish_fill_names (struct vfs_class *me, fill_names_f func) } name = - g_strconcat (vfs_fish_ops->prefix, VFS_PATH_URL_DELIMITER, + g_strconcat (vfs_shell_ops->prefix, VFS_PATH_URL_DELIMITER, super->path_element->user, "@", super->path_element->host, flags, PATH_SEP_STR, super->path_element->path, (char *) NULL); func (name); @@ -1753,11 +1747,11 @@ fish_fill_names (struct vfs_class *me, fill_names_f func) /* --------------------------------------------------------------------------------------------- */ static void * -fish_open (const vfs_path_t * vpath, int flags, mode_t mode) +shell_open (const vfs_path_t * vpath, int flags, mode_t mode) { /* sorry, i've places hack here - cause fish don't able to open files with O_EXCL flag + cause shell don't able to open files with O_EXCL flag */ flags &= ~O_EXCL; return vfs_s_open (vpath, flags, mode); @@ -1768,38 +1762,38 @@ fish_open (const vfs_path_t * vpath, int flags, mode_t mode) /* --------------------------------------------------------------------------------------------- */ void -vfs_init_fish (void) +vfs_init_shell (void) { tcp_init (); - vfs_init_subclass (&fish_subclass, "fish", VFSF_REMOTE | VFSF_USETMP, "sh"); - vfs_fish_ops->fill_names = fish_fill_names; - vfs_fish_ops->stat = fish_stat; - vfs_fish_ops->lstat = fish_lstat; - vfs_fish_ops->fstat = fish_fstat; - vfs_fish_ops->chmod = fish_chmod; - vfs_fish_ops->chown = fish_chown; - vfs_fish_ops->utime = fish_utime; - vfs_fish_ops->open = fish_open; - vfs_fish_ops->symlink = fish_symlink; - vfs_fish_ops->link = fish_link; - vfs_fish_ops->unlink = fish_unlink; - vfs_fish_ops->rename = fish_rename; - vfs_fish_ops->mkdir = fish_mkdir; - vfs_fish_ops->rmdir = fish_rmdir; - vfs_fish_ops->ctl = fish_ctl; - fish_subclass.archive_same = fish_archive_same; - fish_subclass.new_archive = fish_new_archive; - fish_subclass.open_archive = fish_open_archive; - fish_subclass.free_archive = fish_free_archive; - fish_subclass.fh_new = fish_fh_new; - fish_subclass.fh_open = fish_fh_open; - fish_subclass.dir_load = fish_dir_load; - fish_subclass.file_store = fish_file_store; - fish_subclass.linear_start = fish_linear_start; - fish_subclass.linear_read = fish_linear_read; - fish_subclass.linear_close = fish_linear_close; - vfs_register_class (vfs_fish_ops); + vfs_init_subclass (&shell_subclass, "shell", VFSF_REMOTE | VFSF_USETMP, "sh"); + vfs_shell_ops->fill_names = shell_fill_names; + vfs_shell_ops->stat = shell_stat; + vfs_shell_ops->lstat = shell_lstat; + vfs_shell_ops->fstat = shell_fstat; + vfs_shell_ops->chmod = shell_chmod; + vfs_shell_ops->chown = shell_chown; + vfs_shell_ops->utime = shell_utime; + vfs_shell_ops->open = shell_open; + vfs_shell_ops->symlink = shell_symlink; + vfs_shell_ops->link = shell_link; + vfs_shell_ops->unlink = shell_unlink; + vfs_shell_ops->rename = shell_rename; + vfs_shell_ops->mkdir = shell_mkdir; + vfs_shell_ops->rmdir = shell_rmdir; + vfs_shell_ops->ctl = shell_ctl; + shell_subclass.archive_same = shell_archive_same; + shell_subclass.new_archive = shell_new_archive; + shell_subclass.open_archive = shell_open_archive; + shell_subclass.free_archive = shell_free_archive; + shell_subclass.fh_new = shell_fh_new; + shell_subclass.fh_open = shell_fh_open; + shell_subclass.dir_load = shell_dir_load; + shell_subclass.file_store = shell_file_store; + shell_subclass.linear_start = shell_linear_start; + shell_subclass.linear_read = shell_linear_read; + shell_subclass.linear_close = shell_linear_close; + vfs_register_class (vfs_shell_ops); } /* --------------------------------------------------------------------------------------------- */ |