diff --git a/tools/crm_standby b/tools/crm_standby
index 25bff79ce4..59e16f8232 100755
--- a/tools/crm_standby
+++ b/tools/crm_standby
@@ -1,119 +1,150 @@
 #!/bin/bash
 
 USAGE_TEXT="Usage: crm_standby <command> [options]
 
 Common options:
  --help                 Display this text, then exit
  --version              Display version information, then exit
  -V, --verbose          Specify multiple times to increase debug output
  -q, --quiet            Print only the standby status (if querying)
 
 Commands:
  -G, --query            Query the current value of standby mode (on/off)
  -v, --update=VALUE     Update the value of standby mode (on/off)
  -D, --delete           Let standby mode use default value
 
 Additional Options:
  -N, --node=NODE        Operate on the named node instead of the current one
  -l, --lifetime=VALUE   Until when should the setting take effect
                         (valid values: reboot, forever)
  -i, --id=VALUE         (Advanced) XML ID used to identify standby attribute"
 
 HELP_TEXT="crm_standby - Query, enable, or disable standby mode for a node
 
 Nodes in standby mode may not host cluster resources.
 
 $USAGE_TEXT
 "
 
 exit_usage() {
     if [ $# -gt 0 ]; then
         echo "error: $@" >&2
     fi
     echo
     echo "$USAGE_TEXT"
     exit 1
 }
 
 op=""
 options=""
 lifetime=0
 target=""
 
-BACKWARD_COMPATIBLE="get-value,attr-value:,delete-attr,uname:,attr-id:"
-TEMP=$(getopt -o qDGQVN:U:v:i:l: \
-    --long help,version,query,update:,delete,verbose,quiet,node:,lifetime:,id:,$BACKWARD_COMPATIBLE \
-    -n 'crm_standby' -- "$@")
-
+SHORTOPTS_DEPRECATED="U:Q"
+LONGOPTS_DEPRECATED="uname:,get-value,delete-attr,attr-value:,attr-id:"
+SHORTOPTS="VqGv:DN:l:i:"
+LONGOPTS="help,version,verbose,quiet,query,update:,delete,node:,lifetime:,id:"
+
+TEMP=$(getopt -o ${SHORTOPTS}${SHORTOPTS_DEPRECATED} \
+    --long ${LONGOPTS},${LONGOPTS_DEPRECATED} \
+    -n crm_standby -- "$@")
 if [ $? -ne 0 ]; then
     exit_usage
 fi
 
-# The quotes around $TEMP are essential!
-eval set -- "$TEMP"
+eval set -- "$TEMP" # Quotes around $TEMP are essential
 
 while true ; do
     case "$1" in
-        -N|--node|-U|--uname)       target="$2"; shift 2;;
-        -G|--query|--get-value)     options="$options --query"; op=g; shift;;
-        -v|--update|--attr-value)   options="$options --update $2"; op=u; shift 2;;
-        -D|--delete|--delete-attr)  options="$options --delete"; op=d; shift;;
-        -l|--lifetime)              options="$options --lifetime $2"; lifetime=1; shift 2;;
-        -i|--id|--attr-id)          options="$options --id $2"; shift 2;;
-        -q|-Q|--quiet|-V|--verbose) options="$options $1"; shift;;
         --help)
             echo "$HELP_TEXT"
             exit 0
             ;;
         --version)
             crm_attribute --version
             exit 0
             ;;
+        -q|--quiet|-V|--verbose|-Q)
+            options="$options $1"
+            shift
+            ;;
+        -N|--node|-U|--uname)
+            target="$2"
+            shift
+            shift
+            ;;
+        -G|--query|--get-value)
+            options="$options --query"
+            op=g
+            shift
+            ;;
+        -v|--update|--attr-value)
+            options="$options --update $2"
+            op=u
+            shift
+            shift
+            ;;
+        -D|--delete|--delete-attr)
+            options="$options --delete"
+            op=d
+            shift
+            ;;
+        -l|--lifetime)
+            options="$options --lifetime $2"
+            lifetime=1
+            shift
+            shift
+            ;;
+        -i|--id|--attr-id)
+            options="$options --id $2"
+            shift
+            shift
+            ;;
         --)
             shift
             break
             ;;
         *)
             exit_usage "unknown option '$1'"
             ;;
     esac
 done
 
 # It's important to call cluster commands only after arguments are processed,
 # so --version and --help work without problems even if those commands don't.
 if [ "$target" = "" ]; then
     target=$(crm_node -n)
 fi
 
 options="-N $target -n standby $options"
 if [ x$op = x ]; then
     options="$options -G"; op=g
 fi
 
 # If the user didn't explicitly specify a lifetime ...
 if [ $lifetime -eq 0 ]; then
     case $op in
         g)
             # For query, report the forever entry if one exists, otherwise
             # report the reboot entry if one exists, otherwise report off.
             crm_attribute $options -l forever 2>&1 > /dev/null
             if [ $? -eq 0 ]; then
                 options="$options -l forever"
             else
                 options="$options -l reboot -d off"
             fi
             ;;
         u)
             # For update, default to updating the forever entry.
             options="$options -l forever"
             ;;
         d)
             # For delete, default to deleting both forever and reboot entries.
             crm_attribute $options -l forever
             crm_attribute $options -l reboot
             exit 0
             ;;
     esac
 fi
 
 crm_attribute $options