[PATCH chere 4/4] chere and xhere: clean up bash syntax
"Vadim \(vadcx\) via Cygwin-apps" <[email protected]>
| Newsgroups | gmane.os.cygwin.applications |
|---|---|
| Message-ID | <567d15d2c10370501e864e6431d9cb96d170017a.1754454202.git.vad.git@vad.cx> |
From: "Vadim (vadcx)" <[email protected]> --- src/chere | 260 +++++++++++++++++++++++++++--------------------------- src/xhere | 17 ++-- 2 files changed, 138 insertions(+), 139 deletions(-) diff --git a/src/chere b/src/chere index 6ba2425..5b71d7e 100755 --- a/src/chere +++ b/src/chere @@ -163,19 +163,19 @@ check_requirements() { # Quick check of common utilities (from sh-utils, cygwin, textutils packages) if [ ! -x /bin/uname ] || [ ! -x /bin/cygpath ] || [ ! -x /bin/id ] || [ ! -x /bin/wc ] || [ ! -x /bin/sed ] ; then - echo $0 Error: uname / id / cygpath / wc / sed not found + echo "$0 Error: uname / id / cygpath / wc / sed not found" echo echo These tools are required for correct operation. - echo $0: Aborting + echo "$0: Aborting" exit fi # Check we have regtool (from cygwin package) if [ ! -x /bin/regtool ]; then - echo $0 Error: /bin/regtool not found + echo "$0 Error: /bin/regtool not found" echo echo You need regtool installed for this script to work. - echo $0: Aborting. + echo "$0: Aborting." exit fi @@ -201,31 +201,29 @@ check_requirements() get_system_info() { # Check windows version and cygwin install directory - VER=`uname -s` - ID_USER=`id -nu` + VER=$(uname -s) + ID_USER=$(id -nu) RUN_EXE="" - ASH_EXE=`cygpath -w /bin/sh` - BASH_EXE=`cygpath -w /bin/bash` + ASH_EXE=$(cygpath -w /bin/sh) + BASH_EXE=$(cygpath -w /bin/bash) - if [ `uname -m` = "i686" ]; then + if [ "$(uname -m)" = "i686" ]; then PFX=cygwin_ else PFX=cygwin64_ fi - if [ -x /bin/which ]; then - # Enable prepending of run.exe if we can find it. - # I'm assuming run has been placed in the path. + # Enable prepending of run.exe if we can find it. + # I'm assuming run has been placed in the path. - # We did this because run.exe was packaged in X-startup-scripts. - # It is now in its own package and part of base. - # However, continue to check for it in this way. + # We did this because run.exe was packaged in X-startup-scripts. + # It is now in its own package and part of base. + # However, continue to check for it in this way. - RUN_EXE=`which run.exe 2>/dev/null` - if [ -n "$RUN_EXE" ]; then - # Convert to windows path - RUN_EXE=`cygpath -w "$RUN_EXE"` - fi + RUN_EXE=$(command -v run.exe 2>/dev/null) + if [ -n "$RUN_EXE" ]; then + # Convert to windows path + RUN_EXE=$(cygpath -w "$RUN_EXE") fi # Identify the registry keys for each OS and desired set of users @@ -267,9 +265,9 @@ get_system_info() # DRIVE_BG_KEY_CR - and the context menu for the drive background set_for_user() { - if [ $1 = i ]; then + if [ "$1" = i ]; then # Set for install - if [ $2 = f ]; then + if [ "$2" = f ]; then DIR_KEY=$DIR_KEY_CU DIR_BG_KEY=$DIR_BG_KEY_CU DRIVE_KEY=$DRIVE_KEY_CU @@ -284,11 +282,11 @@ set_for_user() fi else # Set for uninstall - if [ $2 = t ]; then + if [ "$2" = t ]; then # Don't remove HKCU entries DRIVE_KEYS="$DRIVE_KEY_CR $DRIVE_BG_KEY_CR" DIR_KEYS="$DIR_KEY_CR $DIR_BG_KEY_CR" - elif [ $2 = f ]; then + elif [ "$2" = f ]; then # Don't remove HKCR entries DRIVE_KEYS="$DRIVE_KEY_CU $DRIVE_BG_KEY_CU" DIR_KEYS="$DIR_KEY_CU $DIR_BG_KEY_CU" @@ -305,7 +303,7 @@ set_for_user() # ID_USER - current user get_shell_from_passwd() { - getent passwd $ID_USER | sed -n "s?.*:/bin/\(.*\)?\1?gp" + getent passwd "$ID_USER" | sed -n "s?.*:/bin/\(.*\)?\1?gp" } # Identifies the terminal installed for the named shell @@ -321,13 +319,13 @@ find_term_of_installed_shell() # use sed to strip everything except known terminals # construct the regexp of known terminals from KNOWN_TERMS # add command as well to pick up on 9x - TERM_REGEXP=`echo $KNOWN_TERMS command | sed 's/ \+/\\\\|/g'` - KEY_VALUE=`$REGTOOL_ get $DIR_KEY/$PFX$1/command/ | sed "s/.*\($TERM_REGEXP\).*/\1/g"` + TERM_REGEXP=$(echo "$KNOWN_TERMS command" | sed 's/ \+/\\\\|/g') + KEY_VALUE=$($REGTOOL_ get "$DIR_KEY/$PFX$1/command/" | sed "s/.*\($TERM_REGEXP\).*/\1/g") if [ "$KEY_VALUE" = "command" ]; then KEY_VALUE=cmd fi - echo $KEY_VALUE + echo "$KEY_VALUE" } # Setup to install for a particular terminal @@ -502,34 +500,34 @@ setup_for_shell() CPH_DESC="Cygwin Prompt Here" # Extra check before installing passwd - ge_shell=`get_shell_from_passwd` + ge_shell=$(get_shell_from_passwd) if [ -z "$ge_shell" ]; then if [ $FORCE = t ]; then - echo $0 Warning: login shell has not been set for user $ID_USER + echo "$0 Warning: login shell has not been set for user '$ID_USER'" echo echo This is required for the runtime context menu item to work. echo See cygwin documentation on how to set the login shell. else - echo $0 Error: login shell has not been set for user $ID_USER + echo "$0 Error: login shell has not been set for user '$ID_USER'" echo echo This is required for the runtime context menu item to work. echo See cygwin documentation on how to set the login shell. - echo Use -f to install anyway. + echo "Use -f to install anyway." exit fi fi;; * ) - echo $0 Error: Unknown shell $1 + echo "$0 Error: Unknown shell '$1'" echo echo Supported shells: - echo $KNOWN_SHELLS + echo "$KNOWN_SHELLS" echo - echo Use -h for help + echo "Use -h for help" exit;; esac # Uninstall string should indicate 64 or 32 bit cygwin entry - if [ `uname -m` = "i686" ]; then + if [ "$(uname -m)" = "i686" ]; then CPH_DESC+=" (x86)" else CPH_DESC+=" (x86_64)" @@ -561,20 +559,20 @@ build_start_cmd() { local TERM_WIN_EXE XHERE # TERM_EXE needs to be called by a windows path, even from run.exe - TERM_WIN_EXE=`cygpath -w "$TERM_EXE"` - if [ $3 = 1 ]; then + TERM_WIN_EXE=$(cygpath -w "$TERM_EXE") + if [ "$3" = 1 ]; then # METHOD 1 - invoke term and shell directly from the registry - if [ $1 != cmd ]; then + if [ "$1" != cmd ]; then if [ -n "$RUN_EXE" ]; then START_CMD="$RUN_EXE $RUN_ARGS $TERM_WIN_EXE $TERM_ARGS -e $SHELL_EXE" else START_CMD="$TERM_WIN_EXE $TERM_ARGS -e $SHELL_EXE" fi - elif [ $2 != cmd ]; then + elif [ "$2" != cmd ]; then # With cmd (term), the shell executable needs to be converted # to a windows path # With cmd, we ignore TERM_CMD. - START_CMD=`cygpath -w "$SHELL_EXE"` + START_CMD=$(cygpath -w "$SHELL_EXE") else # term and shell are cmd START_CMD=$SHELL_EXE @@ -582,26 +580,26 @@ build_start_cmd() else # METHOD 2 - invoke xhere from the registry XHERE="/bin/xhere" - if [ $2 = cmd ]; then + if [ "$2" = cmd ]; then # Clear XHERE for when running command from rxvt/xterm XHERE=""; - elif [ $2 = passwd ]; then + elif [ "$2" = passwd ]; then # Have XHERE do the call rather than bung it in the registry SHELL_EXE="/etc/passwd" fi - if [ $1 != cmd ]; then + if [ "$1" != cmd ]; then if [ -n "$RUN_EXE" ]; then START_CMD="$RUN_EXE $RUN_ARGS $TERM_WIN_EXE $TERM_ARGS -e $XHERE $SHELL_EXE" else START_CMD="$TERM_WIN_EXE $TERM_ARGS -e $XHERE $SHELL_EXE" fi - if [ $2 != cmd ]; then + if [ "$2" != cmd ]; then SHELL_CMD="\\\"%L\\\"" SHELL_BG_CMD="\\\"%V\\\"" fi - elif [ $2 != cmd ]; then - START_CMD="`cygpath -w \"$BASH_EXE\"`" + elif [ "$2" != cmd ]; then + START_CMD="$(cygpath -w "$BASH_EXE")" SHELL_CMD="-c \\\"$XHERE $SHELL_EXE '%L'\\\"" SHELL_BG_CMD="-c \\\"$XHERE $SHELL_EXE '%V'\\\"" else @@ -619,15 +617,15 @@ build_start_cmd() create_registry_key() { local KEY_ELEMENTS CUR_KEY - KEY_ELEMENTS=`echo $1 | sed "s?/? ?g"` + KEY_ELEMENTS="${1//\// }" # replace forward slash with space CUR_KEY= for elem in $KEY_ELEMENTS; do CUR_KEY=$CUR_KEY/$elem - if ! $REGTOOL_ check $CUR_KEY 2>/dev/null ; then + if ! $REGTOOL_ check "$CUR_KEY" 2>/dev/null ; then # elem not present, so add it - if ! $REGTOOL add $CUR_KEY ; then - echo $0 Error: Hive not writable - echo $0: Aborting. + if ! $REGTOOL add "$CUR_KEY" ; then + echo "$0 Error: Hive not writable" + echo "$0: Aborting." exit fi fi @@ -640,13 +638,13 @@ remove_registry_key() { local CUR_KEY ENTRIES CUR_KEY=$1 - if $REGTOOL_ check $CUR_KEY 2> /dev/null; then + if $REGTOOL_ check "$CUR_KEY" 2> /dev/null; then while [ -n "$CUR_KEY" ]; do - ENTRIES=`$REGTOOL_ list $CUR_KEY | wc -l` - if [ $ENTRIES = "0" ] || ( [ $ENTRIES = "1" ] && [ $PRINT = t ] ); then + ENTRIES=$($REGTOOL_ list "$CUR_KEY" | wc -l) + if [ "$ENTRIES" = "0" ] || ( [ "$ENTRIES" = "1" ] && [ "$PRINT" = t ] ); then # Remove empty key - $REGTOOL remove $CUR_KEY - CUR_KEY=`echo $CUR_KEY | sed "s?/[^/]*\\$??g"` + $REGTOOL remove "$CUR_KEY" + CUR_KEY=$(echo "$CUR_KEY" | sed "s?/[^/]*\\$??g") else # Abort CUR_KEY= @@ -668,18 +666,18 @@ read_chere_registry_keys() { local FOR_WHO="" for shell in $KNOWN_SHELLS; do - echo --- $shell keys --- + echo "--- $shell keys ---" #### Directory entries #### FOR_WHO="(all users)" for dir in $DIR_KEY_CR $DIR_KEY_CU ; do - if $REGTOOL_ check $dir/$PFX$shell 2> /dev/null; then - echo Directory menu item $FOR_WHO - $REGTOOL get $dir/$PFX$shell/ + if $REGTOOL_ check "$dir/$PFX$shell" 2> /dev/null; then + echo "Directory menu item $FOR_WHO" + $REGTOOL get "$dir/$PFX$shell/" echo fi - if $REGTOOL_ check $dir/$PFX$shell/command 2> /dev/null; then - echo Directory command $FOR_WHO - $REGTOOL get $dir/$PFX$shell/command/ + if $REGTOOL_ check "$dir/$PFX$shell/command" 2> /dev/null; then + echo Directory command "$FOR_WHO" + $REGTOOL get "$dir/$PFX$shell/command/" echo fi FOR_WHO="(current user)" @@ -687,55 +685,55 @@ read_chere_registry_keys() #### Directory background entries #### FOR_WHO="(all users)" for dir in $DIR_BG_KEY_CR $DIR_BG_KEY_CU ; do - if $REGTOOL_ check $dir/$PFX$shell 2> /dev/null; then - echo Directory background menu item $FOR_WHO - $REGTOOL get $dir/$PFX$shell/ + if $REGTOOL_ check "$dir/$PFX$shell" 2> /dev/null; then + echo "Directory background menu item $FOR_WHO" + $REGTOOL get "$dir/$PFX$shell/" echo fi - if $REGTOOL_ check $dir/$PFX$shell/command 2> /dev/null; then - echo Directory background command $FOR_WHO - $REGTOOL get $dir/$PFX$shell/command/ + if $REGTOOL_ check "$dir/$PFX$shell/command" 2> /dev/null; then + echo "Directory background command $FOR_WHO" + $REGTOOL get "$dir/$PFX$shell/command/" echo fi FOR_WHO="(current user)" done #### Drive entries #### FOR_WHO="(all users)" - for drive in $DRIVE_KEY_CR $DRIVE_KEY_CU ; do - if $REGTOOL_ check $drive/$PFX$shell 2> /dev/null; then - echo Drive menu item $FOR_WHO - $REGTOOL get $drive/$PFX$shell/ + for drive in "$DRIVE_KEY_CR" "$DRIVE_KEY_CU" ; do + if $REGTOOL_ check "$drive/$PFX$shell" 2> /dev/null; then + echo "Drive menu item $FOR_WHO" + $REGTOOL get "$drive/$PFX$shell/" echo fi - if $REGTOOL_ check $drive/$PFX$shell/command 2> /dev/null; then - echo Drive command $FOR_WHO - $REGTOOL get $drive/$PFX$shell/command/ + if $REGTOOL_ check "$drive/$PFX$shell/command" 2> /dev/null; then + echo "Drive command $FOR_WHO" + $REGTOOL get "$drive/$PFX$shell/command/" echo fi FOR_WHO="(current user)" done #### Drive background entries #### FOR_WHO="(all users)" - for drive in $DRIVE_BG_KEY_CR $DRIVE_BG_KEY_CU ; do - if $REGTOOL_ check $drive/$PFX$shell 2> /dev/null; then - echo Drive background menu item $FOR_WHO - $REGTOOL get $drive/$PFX$shell/ + for drive in "$DRIVE_BG_KEY_CR" "$DRIVE_BG_KEY_CU" ; do + if $REGTOOL_ check "$drive/$PFX$shell" 2> /dev/null; then + echo "Drive background menu item $FOR_WHO" + $REGTOOL get "$drive/$PFX$shell/" echo fi - if $REGTOOL_ check $drive/$PFX$shell/command 2> /dev/null; then - echo Drive background command $FOR_WHO - $REGTOOL get $drive/$PFX$shell/command/ + if $REGTOOL_ check "$drive/$PFX$shell/command" 2> /dev/null; then + echo "Drive background command $FOR_WHO" + $REGTOOL get "$drive/$PFX$shell/command/" echo fi FOR_WHO="(current user)" done #### UnInstall entries #### - if $REGTOOL_ check $UINST_KEY/$PFX$shell 2> /dev/null; then + if $REGTOOL_ check "$UINST_KEY/$PFX$shell" 2> /dev/null; then echo Uninstall description - $REGTOOL get $UINST_KEY/$PFX$shell/DisplayName + $REGTOOL get "$UINST_KEY/$PFX$shell/DisplayName" echo echo Uninstall command - $REGTOOL get $UINST_KEY/$PFX$shell/UnInstallString + $REGTOOL get "$UINST_KEY/$PFX$shell/UnInstallString" echo fi echo @@ -792,21 +790,21 @@ install_context_menu() create_uninstall_item() { # Add uninstall registry entry - if [ $FORCE = t ] || ! $REGTOOL_ check $1 2> /dev/null ; then + if [ $FORCE = t ] || ! $REGTOOL_ check "$1" 2> /dev/null ; then # Actually, should create an .inf so windows can get rid of the menu entries # even after the cygwin directory is wiped :( - if $REGTOOL add $1 ; then - $REGTOOL -s set $1/DisplayName \"$CPH_DESC\" - $REGTOOL -s set $1/UnInstallString \"$ASH_EXE -c \\\"PATH=/bin /bin/chere $UINST_ARG -u -s $2\\\"\" + if $REGTOOL add "$1" ; then + $REGTOOL -s set "$1/DisplayName" "\"$CPH_DESC\"" + $REGTOOL -s set "$1/UnInstallString" \"$ASH_EXE -c \\\"PATH=/bin /bin/chere $UINST_ARG -u -s $2\\\"\" else - echo $0 Error: Couldn\'t modify HKLM hive. - echo Control Panel uninstall will not be available. + echo "$0 Error: Couldn't modify HKLM hive." + echo "Control Panel uninstall will not be available." fi else - echo $0 Warning: Not overriding existing entry + echo "$0 Warning: Not overriding existing entry" echo - echo Entry for $2 already exists in the Registry uninstall section - echo Use -f to override existing key. + echo "Entry for '$2' already exists in the Registry uninstall section" + echo "Use -f to override existing key." echo fi } @@ -884,30 +882,30 @@ uninstall() { for drive in $DRIVE_KEYS ; do # Check each key exists before attempting to remove it - if $REGTOOL_ check $drive/$PFX$1/command 2> /dev/null; then - if ! $REGTOOL remove $drive/$PFX$1/command ; then - echo $0 Error: Hive not writable. - echo $0: Aborting. + if $REGTOOL_ check "$drive/$PFX$1/command" 2> /dev/null; then + if ! $REGTOOL remove "$drive/$PFX$1/command" ; then + echo "$0 Error: Hive not writable." + echo "$0: Aborting." exit fi fi - if $REGTOOL_ check $drive/$PFX$1 2> /dev/null; then - $REGTOOL remove $drive/$PFX$1 + if $REGTOOL_ check "$drive/$PFX$1" 2> /dev/null; then + $REGTOOL remove "$drive/$PFX$1" fi done for dir in $DIR_KEYS ; do - if $REGTOOL_ check $dir/$PFX$1/command 2> /dev/null; then - $REGTOOL remove $dir/$PFX$1/command + if $REGTOOL_ check "$dir/$PFX$1/command" 2> /dev/null; then + $REGTOOL remove "$dir/$PFX$1/command" fi - if $REGTOOL_ check $dir/$PFX$1 2> /dev/null; then - $REGTOOL remove $dir/$PFX$1 + if $REGTOOL_ check "$dir/$PFX$1" 2> /dev/null; then + $REGTOOL remove "$dir/$PFX$1" fi done - if $REGTOOL_ check $UINST_KEY/$PFX$1 2> /dev/null; then - $REGTOOL remove $UINST_KEY/$PFX$1 + if $REGTOOL_ check "$UINST_KEY/$PFX$1" 2> /dev/null; then + $REGTOOL remove "$UINST_KEY/$PFX$1" fi } @@ -922,7 +920,7 @@ REGTOOL_="regtool -w" KNOWN_TERMS="cmd rxvt mintty xterm urxvt" KNOWN_SHELLS="ash bash cmd dash fish mksh pdksh posh tcsh zsh passwd" -ALL_USERS=unset +ALL_USERS="unset" ACTION=nothing FRESHEN=f DO_WIN_UINST=t @@ -964,7 +962,7 @@ do o ) USER_TERM_OPTIONS="$OPTARG";; e ) USER_MENU_TEXT="$OPTARG";; \? | h ) print_help; exit;; - v ) echo $0 version $VERSION; exit;; + v ) echo "$0 version $VERSION"; exit;; esac done @@ -972,17 +970,17 @@ check_requirements get_system_info # if DISP set to env, make sure we set it to read from the environment -if [ $DISP = env ]; then +if [ "$DISP" = env ]; then DISP="%DISPLAY%" fi -if [ $FRESHEN = t ]; then +if [ "$FRESHEN" = t ]; then # If the user has specified -e, abort since this is not right if [ -n "$USER_MENU_TEXT" ]; then - echo "$0 error: You really don\'t want to freshen your existing entires," + echo "$0 error: You really don't want to freshen your existing entires," echo " and set all the context menus to the same string of text." - echo $0: Aborting. + echo "$0: Aborting." exit fi @@ -991,11 +989,11 @@ if [ $FRESHEN = t ]; then for user in f t; do set_for_user i $user - INSTALLED=`list_cygwin_registry_keys $DIR_KEY` - echo Updating shells $INSTALLED + INSTALLED=$(list_cygwin_registry_keys "$DIR_KEY") + echo "Updating shells $INSTALLED" for this_shell in $INSTALLED; do - this_term=`find_term_of_installed_shell $this_shell` - install $this_term $this_shell + this_term=$(find_term_of_installed_shell "$this_shell") + install "$this_term" "$this_shell" done done @@ -1037,22 +1035,22 @@ elif [ $ACTION = u ]; then # Uninstall each shell for ushell in $UINST_SHELLS ; do - uninstall $ushell + uninstall "$ushell" done # Remove keys after we've cleared out our entries for key in $DRIVE_KEYS $DIR_KEYS ; do - remove_registry_key $key + remove_registry_key "$key" done fi -if [ $READ = t ]; then +if [ "$READ" = t ]; then # Print some useful information - echo OS is $VER - echo chere version $VERSION + echo "OS is $VER" + echo "chere version $VERSION" if [ -n "$RUN_EXE" ]; then - echo run.exe is available at $RUN_EXE + echo "run.exe is available at $RUN_EXE" fi echo read_chere_registry_keys @@ -1061,15 +1059,15 @@ fi # If requested, list what is currently installed # Rely on the DIR key rather than UINST key, # since user may pass -m, or HKLM may not be writable -if [ $LIST = t ]; then - echo Currently installed Cygwin Here shells \(all users\): - list_cygwin_registry_keys $DIR_KEY_CR +if [ "$LIST" = t ]; then + echo "Currently installed Cygwin Here shells (all users):" + list_cygwin_registry_keys "$DIR_KEY_CR" echo - echo Currently installed Cygwin Here shells \(current user\): - list_cygwin_registry_keys $DIR_KEY_CU + echo "Currently installed Cygwin Here shells (current user):" + list_cygwin_registry_keys "$DIR_KEY_CU" fi -if [ $FRESHEN = f ] && [ $ACTION = nothing ] && [ $LIST = f ] && [ $READ = f ]; then - echo $0: No action taken +if [ "$FRESHEN" = f ] && [ "$ACTION" = nothing ] && [ "$LIST" = f ] && [ "$READ" = f ]; then + echo "$0: No action taken" print_help fi diff --git a/src/xhere b/src/xhere index 5c83085..7dd2375 100755 --- a/src/xhere +++ b/src/xhere @@ -35,10 +35,10 @@ SED=/bin/sed ID=/bin/id GETENT=/bin/getent -if [ -z $1 ]; then +if [ -z "$1" ]; then echo An argument is required, specifying the shell to invoke as a login shell exit -elif [ $1 == -h ]; then +elif [ "$1" == -h ]; then echo This script is not intended to be invoked from the command line. Try chere -h exit fi @@ -49,7 +49,7 @@ export CHERE_INVOKING=true # Goto the desired directory. # This is necessary when the context menu is opened in the RH pane if [ ! -z "$2" ]; then - CHERE_DIR=`$CYGPATH "$2"` + CHERE_DIR=$($CYGPATH "$2") NETWORK_PATH=/$CHERE_DIR if [ -d "$CHERE_DIR" ]; then cd "$CHERE_DIR" @@ -61,9 +61,10 @@ if [ ! -z "$2" ]; then fi # If that doesn't exist then the current should be the desired directory -if [ $1 = /etc/passwd ]; then - user=`$ID -un` - scmd=`$GETENT passwd $user | $SED -n "s?.*:\(.*\)?\1?gp"` +if [ "$1" = /etc/passwd ]; then + user=$($ID -un) + scmd=$($GETENT passwd "$user" | $SED -n 's?.*:\(.*\)?\1?gp') + set -- $scmd fi @@ -71,8 +72,8 @@ fi # but only if we recognise the shell case $1 in /bin/sh* | /bin/bash* | /bin/pdksh* | /bin/posh* | /bin/tcsh* | /bin/zsh* | /bin/dash* | /bin/mksh* | /bin/fish* ) - echo Starting $1; + echo "Starting '$1'"; exec -l $1;; * ) - echo Do not recognise $1;; + echo "Do not recognise '$1' as a shell";; esac \ No newline at end of file -- 2.50.1