Make usage, error reporting, and stdio use consistent
[blkdevalias.git] / blkdevalias
index 0ef243e..a8e47d9 100755 (executable)
@@ -52,6 +52,10 @@ BA_REAL_GID="$($BA_ID -g)"
 # load config
 . $BA_CONF
 
+_print () {
+    echo -e "$@"
+}
+
 _error () {
     echo -e "ERROR: $@" 1>&2
 }
@@ -64,6 +68,15 @@ _debug () {
     [ "$BA_DEBUG" == "yes" ] && echo -e "$@" 1>&2
 }
 
+ba_usage () {
+    if [ x"$@" == x"" ]; then
+        _print "Usage: $0 <command> [<arg>]..."
+    else
+        _print "Usage: $0 $@"
+    fi
+    exit 2
+}
+
 # store the WWID map to disk
 ba_store_wwid_map() {
     local _WWID _TMP_MAP
@@ -73,7 +86,7 @@ ba_store_wwid_map() {
         exit 1
     fi
     for _WWID in ${!WWIDMAP[@]}; do
-        echo "$_WWID ${WWIDMAP[$_WWID]} ${TYPEMAP[$_WWID]} ${PARTMAP[$_WWID]}"
+        _print "$_WWID ${WWIDMAP[$_WWID]} ${TYPEMAP[$_WWID]} ${PARTMAP[$_WWID]}"
     done  >> $_TMP_MAP
     mv $_TMP_MAP $BA_MAP_PATH
     # we may be running as root - if so re-chown the configs
@@ -172,7 +185,7 @@ ba_get_partnum () {
     if [ "$_NUM" == "" ]; then
         _NUM="0"
     fi
-    echo $_NUM
+    _print $_NUM
 }
 
 ba_scsi_id () {
@@ -231,7 +244,7 @@ Ctrl-C will abort.
 
 EOF
 
-    echo -n "Default user to own device nodes [$BA_USER]: "
+    _print -n "Default user to own device nodes [$BA_USER]: "
     read _BA_USER
     if [ "$_BA_USER" != "" ]; then
         BA_USER=$_BA_USER;
@@ -242,7 +255,7 @@ EOF
         exit 1
     fi
 
-    echo -n "Default group to own device nodes [$BA_GROUP]: "
+    _print -n "Default group to own device nodes [$BA_GROUP]: "
     read _BA_GROUP
     if [ "$_BA_GROUP" != "" ]; then
         BA_GROUP=$_BA_GROUP;
@@ -252,7 +265,7 @@ EOF
         _error "user (\"$BA_GROUP\") must be a valid group account"
         exit 1
     fi
-    echo -n "Default device directory [$BA_DEV_PATH]: "
+    _print -n "Default device directory [$BA_DEV_PATH]: "
     read _BA_DEV_PATH
     if [ "$_BA_DEV_PATH" != "" ]; then
         BA_DEV_PATH=$_BA_DEV_PATH;
@@ -261,16 +274,16 @@ EOF
     _debug "BA_DEV_PATH=\"$BA_DEV_PATH\""
     _debug "BA_USER=\"$BA_USER\""
     _debug "BA_GROUP=\"$BA_GROUP\""
-    echo -n "Writing wwid map configuration: "
+    _print -n "Writing wwid map configuration: "
     TMP_CONF=$(mktemp --tmpdir=$BA_CONF_PATH)
     if [ ! -f "$TMP_CONF" ]; then
-        echo
+        _print
         _error "could not write temporary file"
         exit 1
     fi
     echo "BA_DEV_PATH=\"$BA_DEV_PATH\"" >> $TMP_CONF
     echo "BA_USER=\"$BA_USER\"" >> $TMP_CONF
-    echo "BA_GROUP=\"$BA_GROUP\"" >> $TMP_CONF
+    _print "BA_GROUP=\"$BA_GROUP\"" >> $TMP_CONF
     mv $TMP_CONF $BA_CONF
     if [ "$?" != 0 ]; then
         _error "could not create configuration file $BA_CONF"
@@ -278,7 +291,7 @@ EOF
     fi
     # set configration ownership to reflect admin users
     ba_chown_configs "$BA_USER" "$BA_GROUP"
-    echo -e "done\n"
+    _print -e "done\n"
 }
 
 # createdisk <alias> <device>
@@ -287,8 +300,7 @@ ba_createdisk () {
     _ALIAS="$1"
     _DEV="$2"
     if [ "$_DEV" == "" ] || [ "$_ALIAS" == "" ]; then
-        echo "Usage: $0 createdisk <alias> <device>"
-        exit 2
+        ba_usage "createdisk <alias> <device>"
     fi
     _debug "ba_createdisk: DEV=\"$_DEV\" ALIAS=\"$_ALIAS\""
 
@@ -317,14 +329,12 @@ ba_deletedisk () {
     local _WWID _ALIAS _DEVPATH
     _ALIAS=$1
     if [ "$_ALIAS" == "" ]; then
-        echo "Usage: $0 deletedisk <alias>"
-        exit 2
+        ba_usage "deletedisk <alias>"
     fi
     _WWID=${NAMEMAP[$_ALIAS]}
     if [ "$_WWID" == "" ]; then
         _error "\"$_ALIAS\" does not exist"
-        echo "Usage: $0 deletedisk <alias>"
-        exit 2
+        ba_usage "deletedisk <alias>"
     fi
     echo -n "Removing wwid map disk \"$_ALIAS\":"
     # generate device path for refresh call
@@ -355,7 +365,7 @@ ba_querydisk () {
     fi
     _ALIAS=$1
     if [ "$_ALIAS" == "" ]; then
-        echo "Usage: $0 querydisk <alias>"
+        ba_usage "querydisk <alias>"
         exit 2
     fi
     _WWID=${NAMEMAP[$_ALIAS]}
@@ -382,7 +392,7 @@ ba_map () {
     local _WWID _TYPE _PART
     _WWID="$1"
     if [ "$_WWID" == "" ] || [ "${WWIDMAP[$_WWID]}" == "" ]; then
-        echo "Usage: $0 map <wwid>" 1>&2
+        ba_usage "map <wwid>"
         exit 2
     fi
     _PART=$(ba_get_partnum $DEVNAME)
@@ -428,8 +438,6 @@ case "$1" in
         ba_map $2
         ;;
     *)
-        echo -n "Usage: $0 "
-        echo "{configure|createdisk|deletedisk|listdisks|scandisks|querydisk|map}"
-        exit 2
+        ba_usage "\n{configure|createdisk|deletedisk|listdisks|scandisks|querydisk|map}"
 esac