void-packages/srcpkgs/mc/patches/mc-mksh-subshell-v2.patch
Đoàn Trần Công Danh 765e304c4b srcpkgs/m*: convert patches to -Np1
```sh
git grep -l '^patch_args=-Np0' "srcpkgs/$1*/template" |
while read template; do
	for p in ${template%/template}/patches/*; do
		sed -i '
			\,^[+-][+-][+-] /dev/null,b
			/^[*-]\+ [0-9]\+\(,[0-9]\+\)\? [*-]\+$/b
			s,^[*][*][*] ,&a/,
			/^--- /{
				s,\(^--- \)\(./\)*,\1a/,
				s,[.][Oo][Rr][Ii][Gg]\([	/]\),\1,
				s/[.][Oo][Rr][Ii][Gg]$//
				s/[.]patched[.]\([^.]\)/.\1/
				h
			}
			/^+++ -/{
				g
				s/^--- a/+++ b/
				b
			}
			s,\(^+++ \)\(./\)*,\1b/,
		' "$p"
	done
	sed -i '/^patch_args=/d' $template
done
```
2021-06-20 13:17:29 +07:00

73 lines
2.7 KiB
Diff

--- a/lib/shell.c 2016-09-22 18:24:12.000000000 +0000
+++ b/lib/shell.c 2017-02-16 13:47:34.933939000 +0000
@@ -66,6 +66,10 @@
/* 3rd choice: look for existing shells supported as MC subshells. */
if (access ("/bin/bash", X_OK) == 0)
mc_shell->path = g_strdup ("/bin/bash");
+ else if (access ("/usr/local/bin/mksh", X_OK) == 0)
+ mc_shell->path = g_strdup ("/usr/local/bin/mksh");
+ else if (access ("/bin/mksh", X_OK) == 0)
+ mc_shell->path = g_strdup ("/bin/mksh");
else if (access ("/bin/ash", X_OK) == 0)
mc_shell->path = g_strdup ("/bin/ash");
else if (access ("/bin/dash", X_OK) == 0)
@@ -149,6 +153,12 @@
mc_shell->type = SHELL_ZSH;
mc_shell->name = "zsh";
}
+ else if (strstr (mc_shell->path, "/mksh") != NULL
+ || strstr (mc_shell->real_path, "/mksh") != NULL)
+ {
+ mc_shell->type = SHELL_MKSH;
+ mc_shell->name = "mksh";
+ }
else if (strstr (mc_shell->path, "/tcsh") != NULL
|| strstr (mc_shell->real_path, "/tcsh") != NULL)
{
diff -Naur mc-4.8.18.orig/lib/shell.h mc-4.8.18/lib/shell.h
--- a/lib/shell.h 2016-03-12 15:45:47.000000000 +0000
+++ b/lib/shell.h 2017-02-15 21:57:39.000000000 +0000
@@ -12,6 +12,7 @@
typedef enum
{
SHELL_NONE,
+ SHELL_MKSH,
SHELL_SH,
SHELL_BASH,
SHELL_ASH_BUSYBOX, /* BusyBox default shell (ash) */
diff -Naur mc-4.8.18.orig/src/subshell/common.c mc-4.8.18/src/subshell/common.c
--- a/src/subshell/common.c 2016-09-22 18:24:12.000000000 +0000
+++ b/src/subshell/common.c 2017-02-20 18:48:22.681514000 +0000
@@ -320,6 +320,12 @@
break;
+ case SHELL_MKSH:
+ init_file = g_strdup (".shrc");
+ putenv_str = g_strconcat ("ENV=", init_file, (char *) NULL);
+ putenv (putenv_str);
+ break;
+
/* TODO: Find a way to pass initfile to TCSH, ZSH and FISH */
case SHELL_TCSH:
case SHELL_ZSH:
@@ -367,6 +373,7 @@
case SHELL_ASH_BUSYBOX:
case SHELL_DASH:
+ case SHELL_MKSH:
case SHELL_TCSH:
case SHELL_FISH:
execl (mc_global.shell->path, mc_global.shell->path, (char *) NULL);
@@ -801,6 +808,11 @@
"PS1='\\u@\\h:\\w\\$ '\n", subshell_pipe[WRITE]);
break;
+ case SHELL_MKSH:
+ g_snprintf (precmd, buff_size,
+ "PS1='$(pwd>&%d; kill -STOP $$)'\"$((( USER_ID )) && print '$ ' || print '# ')\"\n", subshell_pipe[WRITE]);
+ break;
+
case SHELL_ASH_BUSYBOX:
/* BusyBox ash needs a somewhat complicated precmd emulation via PS1, and it is vital
* that BB be built with active CONFIG_ASH_EXPAND_PRMT, but this is the default anyway.