+UNAME="$(uname -r)"
+PN="$(basename "$0")"
+[ -n "$WORKING_DIR" -a -d "$WORKING_DIR" ] || WORKING_DIR=$(pwd)
+VERSION='***UNRELEASED***'
+
+# data collection should not be affected by user locale
+export LANG=C
+export LC_ALL=C
+
+TIMESTAMP='+%F--%H-%M-%S-%Z'
+DATE="$(date $TIMESTAMP)"
+
+# defaults
+GENERATE_FILE='1'
+GENERATE_DIRECTORY=''
+_opt_output_directory=false
+_opt_output_file=false
+_opt_quiet=false
+_opt_force=false
+
+usage() {
+ echo "
+ This tool collects information of the hardware it is being executed on.
+ It can be executed as normal user to collect some basic information or
+ (recommended) with root permissions to collect more system information.
+ If executed without any options a file named grml-hwinfo-TIMESTAMP.tar.bz2
+ storing all collected information is created in the current working directory.
+
+ Options:
+
+ -b, --both Create directory + file grml-hwinfo-TIMESTAMP.tar.bz2
+ -d, --directory Create grml-hwinfo-TIMESTAMP as a directory (no file)
+ -f, --file Create grml-hwinfo-TIMESTAMP.tar.bz2 [default action]
+ -h, --help Display this help message
+ -q, --quiet Don't display informational text (useful for cron usage)
+ --force Don't abort but overwrite possibly existing output file
+ --output-directory <dir> Store output files in specified directory
+ --output-file <file> Store output in specified filename (tar.XX format)
+ "
+}
+
+CMDLINE_OPTS=output-directory:,output-file:,both,directory,file,help,quiet,force
+_opt_temp=$(getopt --name grml-hwinfo -o +bdfhq --long $CMDLINE_OPTS -- "$@")
+if [ $? -ne 0 ]; then
+ echo "Try 'grml-hwinfo --help' for more information." >&2
+ exit 1
+fi
+eval set -- "$_opt_temp"
+
+while :; do
+ case "$1" in
+ --help|-h)
+ usage ; exit 0
+ ;;
+ --output-directory)
+ shift; OUTDIRNAME="$1"
+ GENERATE_DIRECTORY='1'
+ _opt_output_directory=true
+ $_opt_output_file && GENERATE_FILE='1' || GENERATE_FILE=''
+ ;;
+ --output-file)
+ shift; OUTFILE="$1"
+ GENERATE_FILE='1'
+ _opt_output_file=true
+ $_opt_output_directory && GENERATE_DIRECTORY='1' || GENERATE_DIRECTORY=''
+ ;;
+ -d|--directory)
+ GENERATE_DIRECTORY='1'
+ GENERATE_FILE=''
+ ;;
+ -f|--file)
+ GENERATE_DIRECTORY=''
+ GENERATE_FILE='1'
+ ;;
+ -b|--both)
+ GENERATE_DIRECTORY='1'
+ GENERATE_FILE='1'
+ ;;
+ -q|--quiet)
+ _opt_quiet=true
+ ;;
+ --force)
+ _opt_force=true
+ ;;
+ --)
+ shift; break
+ ;;
+ *)
+ echo "Internal getopt error!" >&2
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+if ! $_opt_quiet ; then
+ echo "$PN ${VERSION} - collect hardware information"
+fi
+
+# Generate output/temporary directory name & path, and output file path
+[ -n "$OUTDIRNAME" ] || OUTDIRNAME="grml-hwinfo-${DATE}"
+OUTDIR="${WORKING_DIR}/${OUTDIRNAME}"
+if $_opt_force ; then
+ mkdir -p "${OUTDIR}"
+else
+ mkdir "${OUTDIR}" || { echo "Directory '${OUTDIR}' already exists, aborting." >&2 ; exit 1; }
+fi
+
+if [ -n "$GENERATE_FILE" ] ; then
+ [ -n "$OUTFILE" ] && OUTFILE_="$OUTFILE" || OUTFILE_="${OUTDIR}.tar.bz2"
+ if ! $_opt_force ; then
+ [ -e "${OUTFILE_}" ] && { echo "File '${OUTFILE_}' already exists, aborting." >&2 ; rm -r "${OUTDIR}"; exit 1; }
+ fi
+ OUTFILE=${OUTFILE_}
+ touch "${OUTFILE}"
+fi
+
+if [ "$(id -u)" != "0" ] ; then
+ NOTROOT=1
+ $_opt_quiet || echo "W: Running without root permissions. Not all data will be collected."