Module Name: src
Committed By: lukem
Date: Sun Jan 9 03:33:26 UTC 2022
Modified Files:
src/usr.sbin/etcupdate: etcupdate etcupdate.8
Log Message:
etcupdate: add -? for help. improve option errors
Support -? to show help.
Implemented using getopts "leading colon optstring" feature.
Improve error messages for unknown options and missing arguments.
Change usage-related errors from stdout to stderr.
Keep all other errors to stdout for now.
To generate a diff of this commit:
cvs rdiff -u -r1.63 -r1.64 src/usr.sbin/etcupdate/etcupdate
cvs rdiff -u -r1.24 -r1.25 src/usr.sbin/etcupdate/etcupdate.8
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/etcupdate/etcupdate
diff -u src/usr.sbin/etcupdate/etcupdate:1.63 src/usr.sbin/etcupdate/etcupdate:1.64
--- src/usr.sbin/etcupdate/etcupdate:1.63 Sun Jan 9 03:31:23 2022
+++ src/usr.sbin/etcupdate/etcupdate Sun Jan 9 03:33:26 2022
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $NetBSD: etcupdate,v 1.63 2022/01/09 03:31:23 lukem Exp $
+# $NetBSD: etcupdate,v 1.64 2022/01/09 03:33:26 lukem Exp $
#
# Copyright (c) 2001-2022 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -85,7 +85,7 @@ help()
cat << EOF
Usage: ${PROG} [-alv] [-d DESTDIR] [-p PAGER] [-s SRC_ARG] [-t TEMPROOT] [-w WIDTH]
- ${PROG} -h
+ ${PROG} ( -h | -? )
Options:
@@ -103,10 +103,10 @@ Options:
"etc.tgz" and "xetc.tgz" have been extracted.
-s TGZ_FILE A distribution set file such as "etc.tgz" or
"xetc.tgz". May be specified multiple times.
-
-t TEMPROOT Where to store temporary files. [/tmp/temproot]
-w WIDTH Screen width. [80]
-v Be more verbose.
+ -? Display this help, and exit.
EOF
}
@@ -477,7 +477,7 @@ USERRC="${HOME}/.{PROG}rc"
[ -r ${USERRC} ] && . ${USERRC}
# Read command line arguments
-while getopts ad:hlp:s:t:vw: i
+while getopts :ad:hlp:s:t:vw: i
do
case "${i}" in
a)
@@ -539,13 +539,31 @@ do
w)
WIDTH="${OPTARG}"
;;
- *)
- # getopts should already have printed an error message
+ "?")
+ if [ "${OPTARG}" = "?" ]; then
+ help
+ exit 0
+ fi
+ echo 1>&2 "${PROG}: Unknown option -${OPTARG}"
+ usage
+ ;;
+
+ :)
+ echo 1>&2 "${PROG}: Missing argument for option -${OPTARG}"
usage
- break
+ ;;
+
+ *)
+ echo 1>&2 "${PROG}: Unimplemented option -${ch}"
+ exit 3
;;
esac
done
+shift $((${OPTIND} - 1))
+if [ $# -ne 0 ] ; then
+ echo 1>&2 "${PROG}: Unknown extra arguments"
+ usage
+fi
# Last minute sanity checks
if [ "$(id -u)" -ne 0 ]; then
@@ -555,7 +573,7 @@ fi
DESTDIR="${DESTDIR%/}" # remove trailing slash, if any. result might be "".
DESTDIR_BRE="$(bre_quote "${DESTDIR}")"
if [ "${N_SRC_ARGS}" -gt 1 ] && ( ${SOURCEMODE} || ${BINARYDIRMODE} ); then
- echo "*** ERROR: Multiple -s args are allowed only with tgz files"
+ echo 1>&2 "${PROG}: Multiple -s args are allowed only with tgz files"
usage
fi
case "${TEMPROOT}" in
Index: src/usr.sbin/etcupdate/etcupdate.8
diff -u src/usr.sbin/etcupdate/etcupdate.8:1.24 src/usr.sbin/etcupdate/etcupdate.8:1.25
--- src/usr.sbin/etcupdate/etcupdate.8:1.24 Sun Jan 9 03:31:23 2022
+++ src/usr.sbin/etcupdate/etcupdate.8 Sun Jan 9 03:33:26 2022
@@ -1,6 +1,6 @@
-.\" $NetBSD: etcupdate.8,v 1.24 2022/01/09 03:31:23 lukem Exp $
+.\" $NetBSD: etcupdate.8,v 1.25 2022/01/09 03:33:26 lukem Exp $
.\"
-.\" Copyright (c) 2001-2020 The NetBSD Foundation, Inc.
+.\" Copyright (c) 2001-2022 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
@@ -43,7 +43,7 @@
.Op Fl t Ar temproot
.Op Fl w Ar width
.Nm
-.Fl h
+.Pq Fl h | Fl \&?
.Sh DESCRIPTION
.Nm
is a tool that lets the administrator update the configuration and
@@ -280,6 +280,8 @@ variable.
This is useful for
.Xr xterm 1
users with wider shell windows.
+.It Fl \&?
+Prints a help text, and exit.
.El
.Sh ENVIRONMENT
.Bl -tag -width IGNOREFILESXX