From a6410994c28a034acb88c84894fe1af11a9afc01 Mon Sep 17 00:00:00 2001 From: xiaonaitong Date: Wed, 14 Sep 2011 13:56:30 +0800 Subject: [PATCH] quick fix so thant it works on mingw and bash 3.1 --- autojump | 35 ++++++++++++++++++----------------- autojump.bash | 18 +++++++++++------- install.sh | 20 ++++++++++---------- 3 files changed, 39 insertions(+), 34 deletions(-) diff --git a/autojump b/autojump index 7b3aaf4..114dd61 100755 --- a/autojump +++ b/autojump @@ -55,23 +55,24 @@ def save(path_dict, dic_file): a backup file.""" # If the dic_file exists, check that it belongs to us # Otherwise, fail quietly - if (not os.path.exists(dic_file)) or os.getuid() == os.stat(dic_file)[4]: - temp = NamedTemporaryFile(dir=CONFIG_DIR, delete=False) - pickle.dump(path_dict, temp, 2) - temp.flush() - os.fsync(temp) - temp.close() - #cf. http://thunk.org/tytso/blog/2009/03/15/dont-fear-the-fsync/ - os.rename(temp.name, dic_file) - try: #backup file - import time - if (not os.path.exists(dic_file+".bak") or - time.time()-os.path.getmtime(dic_file+".bak")>86400): - import shutil - shutil.copy(dic_file, dic_file+".bak") - except OSError as ex: - print("Error while creating backup autojump file. (%s)" % - ex, file=stderr) + temp = NamedTemporaryFile(dir=CONFIG_DIR, delete=False) + pickle.dump(path_dict, temp, 2) + temp.flush() + os.fsync(temp) + temp.close() + #cf. http://thunk.org/tytso/blog/2009/03/15/dont-fear-the-fsync/ + #os.rename(temp.name, dic_file) + import shutil + shutil.copy(temp.name, dic_file) + try: #backup file + import time + if (not os.path.exists(dic_file+".bak") or + time.time()-os.path.getmtime(dic_file+".bak")>86400): + import shutil + shutil.copy(dic_file, dic_file+".bak") + except OSError as ex: + print("Error while creating backup autojump file. (%s)" % + ex, file=stderr) def forget(path_dict, dic_file): """Gradually forget about directories. Only call diff --git a/autojump.bash b/autojump.bash index aad91a8..59d0cb9 100644 --- a/autojump.bash +++ b/autojump.bash @@ -19,10 +19,11 @@ _autojump() { local cur cur=${COMP_WORDS[*]:1} - while read i + comps=$(autojump --bash --completion $cur) + for i in $comps do COMPREPLY=("${COMPREPLY[@]}" "${i}") - done < <(autojump --bash --completion $cur) + done } complete -F _autojump j @@ -43,9 +44,12 @@ then fi export AUTOJUMP_HOME=${HOME} -AUTOJUMP='{ [[ "$AUTOJUMP_HOME" == "$HOME" ]] && (autojump -a "$(pwd -P)"&)>/dev/null 2>>${AUTOJUMP_DATA_DIR}/.autojump_errors;} 2>/dev/null' -if [[ ! $PROMPT_COMMAND =~ autojump ]]; then - export PROMPT_COMMAND="$AUTOJUMP ; ${PROMPT_COMMAND:-:}" -fi +AUTOJUMP='{ [[ "$AUTOJUMP_HOME" == "$HOME" ]] && (autojump -a "$(pwd -P)"&)>/dev/null 2>>"${AUTOJUMP_DATA_DIR}/.autojump_errors";} 2>/dev/null' + +case $PROMPT_COMMAND in + *autojump*) ;; + *) export PROMPT_COMMAND="$AUTOJUMP ; ${PROMPT_COMMAND:-:}";; +esac + alias jumpstat="autojump --stat" -function j { new_path="$(autojump $@)";if [ -n "$new_path" ]; then echo -e "\\033[31m${new_path}\\033[0m"; cd "$new_path";else false; fi } +function j { new_path="$(autojump --bash $@)";if [ -n "$new_path" ]; then echo -e "\\033[31m${new_path}\\033[0m"; cd "$new_path";else false; fi } diff --git a/install.sh b/install.sh index 58e0644..89db3ae 100755 --- a/install.sh +++ b/install.sh @@ -16,7 +16,7 @@ #along with autojump. If not, see . function show_help { - echo "sudo ./install.sh [--prefix /usr/local]" + echo " ./install.sh [--prefix /usr/local]" } # Default install directory. @@ -41,17 +41,17 @@ done echo "Installing to ${prefix} ..." # INSTALL AUTOJUMP -sudo mkdir -p ${prefix}/share/autojump/ -sudo mkdir -p ${prefix}/bin/ -sudo mkdir -p ${prefix}/share/man/man1/ -sudo cp icon.png ${prefix}/share/autojump/ -sudo cp jumpapplet ${prefix}/bin/ -sudo cp autojump ${prefix}/bin/ -sudo cp autojump.1 ${prefix}/share/man/man1/ + mkdir -p ${prefix}/share/autojump/ + mkdir -p ${prefix}/bin/ + mkdir -p ${prefix}/share/man/man1/ + cp icon.png ${prefix}/share/autojump/ + cp jumpapplet ${prefix}/bin/ + cp autojump ${prefix}/bin/ + cp autojump.1 ${prefix}/share/man/man1/ if [ -d "/etc/profile.d" ]; then - sudo cp autojump.bash /etc/profile.d/ - sudo cp autojump.sh /etc/profile.d/ + cp autojump.bash /etc/profile.d/ + cp autojump.sh /etc/profile.d/ # Make sure that the code we just copied has been sourced. # check if .bashrc has sourced /etc/profile or /etc/profile.d/autojump.bash