From 8dd5aeb09d4fd540b90ba4028b518b2814ff25b5 Mon Sep 17 00:00:00 2001 From: ZyX Date: Fri, 25 Jan 2013 22:36:48 +0400 Subject: [PATCH] Remove "$()" method in pre-prompt hook Using "$()" method on pre-prompt hook is just asking for security trouble. --- powerline/bindings/bash/powerline.sh | 8 ++------ powerline/renderers/shell.py | 4 ++++ powerline/renderers/zsh_prompt.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/powerline/bindings/bash/powerline.sh b/powerline/bindings/bash/powerline.sh index c24ca077..18757743 100644 --- a/powerline/bindings/bash/powerline.sh +++ b/powerline/bindings/bash/powerline.sh @@ -1,8 +1,3 @@ -_powerline_prompt_command() { - export PS1="$(powerline-prompt --last_exit_code=$? left)" - _powerline_tmux_set_pwd -} - _powerline_tmux_setenv() { if [[ -n "$TMUX" ]]; then tmux setenv TMUX_"$1"_$(tmux display -p "#D" | tr -d %) "$2" @@ -20,4 +15,5 @@ _powerline_tmux_set_columns() { trap "_powerline_tmux_set_columns" SIGWINCH kill -SIGWINCH "$$" -export PROMPT_COMMAND="_powerline_prompt_command" +export PROMPT_COMMAND="_powerline_tmux_set_pwd" +PS1='$(powerline-prompt --last_exit_code=$? left)' diff --git a/powerline/renderers/shell.py b/powerline/renderers/shell.py index 14246998..3797429f 100644 --- a/powerline/renderers/shell.py +++ b/powerline/renderers/shell.py @@ -36,3 +36,7 @@ class ShellRenderer(Renderer): if attr & Renderer.ATTR_BOLD: ansi += [1] return '[{0}m'.format(';'.join(str(attr) for attr in ansi)) + + @staticmethod + def escape(string): + return string.replace('\\', '\\\\') diff --git a/powerline/renderers/zsh_prompt.py b/powerline/renderers/zsh_prompt.py index 0a37cadb..f0d0e533 100644 --- a/powerline/renderers/zsh_prompt.py +++ b/powerline/renderers/zsh_prompt.py @@ -15,4 +15,4 @@ class ZshPromptRenderer(ShellRenderer): @staticmethod def escape(string): - return string.replace('%', '%%') + return string.replace('%', '%%').replace('\\', '\\\\')