[Rear-users] SF.net SVN: rear:[610] trunk/usr

dag- at users.sourceforge.net dag- at users.sourceforge.net
Tue Jun 14 18:05:49 CEST 2011


Revision: 610
          http://rear.svn.sourceforge.net/rear/?rev=610&view=rev
Author:   dag-
Date:     2011-06-14 16:05:47 +0000 (Tue, 14 Jun 2011)

Log Message:
-----------
- Implemented has_binary function (type $bin)
- Implemented get_path function (type -p $bin)
- Make use of >&8 instead of >/dev/null (so we can pipe fd 8 to a logfile when troubleshooting)

Modified Paths:
--------------
    trunk/usr/sbin/rear
    trunk/usr/share/rear/backup/NETFS/default/50_make_backup.sh
    trunk/usr/share/rear/backup/RSYNC/default/45_calculate_req_space.sh
    trunk/usr/share/rear/backup/RSYNC/default/61_start_selinux.sh
    trunk/usr/share/rear/backup/RSYNC/default/70_copy_backup_log.sh
    trunk/usr/share/rear/build/Debian/i386/60_fix_debian_stuff.sh
    trunk/usr/share/rear/build/GNU/Linux/11_touch_empty_files.sh
    trunk/usr/share/rear/build/GNU/Linux/13_create_dotfiles.sh
    trunk/usr/share/rear/build/GNU/Linux/15_adjust_permissions.sh
    trunk/usr/share/rear/build/GNU/Linux/39_copy_binaries_libraries.sh
    trunk/usr/share/rear/build/GNU/Linux/60_verify_and_adjust_udev.sh
    trunk/usr/share/rear/dr/GNU/Linux/21_describe_md.sh
    trunk/usr/share/rear/dr/GNU/Linux/23_describe_lvm2.sh
    trunk/usr/share/rear/dr/GNU/Linux/95_collect_hpacucli.sh
    trunk/usr/share/rear/dr/Linux-i386/31_describe_device_properties.sh
    trunk/usr/share/rear/dr/Linux-ia64/31_describe_device_properties.sh
    trunk/usr/share/rear/dr/default/09_only_include_vg.sh
    trunk/usr/share/rear/finalize/Debian/i386/17_rebuild_initramfs.sh
    trunk/usr/share/rear/finalize/GNU/Linux/15_migrate_disk_devices.sh
    trunk/usr/share/rear/finalize/GNU/Linux/41_migrate_udev_rules.sh
    trunk/usr/share/rear/finalize/GNU/Linux/70_create_swapfiles.sh
    trunk/usr/share/rear/finalize/Linux-ppc64/20_install_yaboot.sh
    trunk/usr/share/rear/finalize/SUSE_LINUX/i386/17_rebuild_initramfs.sh
    trunk/usr/share/rear/finalize/default/10_populate_dev.sh
    trunk/usr/share/rear/format/USB/default/30_format_usb_disk.sh
    trunk/usr/share/rear/layout/compare/default/50_compare_layout.sh
    trunk/usr/share/rear/layout/prepare/GNU/Linux/10_include_partition_code.sh
    trunk/usr/share/rear/layout/prepare/GNU/Linux/11_include_lvm_code.sh
    trunk/usr/share/rear/layout/prepare/GNU/Linux/12_include_raid_code.sh
    trunk/usr/share/rear/layout/prepare/GNU/Linux/13_include_filesystem_code.sh
    trunk/usr/share/rear/layout/prepare/default/01_prepare_files.sh
    trunk/usr/share/rear/layout/prepare/default/30_map_disks.sh
    trunk/usr/share/rear/layout/prepare/default/54_generate_device_code.sh
    trunk/usr/share/rear/layout/save/GNU/Linux/22_lvm_layout.sh
    trunk/usr/share/rear/layout/save/GNU/Linux/23_filesystem_layout.sh
    trunk/usr/share/rear/layout/save/GNU/Linux/24_swaps_layout.sh
    trunk/usr/share/rear/layout/save/GNU/Linux/26_crypt_layout.sh
    trunk/usr/share/rear/layout/save/GNU/Linux/27_hpraid_layout.sh
    trunk/usr/share/rear/layout/save/GNU/Linux/50_extract_vgcfg.sh
    trunk/usr/share/rear/lib/_input-output-functions.sh
    trunk/usr/share/rear/lib/bootloader-functions.sh
    trunk/usr/share/rear/lib/compatibility-functions.sh
    trunk/usr/share/rear/lib/config-functions.sh
    trunk/usr/share/rear/lib/framework-functions.sh
    trunk/usr/share/rear/lib/layout-functions.sh
    trunk/usr/share/rear/lib/linux-functions.sh
    trunk/usr/share/rear/lib/mkdeb-workflow.sh
    trunk/usr/share/rear/lib/mkdist-workflow.sh
    trunk/usr/share/rear/lib/mkrescue-functions.sh
    trunk/usr/share/rear/lib/mkrpm-workflow.sh
    trunk/usr/share/rear/lib/mktar-workflow.sh
    trunk/usr/share/rear/lib/network-functions.sh
    trunk/usr/share/rear/lib/progresssubsystem.nosh
    trunk/usr/share/rear/lib/udev-workflow.sh
    trunk/usr/share/rear/output/ISO/Linux-ia64/80_create_isofs.sh
    trunk/usr/share/rear/output/ISO/Linux-ppc64/80_create_isofs.sh
    trunk/usr/share/rear/output/PXE/default/81_create_pxelinux_cfg.sh
    trunk/usr/share/rear/output/RSYNC/default/20_make_prefix_dir.sh
    trunk/usr/share/rear/output/RSYNC/default/90_copy_result_files.sh
    trunk/usr/share/rear/output/USB/Linux-i386/30_create_extlinux.sh
    trunk/usr/share/rear/output/default/94_grub_rescue.sh
    trunk/usr/share/rear/pack/Debian/ia64/30_copy_kernel.sh
    trunk/usr/share/rear/pack/Fedora/ia64/30_copy_kernel.sh
    trunk/usr/share/rear/pack/GNU/Linux/90_create_initramfs.sh
    trunk/usr/share/rear/pack/Linux-i386/30_copy_kernel.sh
    trunk/usr/share/rear/pack/Linux-ppc64/30_copy_kernel.sh
    trunk/usr/share/rear/prep/BACULA/default/03_bextract_tape_device.sh
    trunk/usr/share/rear/prep/BACULA/default/45_check_BACULA_client_configured.sh
    trunk/usr/share/rear/prep/GNU/Linux/20_include_agetty.sh
    trunk/usr/share/rear/prep/GNU/Linux/21_include_dhclient.sh
    trunk/usr/share/rear/prep/GNU/Linux/22_include_lvm_tools.sh
    trunk/usr/share/rear/prep/GNU/Linux/23_include_md_tools.sh
    trunk/usr/share/rear/prep/GNU/Linux/28_include_vmware_tools.sh
    trunk/usr/share/rear/prep/ISO/Linux-ia64/34_define_console_ia64.sh
    trunk/usr/share/rear/prep/RSYNC/default/10_check_rsync.sh
    trunk/usr/share/rear/prep/RSYNC/default/15_check_rsync_protocol_version.sh
    trunk/usr/share/rear/recreate/GNU/Linux/09_disable_lvm2_md.sh
    trunk/usr/share/rear/recreate/GNU/Linux/31_create_filesystems.sh
    trunk/usr/share/rear/recreate/Linux-ia64/10_make_partitions.sh
    trunk/usr/share/rear/rescue/GNU/Linux/31_network_devices.sh
    trunk/usr/share/rear/rescue/GNU/Linux/40_use_serial_console.sh
    trunk/usr/share/rear/rescue/GNU/Linux/95_cfg2html.sh
    trunk/usr/share/rear/rescue/default/01_merge_skeletons.sh
    trunk/usr/share/rear/rescue/default/50_ssh.sh
    trunk/usr/share/rear/restore/DP/default/40_restore_with_dp.sh
    trunk/usr/share/rear/restore/GALAXY/default/39_create_ramdisk.sh
    trunk/usr/share/rear/restore/GALAXY/default/40_restore_with_galaxy.sh
    trunk/usr/share/rear/restore/GALAXY7/default/40_restore_with_galaxy.sh
    trunk/usr/share/rear/restore/NBU/default/40_restore_with_nbu.sh
    trunk/usr/share/rear/restore/SUSE_LINUX/91_create_missing_directories.sh
    trunk/usr/share/rear/restore/default/90_create_missing_directories.sh
    trunk/usr/share/rear/verify/DP/default/40_verify_dp.sh
    trunk/usr/share/rear/verify/DP/default/50_select_dp_restore.sh
    trunk/usr/share/rear/verify/GALAXY7/default/39_create_ramdisk.sh
    trunk/usr/share/rear/verify/GALAXY7/default/42_login_to_galaxy_and_setup_environment.sh
    trunk/usr/share/rear/verify/GNU/Linux/12_compare_physical_devices.sh
    trunk/usr/share/rear/verify/NBU/default/39_request_point_in_time_restore_parameters.sh
    trunk/usr/share/rear/verify/NBU/default/40_verify_nbu.sh
    trunk/usr/share/rear/verify/NETFS/default/08_start_required_daemons.sh
    trunk/usr/share/rear/verify/RSYNC/default/55_check_remote_backup_archive.sh
    trunk/usr/share/rear/verify/TSM/default/39_request_point_in_time_restore_parameters.sh
    trunk/usr/share/rear/verify/TSM/default/40_verify_tsm.sh

Modified: trunk/usr/sbin/rear
===================================================================
--- trunk/usr/sbin/rear	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/sbin/rear	2011-06-14 16:05:47 UTC (rev 610)
@@ -135,13 +135,13 @@
 	source $script
 done
 
-if ! type -p pidof >/dev/null ; then
+if ! has_binary pidof; then
 	echo "ERROR: Required program 'pidof' missing, please check your PATH" >&2
 	exit 1
 fi
 
 # do not run if another instance is running. pidof -x will always report at least $$
-SCRIPT_FILE="$(readlink -f $(type -p "$0" || echo "$0"))"
+SCRIPT_FILE="$(readlink -f $(get_path "$0" || echo "$0"))"
 PID=$(pidof -x -o %PPID "$SCRIPT_FILE")
 if IsInArray "$WORKFLOW" "${LOCKLESS_WORKFLOWS[@]}"; then
 	LOGFILE="$LOGFILE.lockless"
@@ -152,7 +152,7 @@
 
 # keep old log file
 if [[ -r "$LOGFILE" ]]; then
-	mv -f "$LOGFILE" "$LOGFILE".old 2>/dev/null
+	mv -f "$LOGFILE" "$LOGFILE".old 2>&8
 fi
 exec 2>"$LOGFILE" || echo "ERROR: Could not create $LOGFILE" >&2
 
@@ -207,7 +207,7 @@
 # check for requirements, # do we have all required binaries ?
 MISSING_PROGRS=()
 for f in "${REQUIRED_PROGS[@]}" ; do
-	if ! type -p "$f" >/dev/null ; then
+	if ! has_binary "$f"; then
 		MISSING_PROGS=( "${MISSING_PROGS[@]}" "$f" )
 	fi
 done
@@ -237,7 +237,7 @@
 StopIfError "Could not create $TMP_DIR"
 
 # Check for and run the requested workflow
-if type -t WORKFLOW_$WORKFLOW >/dev/null ; then
+if has_binary WORKFLOW_$WORKFLOW; then
 	Log "Running $WORKFLOW workflow"
 	WORKFLOW_$WORKFLOW "${ARGS[@]}"
 	Log "Finished running $WORKFLOW workflow"

Modified: trunk/usr/share/rear/backup/NETFS/default/50_make_backup.sh
===================================================================
--- trunk/usr/share/rear/backup/NETFS/default/50_make_backup.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/backup/NETFS/default/50_make_backup.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -54,7 +54,7 @@
 # while the backup runs in a sub-process, display some progress information to the user
 case "$BACKUP_PROG" in
 	(tar)
-		while sleep 1 ; kill -0 $BackupPID 2>/dev/null ; do
+		while sleep 1 ; kill -0 $BackupPID 2>&8; do
 			blocks="$(tail -1 ${BUILD_DIR}/${BACKUP_PROG_ARCHIVE}.log | awk 'BEGIN { FS="[ :]" } /^block [0-9]+: / { print $2 }')"
 			size="$((blocks*512))"
 			#echo -en "\e[2K\rArchived $((size/1024/1024)) MiB [avg $((size/1024/(SECONDS-starttime))) KiB/sec]"
@@ -68,14 +68,14 @@
 		# this should be good enough and in any case this is only some eye candy.
 		# TODO: Find a fast way to count the actual transfer data, preferrable getting the info from rsync.
 		let old_disk_used="$(get_disk_used "$backuparchive")"
-		while sleep 1 ; kill -0 $BackupPID 2>/dev/null ; do
+		while sleep 1 ; kill -0 $BackupPID 2>&8; do
 			let disk_used="$(get_disk_used "$backuparchive")" size=disk_used-old_disk_used
 			#echo -en "\e[2K\rArchived $((size/1024/1024)) MiB [avg $((size/1024/(SECONDS-starttime))) KiB/sec]"
 			echo "INFO Archived $((size/1024/1024)) MiB [avg $((size/1024/(SECONDS-starttime))) KiB/sec]" >&8
 		done
 		;;
 	(*)
-		while sleep 1 ; kill -0 $BackupPID 2>/dev/null ; do
+		while sleep 1 ; kill -0 $BackupPID 2>&8; do
 			size="$(stat -c "%s" "$backuparchive")" || {
 				kill -9 $BackupPID
 				ProgressError 

Modified: trunk/usr/share/rear/backup/RSYNC/default/45_calculate_req_space.sh
===================================================================
--- trunk/usr/share/rear/backup/RSYNC/default/45_calculate_req_space.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/backup/RSYNC/default/45_calculate_req_space.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -4,7 +4,7 @@
 while read -r ; do
 	LogPrint "Calculating size of $REPLY"
 	# on Linux output is represented in 1024-blocks (or kB) 
-	df -P "$REPLY"  >$TMP_DIR/fs_size 2>/dev/null
+	df -P "$REPLY"  >$TMP_DIR/fs_size
 	StopIfError "Failed to determine size of ${REPLY}."
 	fs_size=$(tail -n 1 $TMP_DIR/fs_size | awk '{print $3}')
 	_local_size=$((_local_size+fs_size))
@@ -15,7 +15,7 @@
 
 	(ssh)
 		LogPrint "Calculating size of $RSYNC_HOST:$RSYNC_PATH"
-		ssh -l $RSYNC_USER $RSYNC_HOST "df -P ${RSYNC_PATH}" >$TMP_DIR/rs_size 2>/dev/null
+		ssh -l $RSYNC_USER $RSYNC_HOST "df -P ${RSYNC_PATH}" >$TMP_DIR/rs_size 2>&8
 		StopIfError "Failed to determine size of ${RSYNC_PATH}"
 		_div=1	# 1024-blocks
 		grep -q "512-blocks" $TMP_DIR/rs_size && _div=2 # HPUX: divide with 2 to get kB size

Modified: trunk/usr/share/rear/backup/RSYNC/default/61_start_selinux.sh
===================================================================
--- trunk/usr/share/rear/backup/RSYNC/default/61_start_selinux.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/backup/RSYNC/default/61_start_selinux.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -9,9 +9,9 @@
 
 	(ssh)
 		# for some reason rsync changes the mode of backup after each run to 666
-		ssh $RSYNC_USER@$RSYNC_HOST "chmod $v 755 ${RSYNC_PATH}/${RSYNC_PREFIX}/backup" 2>/dev/null
+		ssh $RSYNC_USER@$RSYNC_HOST "chmod $v 755 ${RSYNC_PATH}/${RSYNC_PREFIX}/backup" 2>&8
 		$BACKUP_PROG -a "${TMP_DIR}/selinux.autorelabel" \
-		 "$RSYNC_USER@$RSYNC_HOST:${RSYNC_PATH}/${RSYNC_PREFIX}/backup/.autorelabel" 2>/dev/null
+		 "$RSYNC_USER@$RSYNC_HOST:${RSYNC_PATH}/${RSYNC_PREFIX}/backup/.autorelabel" 2>&8
 		_rc=$?
 		if [ $_rc -ne 0 ]; then
 			LogPrint "Failed to create .autorelabel on ${RSYNC_PATH}/${RSYNC_PREFIX}/backup [${rsync_err_msg[$_rc]}]"

Modified: trunk/usr/share/rear/backup/RSYNC/default/70_copy_backup_log.sh
===================================================================
--- trunk/usr/share/rear/backup/RSYNC/default/70_copy_backup_log.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/backup/RSYNC/default/70_copy_backup_log.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -9,9 +9,9 @@
 
 	(ssh)
 		$BACKUP_PROG -a "${BUILD_DIR}/${BACKUP_PROG_ARCHIVE}.log.gz" \
-		"${RSYNC_USER}@${RSYNC_HOST}:${RSYNC_PATH}/${RSYNC_PREFIX}/${BACKUP_PROG_ARCHIVE}-${Timestamp}.log.gz" 2>/dev/null
+		"${RSYNC_USER}@${RSYNC_HOST}:${RSYNC_PATH}/${RSYNC_PREFIX}/${BACKUP_PROG_ARCHIVE}-${Timestamp}.log.gz" 2>&8
 
-		$BACKUP_PROG -a "$LOGFILE" "${RSYNC_USER}@${RSYNC_HOST}:${RSYNC_PATH}/${RSYNC_PREFIX}/rear-${Timestamp}.log" 2>/dev/null
+		$BACKUP_PROG -a "$LOGFILE" "${RSYNC_USER}@${RSYNC_HOST}:${RSYNC_PATH}/${RSYNC_PREFIX}/rear-${Timestamp}.log" 2>&8
 		;;
 
 	(rsync)

Modified: trunk/usr/share/rear/build/Debian/i386/60_fix_debian_stuff.sh
===================================================================
--- trunk/usr/share/rear/build/Debian/i386/60_fix_debian_stuff.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/build/Debian/i386/60_fix_debian_stuff.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,12 +1,12 @@
 #
 # debian has to do everything different from all other Linux systems ...
 
-if test -x "$(type -p lilo.real)" ; then
-	cp -af $v "$(type -p lilo.real)" $ROOTFS_DIR/bin/lilo >&2
+if test -x "$(get_path lilo.real)" ; then
+	cp -af $v "$(get_path lilo.real)" $ROOTFS_DIR/bin/lilo >&2
 	cp -a $v /lib/libdevmapper* $ROOTFS_DIR/lib/ >&2
 fi
 
-if test -x "$(type -p lvmiopversion)" ; then
+if test -x "$(get_path lvmiopversion)" ; then
 	cp -af $v /lib/lvm-* $ROOTFS_DIR/lib/ >&2
 	cp -af $v /sbin/lvm* $ROOTFS_DIR/bin/ >&2
 fi

Modified: trunk/usr/share/rear/build/GNU/Linux/11_touch_empty_files.sh
===================================================================
--- trunk/usr/share/rear/build/GNU/Linux/11_touch_empty_files.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/build/GNU/Linux/11_touch_empty_files.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -18,8 +18,8 @@
 #
 #
 
-pushd $ROOTFS_DIR >/dev/null
-	touch var/log/lastlog	
+pushd $ROOTFS_DIR >&8
+	touch var/log/lastlog
 	touch var/lib/nfs/state
 	touch etc/mtab
-popd >/dev/null
+popd >&8

Modified: trunk/usr/share/rear/build/GNU/Linux/13_create_dotfiles.sh
===================================================================
--- trunk/usr/share/rear/build/GNU/Linux/13_create_dotfiles.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/build/GNU/Linux/13_create_dotfiles.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -29,6 +29,6 @@
 loadkeys -d     # Load default keyboard layout (US)
 rear recover    # Recover your system
 EOF
-chmod -v 0644 $ROOTFS_DIR/root/.bash_history
+chmod $v 0644 $ROOTFS_DIR/root/.bash_history >&2
 
 # any other dot files should be listed below

Modified: trunk/usr/share/rear/build/GNU/Linux/15_adjust_permissions.sh
===================================================================
--- trunk/usr/share/rear/build/GNU/Linux/15_adjust_permissions.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/build/GNU/Linux/15_adjust_permissions.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,9 +1,9 @@
 
 # adjust some permissions
-pushd $ROOTFS_DIR >/dev/null
+pushd $ROOTFS_DIR >&8
 # SSH requires this
 chmod $v 0700 root >&2
 chmod $v 0755 var/lib/empty >&2
 chown $v -R root.root root var/lib/empty >&2
 
-popd >/dev/null
+popd >&8

Modified: trunk/usr/share/rear/build/GNU/Linux/39_copy_binaries_libraries.sh
===================================================================
--- trunk/usr/share/rear/build/GNU/Linux/39_copy_binaries_libraries.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/build/GNU/Linux/39_copy_binaries_libraries.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -23,7 +23,7 @@
 # calculate binaries from needed progs
 declare -a BINARIES=( $(
 for bin in "${PROGS[@]}" "${REQUIRED_PROGS[@]}"; do
-	file="$(type -p "$bin")"
+	file="$(get_path "$bin")"
 	if [[ -x "$file" ]]; then
 		echo $file
 		echo "Found $file" >&8

Modified: trunk/usr/share/rear/build/GNU/Linux/60_verify_and_adjust_udev.sh
===================================================================
--- trunk/usr/share/rear/build/GNU/Linux/60_verify_and_adjust_udev.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/build/GNU/Linux/60_verify_and_adjust_udev.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -13,7 +13,7 @@
 		# Log "matched external call to $file in $location"
 		echo "matched external call to $file in $location" >&8
 	else
-		Log "WARNING: unmatched external call to '$file' in $location"
+		Debug "WARNING: unmatched external call to '$file' in $location"
 	fi
 done < <(
 

Modified: trunk/usr/share/rear/dr/GNU/Linux/21_describe_md.sh
===================================================================
--- trunk/usr/share/rear/dr/GNU/Linux/21_describe_md.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/dr/GNU/Linux/21_describe_md.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -5,7 +5,7 @@
 
 # silently skip the script if mdstat shows no raid configured
 # we check for 'blocks' and not for 'raid' to also cover the md type devices
-grep -q blocks /proc/mdstat &>/dev/null || return
+grep -q blocks /proc/mdstat 2>&8 || return
 
 mkdir -p ${VAR_DIR}/recovery/proc
 cat /proc/mdstat > "${VAR_DIR}/recovery/proc/mdstat"

Modified: trunk/usr/share/rear/dr/GNU/Linux/23_describe_lvm2.sh
===================================================================
--- trunk/usr/share/rear/dr/GNU/Linux/23_describe_lvm2.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/dr/GNU/Linux/23_describe_lvm2.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -9,7 +9,7 @@
 # 2007-01-04	GSS	Added general vgcfgbackup
 
 # silently skip the script if lvm is not available
-test -c /dev/mapper/control -a -x "$(type -p lvm)" || return	# silently skip
+test -c /dev/mapper/control -a -x "$(get_path lvm)" || return	# silently skip
 
 mkdir -p "${VAR_DIR}/recovery/lvm"
 StopIfError "Creating directory ${VAR_DIR}/recovery/lvm"

Modified: trunk/usr/share/rear/dr/GNU/Linux/95_collect_hpacucli.sh
===================================================================
--- trunk/usr/share/rear/dr/GNU/Linux/95_collect_hpacucli.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/dr/GNU/Linux/95_collect_hpacucli.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -4,13 +4,13 @@
 #
 
 # do nothing unless we have hpacucli in our path
-if ! type -p hpacucli >/dev/null; then
+if ! has_binary hpacucli; then
     return
 fi
 
 # add hpacucli to rescue media
 PROGS=( "${PROGS[@]}" hpacucli )
-eval $(grep ON_DIR= $(type -p hpacucli))
+eval $(grep ON_DIR= $(get_path hpacucli))
 COPY_AS_IS=( "${COPY_AS_IS[@]}" "$HPACUCLI_BIN_INSTALLATION_DIR" )
 
 # step 1) find out slots

Modified: trunk/usr/share/rear/dr/Linux-i386/31_describe_device_properties.sh
===================================================================
--- trunk/usr/share/rear/dr/Linux-i386/31_describe_device_properties.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/dr/Linux-i386/31_describe_device_properties.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -14,7 +14,7 @@
 	sfdisk -s $device > $VAR_DIR/recovery$device/size
 	StopIfError "Could not store size for '$device'"
 
-	dd if=$device of=$VAR_DIR/recovery$device/mbr bs=446 count=1 >/dev/null
+	dd if=$device of=$VAR_DIR/recovery$device/mbr bs=446 count=1 >&8
 	StopIfError "Could not store MBR for '$device'"
 
 	# if we have udev collect also the drivers required for this device

Modified: trunk/usr/share/rear/dr/Linux-ia64/31_describe_device_properties.sh
===================================================================
--- trunk/usr/share/rear/dr/Linux-ia64/31_describe_device_properties.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/dr/Linux-ia64/31_describe_device_properties.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -8,13 +8,13 @@
 	#[ $PIPESTATUS -eq 0 ]
 	#StopIfError "Could not store the partition table for '$device'"
 
-	sfdisk -g $device 2>/dev/null > $VAR_DIR/recovery$device/sfdisk.geometry
+	sfdisk -g $device 2>&8 > $VAR_DIR/recovery$device/sfdisk.geometry
 	StopIfError "Could not store geometry for '$device'"
 
-	sfdisk -s $device 2>/dev/null > $VAR_DIR/recovery$device/size
+	sfdisk -s $device 2>&8 > $VAR_DIR/recovery$device/size
 	StopIfError "Could not store size for '$device'"
 
-	dd if=$device of=$VAR_DIR/recovery$device/mbr bs=512 count=2 >/dev/null
+	dd if=$device of=$VAR_DIR/recovery$device/mbr bs=512 count=2 >&8
 	StopIfError "Could not store MBR for '$device'"
 
 done <$VAR_DIR/recovery/required_devices

Modified: trunk/usr/share/rear/dr/default/09_only_include_vg.sh
===================================================================
--- trunk/usr/share/rear/dr/default/09_only_include_vg.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/dr/default/09_only_include_vg.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -11,7 +11,7 @@
 test ${#ONLY_INCLUDE_VG[@]} -eq 0 && return	# skip when ONLY_INCLUDE_VG is empty
 
 # write the known VGs on this system into file $TMP_DIR/known_vg
-lvm vgs --noheadings -o vg_name 2>/dev/null 8>&- 7>&- | awk '{print $1}' | sort > $TMP_DIR/known_vg
+lvm vgs --noheadings -o vg_name 2>&8 8>&- 7>&- | awk '{print $1}' | sort > $TMP_DIR/known_vg
 
 # list the ONLY_INCLUDE_VG[@] array into file $TMP_DIR/include_vg
 echo ${ONLY_INCLUDE_VG[@]} | tr ' ' '\n' | sort -u > $TMP_DIR/include_vg

Modified: trunk/usr/share/rear/finalize/Debian/i386/17_rebuild_initramfs.sh
===================================================================
--- trunk/usr/share/rear/finalize/Debian/i386/17_rebuild_initramfs.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/finalize/Debian/i386/17_rebuild_initramfs.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -5,7 +5,7 @@
 have_udev || return 0
 
 # check if we need to do something
-if test -s $TMP_DIR/storage_drivers && ! diff $TMP_DIR/storage_drivers $VAR_DIR/recovery/storage_drivers >/dev/null ; then
+if test -s $TMP_DIR/storage_drivers && ! diff $TMP_DIR/storage_drivers $VAR_DIR/recovery/storage_drivers >&8 ; then
 	# remember, diff returns 0 if the files are the same
 
 	# merge new drivers with previous initrd modules

Modified: trunk/usr/share/rear/finalize/GNU/Linux/15_migrate_disk_devices.sh
===================================================================
--- trunk/usr/share/rear/finalize/GNU/Linux/15_migrate_disk_devices.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/finalize/GNU/Linux/15_migrate_disk_devices.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -16,7 +16,7 @@
 is missing, it should be defined in verify/GNU/Linux/21_migrate_recovery_configuration.sh."
 
 # now run sed
-pushd /mnt/local >/dev/null
+pushd /mnt/local >&8
 # the funny [] around the first letter make sure that shopt -s nullglob removes this file from the list if it does not exist
 # the files without a [] are mandatory, like fstab
 for file in 	[b]oot/{grub.conf,menu.lst,device.map} [e]tc/grub.* [b]oot/grub/{grub.conf,menu.lst,device.map} \
@@ -56,4 +56,4 @@
 		echo "$swap_device 	swap	swap	defaults	0 0" >> etc/fstab
 	done
 fi
-popd >/dev/null
+popd >&8

Modified: trunk/usr/share/rear/finalize/GNU/Linux/41_migrate_udev_rules.sh
===================================================================
--- trunk/usr/share/rear/finalize/GNU/Linux/41_migrate_udev_rules.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/finalize/GNU/Linux/41_migrate_udev_rules.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -26,7 +26,7 @@
 # preserving a backup in /root/rear-*.old
 for rule in "${RULE_FILES[@]}" ; do
 	rulefile="$(basename "$rule")"
-	if test -s "$rule" && ! diff -q "$rule" /mnt/local/"$rule" >/dev/null ; then
+	if test -s "$rule" && ! diff -q "$rule" /mnt/local/"$rule" >&8 ; then
 		LogPrint "Updating udev configuration ($rulefile)"
 		cp /mnt/local/"$rule" /mnt/local/root/rear-"$rulefile".old
 		cp "$rule" /mnt/local/"$rule"

Modified: trunk/usr/share/rear/finalize/GNU/Linux/70_create_swapfiles.sh
===================================================================
--- trunk/usr/share/rear/finalize/GNU/Linux/70_create_swapfiles.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/finalize/GNU/Linux/70_create_swapfiles.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -61,7 +61,7 @@
 	StopIfError "Invalid swap creation command: '${CMD[@]}'"
 	
 	# check that command exists
-	[ -x "$(type -p $CMD)" ]
+	[ -x "$(get_path $CMD)" ]
 	StopIfError "Swap creation command '$CMD' not found !"
 
 	# run command

Modified: trunk/usr/share/rear/finalize/Linux-ppc64/20_install_yaboot.sh
===================================================================
--- trunk/usr/share/rear/finalize/Linux-ppc64/20_install_yaboot.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/finalize/Linux-ppc64/20_install_yaboot.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -13,7 +13,7 @@
     bootlist -m normal $bootdev
     NOBOOTLOADER=
   else
-    bootparts=`sfdisk -l 2>/dev/null | awk '/PPC PReP Boot/ {print $1}'`
+    bootparts=`sfdisk -l 2>&8 | awk '/PPC PReP Boot/ {print $1}'`
     LogPrint "Boot partitions found: $bootparts."
     for part in $bootparts
     do

Modified: trunk/usr/share/rear/finalize/SUSE_LINUX/i386/17_rebuild_initramfs.sh
===================================================================
--- trunk/usr/share/rear/finalize/SUSE_LINUX/i386/17_rebuild_initramfs.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/finalize/SUSE_LINUX/i386/17_rebuild_initramfs.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -5,7 +5,7 @@
 have_udev || return 0
 
 # check if we need to do something
-if test -s $TMP_DIR/storage_drivers && ! diff $TMP_DIR/storage_drivers $VAR_DIR/recovery/storage_drivers >/dev/null ; then
+if test -s $TMP_DIR/storage_drivers && ! diff $TMP_DIR/storage_drivers $VAR_DIR/recovery/storage_drivers >&8 ; then
 	# remember, diff returns 0 if the files are the same
 
 	# merge new drivers with previous initrd modules

Modified: trunk/usr/share/rear/finalize/default/10_populate_dev.sh
===================================================================
--- trunk/usr/share/rear/finalize/default/10_populate_dev.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/finalize/default/10_populate_dev.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,5 +1,4 @@
 # many systems now use udev and thus have an empty /dev
 # this prevents our chrooted grub install later on, so we copy
 # the /dev from our rescue system to the freshly installed system
-cp -fa /dev /mnt/local/ 2>/dev/null
-true # ignore errors, they are normal
+cp -fa /dev /mnt/local/

Modified: trunk/usr/share/rear/format/USB/default/30_format_usb_disk.sh
===================================================================
--- trunk/usr/share/rear/format/USB/default/30_format_usb_disk.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/format/USB/default/30_format_usb_disk.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,6 +1,6 @@
 # $answer is filled by 20_check_usb_layout.sh
 if [[ "$answer" == "Yes" || "$FORCE" ]]; then
-	umount $REAL_USB_DEVICE &>/dev/null
+	umount $REAL_USB_DEVICE >&8 2>&1
 
 	LogPrint "Repartition $RAW_USB_DEVICE"
 

Modified: trunk/usr/share/rear/layout/compare/default/50_compare_layout.sh
===================================================================
--- trunk/usr/share/rear/layout/compare/default/50_compare_layout.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/compare/default/50_compare_layout.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,6 +1,6 @@
 # Test if ORIG_LAYOUT and TEMP_LAYOUT are the same
 
-diff $ORIG_LAYOUT $TEMP_LAYOUT >/dev/null
+diff $ORIG_LAYOUT $TEMP_LAYOUT >&8
 
 if [ $? -eq 0 ] ; then
     LogPrint "Disk layout is identical."

Modified: trunk/usr/share/rear/layout/prepare/GNU/Linux/10_include_partition_code.sh
===================================================================
--- trunk/usr/share/rear/layout/prepare/GNU/Linux/10_include_partition_code.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/prepare/GNU/Linux/10_include_partition_code.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,6 +1,6 @@
 # Generate code to partition the disks
 
-if ! type -p parted &>/dev/null ; then
+if ! has_binary parted; then
     return
 fi
 

Modified: trunk/usr/share/rear/layout/prepare/GNU/Linux/11_include_lvm_code.sh
===================================================================
--- trunk/usr/share/rear/layout/prepare/GNU/Linux/11_include_lvm_code.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/prepare/GNU/Linux/11_include_lvm_code.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -2,7 +2,7 @@
 # The input to the code creation functions is a file descriptor to one line
 # of the layout description.
 
-if ! type -p lvm &>/dev/null ; then
+if ! has_binary lvm; then
     return
 fi
 

Modified: trunk/usr/share/rear/layout/prepare/GNU/Linux/12_include_raid_code.sh
===================================================================
--- trunk/usr/share/rear/layout/prepare/GNU/Linux/12_include_raid_code.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/prepare/GNU/Linux/12_include_raid_code.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,6 +1,6 @@
 # Code to recreate a software RAID configuration
 
-if ! type -p mdadm &>/dev/null ; then
+if ! has_binary mdadm; then
     return
 fi
 

Modified: trunk/usr/share/rear/layout/prepare/GNU/Linux/13_include_filesystem_code.sh
===================================================================
--- trunk/usr/share/rear/layout/prepare/GNU/Linux/13_include_filesystem_code.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/prepare/GNU/Linux/13_include_filesystem_code.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -39,7 +39,7 @@
 
             local tunefs="tune2fs"
             # on RHEL 5, tune2fs does not work on ext4
-            if [ "$fstype" = "ext4" ] && type -p tune4fs &>/dev/null ; then
+            if [ "$fstype" = "ext4" ] && has_binary tune4fs; then
                 tunefs="tune4fs"
             fi
 

Modified: trunk/usr/share/rear/layout/prepare/default/01_prepare_files.sh
===================================================================
--- trunk/usr/share/rear/layout/prepare/default/01_prepare_files.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/prepare/default/01_prepare_files.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -43,7 +43,7 @@
 
 mkdir -p /mnt/local
 if create_component "vgchange" "rear" ; then
-    lvm vgchange -a n > /dev/null
+    lvm vgchange -a n >&8
     component_created "vgchange" "rear"
 fi
 

Modified: trunk/usr/share/rear/layout/prepare/default/30_map_disks.sh
===================================================================
--- trunk/usr/share/rear/layout/prepare/default/30_map_disks.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/prepare/default/30_map_disks.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -51,7 +51,7 @@
     fi
     
     # else, loop over all disks to find one of the same size
-    for path in $(ls -d /sys/block/* 2>/dev/null) ; do
+    for path in $(ls -d /sys/block/*) ; do
         if [ ! -r $path/size ] || [ ! -d $path/queue ] ; then
             continue
         fi
@@ -71,7 +71,7 @@
     fi
     # Allow the user to select from the set of unmapped disks
     possible_targets=()
-    for path in $(ls -d /sys/block/* 2>/dev/null) ; do
+    for path in $(ls -d /sys/block/*) ; do
         if ! reverse_mapping_exists "/dev/$(get_device_name $path)" && [ -d $path/queue ] ; then
             possible_targets=("${possible_targets[@]}" "$(get_device_name $path)")
         fi

Modified: trunk/usr/share/rear/layout/prepare/default/54_generate_device_code.sh
===================================================================
--- trunk/usr/share/rear/layout/prepare/default/54_generate_device_code.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/prepare/default/54_generate_device_code.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -15,7 +15,7 @@
         
         donedeps=0
         for dep in "${deps[@]}" ; do
-            if grep "done $dep " $LAYOUT_TODO.tmp > /dev/null ; then
+            if grep -q "done $dep " $LAYOUT_TODO.tmp; then
                 let donedeps=donedeps+1
             fi
         done

Modified: trunk/usr/share/rear/layout/save/GNU/Linux/22_lvm_layout.sh
===================================================================
--- trunk/usr/share/rear/layout/save/GNU/Linux/22_lvm_layout.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/save/GNU/Linux/22_lvm_layout.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,6 +1,6 @@
 # Save LVM layout
 
-if ! type -p lvm &>/dev/null ; then
+if ! has_binary lvm; then
     return
 fi
 

Modified: trunk/usr/share/rear/layout/save/GNU/Linux/23_filesystem_layout.sh
===================================================================
--- trunk/usr/share/rear/layout/save/GNU/Linux/23_filesystem_layout.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/save/GNU/Linux/23_filesystem_layout.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -21,7 +21,7 @@
                 tunefs="tune2fs"
                 # on RHEL 5 tune2fs does not work on ext4, needs tune4fs
                 if [ "$fstype" = "ext4" ] ; then
-                    if ! tune2fs -l $device &>/dev/null ; then
+                    if ! tune2fs -l $device >&8; then
                         tunefs="tune4fs"
                     fi
                 fi

Modified: trunk/usr/share/rear/layout/save/GNU/Linux/24_swaps_layout.sh
===================================================================
--- trunk/usr/share/rear/layout/save/GNU/Linux/24_swaps_layout.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/save/GNU/Linux/24_swaps_layout.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -17,7 +17,7 @@
         done
         
         # find uuid or label
-        if type swaplabel &>/dev/null ; then
+        if has_binary swaplabel; then
             while read what value junk; do
                 case $what in
                     UUID:)

Modified: trunk/usr/share/rear/layout/save/GNU/Linux/26_crypt_layout.sh
===================================================================
--- trunk/usr/share/rear/layout/save/GNU/Linux/26_crypt_layout.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/save/GNU/Linux/26_crypt_layout.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,7 +1,7 @@
 # Describe luks devices
 # We use /etc/crypttab and cryptsetup for information
 
-if ! type cryptsetup &>/dev/null ; then
+if ! has_binary cryptsetup; then
     return
 fi
 
@@ -9,7 +9,7 @@
 REQUIRED_PROGS=( "${REQUIRED_PROGS[@]}" cryptsetup )
 
 for device in /dev/mapper/* ; do
-    if ! cryptsetup isLuks $device &>/dev/null; then
+    if ! cryptsetup isLuks $device >&8 2>&1; then
         continue
     fi
     

Modified: trunk/usr/share/rear/layout/save/GNU/Linux/27_hpraid_layout.sh
===================================================================
--- trunk/usr/share/rear/layout/save/GNU/Linux/27_hpraid_layout.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/save/GNU/Linux/27_hpraid_layout.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,12 +1,12 @@
 # Collect HP Smartarray information
 
-if ! type hpacucli &>/dev/null ; then
+if ! has_binary hpacucli; then
     return
 fi
 
 # Add hpacucli to the rescue image
 PROGS=( "${PROGS[@]}" hpacucli )
-eval $(grep ON_DIR= $(type -p hpacucli))
+eval $(grep ON_DIR= $(get_path hpacucli))
 COPY_AS_IS=( "${COPY_AS_IS[@]}" "$HPACUCLI_BIN_INSTALLATION_DIR" )
 
 Log "Saving HP SmartArray configuration."

Modified: trunk/usr/share/rear/layout/save/GNU/Linux/50_extract_vgcfg.sh
===================================================================
--- trunk/usr/share/rear/layout/save/GNU/Linux/50_extract_vgcfg.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/layout/save/GNU/Linux/50_extract_vgcfg.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,8 +1,8 @@
 # Use vgcfgbackup to copy the current LVM setup exactly
 
-if ! type -p lvm &>/dev/null ; then
+if ! has_binary lvm; then
     return
 fi
 
 mkdir -p $v $VAR_DIR/layout/lvm >&2
-lvm 8>&- 7>&- vgcfgbackup -f $VAR_DIR/layout/lvm/%s.cfg > /dev/null
+lvm 8>&- 7>&- vgcfgbackup -f $VAR_DIR/layout/lvm/%s.cfg >&8

Modified: trunk/usr/share/rear/lib/_input-output-functions.sh
===================================================================
--- trunk/usr/share/rear/lib/_input-output-functions.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/_input-output-functions.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -62,7 +62,7 @@
 	if test "$JOBS" ; then
                 Log "The following jobs are still active:"
                 jobs -l >&2
-		kill -9 "${JOBS[@]}" &>/dev/null
+		kill -9 "${JOBS[@]}" >&2
 		sleep 1 # allow system to clean up after killed jobs
 	fi
 	for task in "${EXIT_TASKS[@]}" ; do
@@ -85,13 +85,27 @@
 	BugError "Forbidden use of trap with '$@'. Use AddExitTask instead."
 }
 
+# Check if any of the binaries/aliases exist
+has_binary() {
+	for $bin in $@; do
+		if type $bin >&8 2>&1; then
+			return 0
+		fi
+	done
+	return 1
+}
+
+get_path() {
+	type -p $1 2>&8
+}
+
 Error() {
-	if type caller &>/dev/null ; then
+	if has_binary caller; then
 		# Print stack strace on error
 		let c=0 ; while caller $c ; do let c++ ; done | sed 's/^/Trace: /' >&2 ; unset c
 	fi
 	# If first argument is numerical, use it as exit code
-	if [ $1 -eq $1 ] 2>/dev/null; then
+	if [ $1 -eq $1 ] 2>&8; then
 		EXIT_CODE=$1
 		shift
 	else
@@ -111,7 +125,7 @@
 
 BugError() {
 	# If first argument is numerical, use it as exit code
-	if [ $1 -eq $1 ] 2>/dev/null; then
+	if [ $1 -eq $1 ] 2>&8; then
 		EXIT_CODE=$1
 		shift
 	else
@@ -184,7 +198,7 @@
 }
 
 # setup dummy progress subsystem as a default
-# not VEROSE, Progress stuff replaced by dummy/noop
+# not VERBOSE, Progress stuff replaced by dummy/noop
 exec 8>/dev/null # start ProgressPipe listening at fd 8
 QuietAddExitTask "exec 8>&-" # new method, close fd 8 at exit
 
@@ -200,39 +214,17 @@
 ProgressStep() {
 	: ;
 }
-ProgressStepSingleChar() {
-	: ;
-}
 
-
-ProgressStopOrError() {
-	test $# -le 0 && Error "ProgressStopOrError called without return code to check !"
-	if test "$1" -gt 0 ; then
-		shift
-		ProgressError
-		Error "$@"
-	else
-		ProgressStop
-	fi
+# Check if any of the binaries/aliases exist
+has_binary() {
+	for bin in $@; do
+		if type $bin >&8 2>&1; then
+			return 0
+		fi
+	done
+	return 1
 }
 
-ProgressStopIfError() {
-	test $# -le 0 && Error "ProgressStopIfError called without return code to check !"
-	test "$1" -gt 0 || return 0
-	shift
-	ProgressError
-	Error "$@"
+get_path() {
+	type -p $1 2>&8
 }
-
-SpinnerSleep() {
-	if test $# -le 0 ; then
-		sec=1
-	else
-		sec=$1
-	fi
-	for i in `seq 1 $sec`
-	do
-		sleep 1
-		ProgressStep
-	done
-}

Modified: trunk/usr/share/rear/lib/bootloader-functions.sh
===================================================================
--- trunk/usr/share/rear/lib/bootloader-functions.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/bootloader-functions.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -120,7 +120,7 @@
     # Enable serial console, unless explicitly disabled
     if [[ "$USE_SERIAL_CONSOLE" =~ ^[yY1] ]]; then
         for devnode in $(ls /dev/ttyS[0-9]* | sort); do
-            speed=$(stty -F $devnode 2>/dev/null | awk '/^speed / { print $2 }')
+            speed=$(stty -F $devnode 2>&8 | awk '/^speed / { print $2 }')
             if [ "$speed" ]; then
                 echo "serial ${devnode##/dev/ttyS} $speed"
             fi
@@ -285,7 +285,7 @@
 	fi
 
 	# You need the memtest86+ package installed for this to work
-	MEMTEST_BIN=$(ls -d /boot/memtest86+-* 2>/dev/null | tail -1)
+	MEMTEST_BIN=$(ls -d /boot/memtest86+-* 2>&8 | tail -1)
 	if [ "$MEMTEST_BIN" != "." -a -r "$MEMTEST_BIN" ] ; then
 		cp $v "$MEMTEST_BIN" "$BOOT_DIR/memtest" >&2
 		echo "memtest - Run memtest86+"

Modified: trunk/usr/share/rear/lib/compatibility-functions.sh
===================================================================
--- trunk/usr/share/rear/lib/compatibility-functions.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/compatibility-functions.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,13 +1,10 @@
 # put all disaster recovery related functions here
 
 
-if type -p vol_id >/dev/null ; then
+if has_binary vol_id; then
       # nothing
 	:
-# NOTE: THE FOLLOWING elif IS PERMANENTLY DISABLED, WE WANT TO SEE WHO COMPLAINS ABOUT IT
-# AND BASICALLY GET RID OF THE udev_volume_id SUPPORT. IN ANY CASE IT IS ONLY FOR SOME VERY EARLY
-# Linux 2.6 SYSTEMS AND THE INTERNAL vol_id SEEMS TO WORK JUST FINE FOR THOSE. (Schlomo 2009-11-15)
-elif test "" && type -p udev_volume_id >/dev/null ; then
+elif has_binary udev_volume_id; then
 	Debug "Using 'udev_volume_id' for vol_id"
 	# vol_id does not exist, but the older udev_volume_id is available
 	# we write a little wrapper to map udev_volume_id to vol_id
@@ -45,7 +42,7 @@
 			-e "s/^U:\(.*\)/ID_FS_UUID='\1'/" | grep =
 	}
 # NOTE: We use blkid ONLY if it is a newer one and reports information back in udev-style
-elif type -p blkid >/dev/null && blkid -o udev 2>/dev/null >/dev/null ; then
+elif has_binary blkid && has_binary udev; then
 	Debug "Using 'blkid' for vol_id"
 	# since udev 142 vol_id was removed and udev depends on blkid
 	# blkid -o udev returns the same output as vol_id used to
@@ -86,7 +83,7 @@
 				val="${val##*( )}"
 				case "$key" in
 				*features*)
-					if expr match "$val" ".*journal.*" >/dev/null ; then
+					if expr match "$val" ".*journal.*" >&8; then
 						echo "ID_FS_TYPE='ext3'"
 					else
 						echo "ID_FS_TYPE='ext2'"
@@ -107,7 +104,7 @@
 		*ReiserFS*)
 			echo "ID_FS_USAGE='filesystem'"
 			echo "ID_FS_TYPE='reiserfs'"
-			echo "ID_FS_LABEL='$(dd if="$1" bs=1 skip=$((0x10064)) count=64 2>/dev/null)'"
+			echo "ID_FS_LABEL='$(dd if="$1" bs=1 skip=$((0x10064)) count=64 2>&8)'"
 			;;
 		*XFS*)
 			echo "ID_FS_USAGE='filesystem'"
@@ -119,7 +116,7 @@
 			echo "ID_FS_USAGE='other'"
 			echo "ID_FS_TYPE='swap'"
 			echo "ID_FS_VERSION='2'"
-			echo "ID_FS_LABEL='$(dd if="$1" bs=1 skip=$((0x41c)) count=64 2>/dev/null)'"
+			echo "ID_FS_LABEL='$(dd if="$1" bs=1 skip=$((0x41c)) count=64 2>&8)'"
 			;;
 		*)
 			Error "Unsupported filesystem found on '$1'

Modified: trunk/usr/share/rear/lib/config-functions.sh
===================================================================
--- trunk/usr/share/rear/lib/config-functions.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/config-functions.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -27,7 +27,7 @@
 	if test "$OS_VENDOR" = generic -o "$OS_VERSION" = none ; then
 	
 		# try to use lsb_release
-		if type lsb_release >/dev/null 2>&1 ; then
+		if has_binary lsb_release >&8 2>&1; then
 			OS_VENDOR="$(lsb_release -i -s | tr -s " \t" _)"
 			OS_VERSION="$(lsb_release -r -s | tr -s " \t" _)"
 		else

Modified: trunk/usr/share/rear/lib/framework-functions.sh
===================================================================
--- trunk/usr/share/rear/lib/framework-functions.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/framework-functions.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -28,7 +28,7 @@
 	StopIfError "$1 is a directory, cannot source"
 	if test -s "$1" ; then
 		local relname="${1##$SHARE_DIR/}"
-		if test "$SIMULATE" && expr "$1" : "$SHARE_DIR" >/dev/null ; then
+		if test "$SIMULATE" && expr "$1" : "$SHARE_DIR" >&8; then
 			# simulate sourcing the scripts in $SHARE_DIR
 			LogPrint "Source $relname"
 		else

Modified: trunk/usr/share/rear/lib/layout-functions.sh
===================================================================
--- trunk/usr/share/rear/lib/layout-functions.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/layout-functions.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -202,7 +202,7 @@
   local pos
   for pos in $(seq 0 $(( max -1 ))); do
     ### Arithmetic comparison
-    if (( 10#0${v1list[$pos]} >= 0 && 10#0${v2list[$pos]} >= 0 )) 2>/dev/null; then
+    if (( 10#0${v1list[$pos]} >= 0 && 10#0${v2list[$pos]} >= 0 )) 2>&8; then
 #      echo "pos $pos: arithm ${v1list[$pos]} vs ${v2list[$pos]}"
       if (( 10#0${v1list[$pos]} < 10#0${v2list[$pos]} )); then
         return 1

Modified: trunk/usr/share/rear/lib/linux-functions.sh
===================================================================
--- trunk/usr/share/rear/lib/linux-functions.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/linux-functions.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -21,8 +21,7 @@
 # check if udev is available in a sufficiently recent version
 have_udev() {
 	local relpath="$1"; shift
-	if [ -d $relpath/etc/udev/rules.d ] && \
-		{ type -p udevadm || type -p udevtrigger || type -p udevstart; } &>/dev/null; then
+	if [ -d $relpath/etc/udev/rules.d ] && has_binary udevadm udevtrigger; then
 		return 0
 	fi
 	return 1
@@ -30,9 +29,9 @@
 
 # call udevtrigger
 my_udevtrigger() {
-	if type -p udevadm &>/dev/null; then
+	if has_binary udevadm; then
 		udevadm trigger $@
-	elif type -p udevtrigger &>/dev/null; then
+	elif has_binary udevtrigger; then
 		udevtrigger $@
 	else
 		# do what start_udev does on RHEL 4
@@ -40,15 +39,15 @@
 		if [ -n "$pid" ]; then
 			kill $pid
 		fi
-		udevstart </dev/null &>/dev/null
+		udevstart </dev/null >&8 2>&1
 	fi
 }
 
 # call udevsettle
 my_udevsettle() {
-	if type -p udevadm &>/dev/null; then
+	if has_binary udevadm; then
 		udevadm settle $@
-	elif type -p udevsettle &>/dev/null; then
+	elif has_binary udevsettle; then
 		udevsettle $@
 	elif [ -e /sys/kernel/uevent_seqnum ] && [ -e /dev/.udev/uevent_seqnum ]; then
 		# re-implement udevsettle for older systems
@@ -64,7 +63,7 @@
 
 # call udevinfo
 my_udevinfo() {
-	if type -p udevadm &>/dev/null; then
+	if has_binary udevadm; then
 		udevadm info "$@"
 	else
 		udevinfo "$@"
@@ -117,7 +116,7 @@
 		[[ -z "$1" ]] && continue # ignore blanks
 		cp -a -L -f $v "$1" "$dest" >&2
 		StopIfError "[BinCopyTo] Could not copy '$1' to '$dest'"
-#		strip -s "$dest/$(basename "$1")" 2>/dev/null
+#		strip -s "$dest/$(basename "$1")" 2>&8
 	done
 	: # make sure that a failed strip won't fail the BinCopyTo
 }
@@ -191,7 +190,7 @@
 # to shared objects and shared object files for the binaries in $*.
 # This is the function copied from mkinitrd off SuSE 9.3
 SharedObjectFiles() {
-	type -p ldd &>/dev/null
+	has_binary ldd
 	StopIfError "Unable to find a working ldd binary."
 
 	# Default ldd output (when providing more than one argument) has 5 cases:
@@ -264,7 +263,7 @@
 		module_list=$( \
 			/sbin/modprobe $with_modprobe_conf --ignore-install \
 				--set-version $kernel_version \
-				--show-depends $module 2>/dev/null \
+				--show-depends $module 2>&8 \
 				| awk '/^insmod / { print $2 }' | sort -u)
 
 		if [ -z "$module_list" ]; then

Modified: trunk/usr/share/rear/lib/mkdeb-workflow.sh
===================================================================
--- trunk/usr/share/rear/lib/mkdeb-workflow.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/mkdeb-workflow.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -10,7 +10,7 @@
 WORKFLOWS=( ${WORKFLOWS[@]} mkdeb )
 WORKFLOW_mkdeb () {
 
-	type -p dpkg >/dev/null
+	has_binary dpkg
 	StopIfError "Please install 'dpkg' into your PATH."
 
 	# create dist archives

Modified: trunk/usr/share/rear/lib/mkdist-workflow.sh
===================================================================
--- trunk/usr/share/rear/lib/mkdist-workflow.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/mkdist-workflow.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -49,7 +49,7 @@
 	# remove development files
 	rm -Rf $v .project .settings .externalToolBuilders >&2
 
-	cat >./$CONFIG_DIR/local.conf <<EOF
+	cat <<EOF >./$CONFIG_DIR/local.conf
 # sample local configuration
 
 # Create ReaR rescue media as ISO image
@@ -66,7 +66,7 @@
 EOF
 	
 	# this little hack writes the same content into all these files...
-	tee ./$CONFIG_DIR/templates/PXE_pxelinux.cfg >/dev/null <<EOF
+	cat <<EOF >./$CONFIG_DIR/templates/PXE_pxelinux.cfg
 default hd
 prompt 1
 timeout 300
@@ -94,7 +94,7 @@
        		 --exclude=\*.rpmnew\* --exclude=.\*.swp -cv \
 			"$SHARE_DIR" \
 			"$CONFIG_DIR" \
-			"$(type -p "$0")" |\
+			"$(get_path "$0")" |\
 		tar -C $BUILD_DIR/$prod_ver -x >&8
 	StopIfError "Could not copy files to $BUILD_DIR/$prod_ver"
 	

Modified: trunk/usr/share/rear/lib/mkrescue-functions.sh
===================================================================
--- trunk/usr/share/rear/lib/mkrescue-functions.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/mkrescue-functions.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -54,7 +54,7 @@
 	"LVM")		# LVM - find disks under /dev/vg??/lvol??
 		[ -c /dev/mapper/control ]
 		StopIfError "LVM version 1 not supported"
-		for disk in $(lvm vgdisplay -v 2>/dev/null | awk -F\ + '/PV Name/ {print $4}');
+		for disk in $(lvm vgdisplay -v 2>&8 | awk -F\ + '/PV Name/ {print $4}');
 		do
 			local devcat=$(CategoriseDev ${disk})
 			if [ ${devcat} = 'NORMAL' ]; then
@@ -190,7 +190,7 @@
 while read LABEL junk
 do
 	LABEL="${LABEL/*=/}"
-	if dd if=$1 bs=1024 count=10 2>/dev/null | strings | grep -q "${LABEL}" ; then
+	if dd if=$1 bs=1024 count=10 2>&8 | strings | grep -q "${LABEL}" ; then
 		SWAPLABEL="-L ${LABEL}"
 		Log "Found swap label $LABEL on $1"
 	fi

Modified: trunk/usr/share/rear/lib/mkrpm-workflow.sh
===================================================================
--- trunk/usr/share/rear/lib/mkrpm-workflow.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/mkrpm-workflow.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -10,7 +10,7 @@
 WORKFLOWS=( ${WORKFLOWS[@]} mkrpm )
 WORKFLOW_mkrpm () {
 
-	type -p rpmbuild >/dev/null
+	has_binary rpmbuild
 	StopIfError "Please install 'rpmbuild' into your PATH."
 
 	# create dist archives

Modified: trunk/usr/share/rear/lib/mktar-workflow.sh
===================================================================
--- trunk/usr/share/rear/lib/mktar-workflow.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/mktar-workflow.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -31,7 +31,7 @@
 	"
 	
 	LogPrint "Creating archive '$ARGS'"
-	tar -C / --exclude=\*~ -cvzf "$ARGS" "$SHARE_DIR" "$CONFIG_DIR" "$(type -p "$0")" >&2
+	tar -C / --exclude=\*~ -cvzf "$ARGS" "$SHARE_DIR" "$CONFIG_DIR" "$(get_path "$0")" >&2
 	StopIfError "Could not create archive"
 	
 }

Modified: trunk/usr/share/rear/lib/network-functions.sh
===================================================================
--- trunk/usr/share/rear/lib/network-functions.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/network-functions.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -193,7 +193,7 @@
           s=$(cat $1);
        fi;
     fi;
-    (echo "$s" > /etc/resolv.conf;) >/dev/null 2>&1;
+    (echo "$s" > /etc/resolv.conf;) &>/dev/null;
     r=$?
     if [ $r -eq 0 ]; then
         logger -p local7.notice -t "NET" -i "$0 : updated /etc/resolv.conf";
@@ -338,9 +338,9 @@
 flush_dev() {
 # Instead of bringing the interface down (#574568)
 # explicitly clear the ARP cache and flush all addresses & routes.
-    ip -4 addr flush dev ${1} >/dev/null 2>&1
-    ip -4 route flush dev ${1} >/dev/null 2>&1
-    ip -4 neigh flush dev ${1} >/dev/null 2>&1
+    ip -4 addr flush dev ${1} &>/dev/null
+    ip -4 route flush dev ${1} &>/dev/null
+    ip -4 neigh flush dev ${1} &>/dev/null
 }
 
 dhconfig() {
@@ -493,7 +493,7 @@
 
     if [ ! "${new_ip_address}" = "${alias_ip_address}" ] &&
        [ -n "${alias_ip_address}" ]; then
-        ip -4 addr flush dev ${interface}:0 >/dev/null 2>&1
+        ip -4 addr flush dev ${interface}:0 &>/dev/null
         ip -4 addr add ${alias_ip_address}/${alias_prefix} dev ${interface}:0
         ip -4 route replace ${alias_ip_address}/32 dev ${interface}:0
     fi
@@ -632,7 +632,7 @@
 set_hostname ()
 {
     hostname $1
-    if ! grep search /etc/resolv.conf >/dev/null 2>&1; then
+    if ! grep -q search /etc/resolv.conf; then
         domain=$(echo $1 | sed 's/^[^\.]*\.//')
         if [ -n "$domain" ]; then
                 rsctmp=$(mktemp /tmp/XXXXXX);
@@ -655,8 +655,8 @@
 
 check_link_down ()
 {
-        if ! LC_ALL=C ip link show dev $1 2>/dev/null| grep -q ",UP" ; then
-           ip link set dev $1 up >/dev/null 2>&1
+        if ! LC_ALL=C ip link show dev $1 2>/dev/null | grep -q ",UP" ; then
+           ip link set dev $1 up &>/dev/null
         fi
         timeout=0
         delay=10

Modified: trunk/usr/share/rear/lib/progresssubsystem.nosh
===================================================================
--- trunk/usr/share/rear/lib/progresssubsystem.nosh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/progresssubsystem.nosh	2011-06-14 16:05:47 UTC (rev 610)
@@ -72,12 +72,6 @@
 		echo noop >&8
 	}
 
-	ProgressStepSingleChar() {
-		while read -rn 1 ; do
-			echo noop >&8
-			echo -n "$REPLY" >&2
-		done
-	}
 else
 	# no tty, disable progress animated display altogether
 
@@ -100,11 +94,6 @@
 		: ;
 	}
 
-	ProgressStepSingleChar() {
-		while read -n 1 ; do
-			: ;
-		done
-	}
 fi
 ####################### END Progress Indicator
 

Modified: trunk/usr/share/rear/lib/udev-workflow.sh
===================================================================
--- trunk/usr/share/rear/lib/udev-workflow.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/lib/udev-workflow.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -46,11 +46,11 @@
     fi
 
     # If udev workflow does not exist, bail out loudly
-    type -t WORKFLOW_$WORKFLOW >/dev/null
+    has_binary WORKFLOW_$WORKFLOW
     StopIfError "Udev workflow '$UDEV_WORKFLOW' does not exist"
 
     # Turn the UID led on
-    if type -p hpasmcli &>/dev/null && [[ "$UDEV_UID_LED" =~ ^[yY1] ]]; then
+    if has_binary hpasmcli && [[ "$UDEV_UID_LED" =~ ^[yY1] ]]; then
         hpasmcli -s "set uid on" >&8
     fi
 
@@ -58,7 +58,7 @@
     WORKFLOW_$UDEV_WORKFLOW "${ARGS[@]}"
 
     # Blink the UID led and turn it off
-    if type -p hpasmcli &>/dev/null && [[ "$UDEV_UID_LED" =~ ^[yY1] ]]; then
+    if has_binary hpasmcli && [[ "$UDEV_UID_LED" =~ ^[yY1] ]]; then
         hpasmcli -s "set uid off" >&8; sleep 0.5
         hpasmcli -s "set uid on" >&8; sleep 0.5
         hpasmcli -s "set uid off" >&8; sleep 0.5
@@ -84,7 +84,7 @@
         ### Make sure we have a PC speaker driver loaded
         if grep -q pcpskr /proc/modules || modprobe pcspkr; then
             Log "Beep through PC speaker."
-            if type -p beep &>/dev/null; then
+            if has_binary beep; then
                 # After testing in a noisy datacenter, this seems the best
                 # (although it takes up 4 seconds)
                 beep -f 2000 -l 1000 -d 500 -r 3 >&8

Modified: trunk/usr/share/rear/output/ISO/Linux-ia64/80_create_isofs.sh
===================================================================
--- trunk/usr/share/rear/output/ISO/Linux-ia64/80_create_isofs.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/output/ISO/Linux-ia64/80_create_isofs.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -36,13 +36,13 @@
 pushd $BUILD_DIR/isofs >&8 # so that relative paths will work
 $ISO_MKISOFS_BIN -o "$ISO_DIR/$ISO_PREFIX.iso" -b boot/boot.img -c boot/monboot.catalogi -pad \
 	-no-emul-boot -boot-load-size 4 -boot-info-table \
-	-R -J -volid "$ISO_VOLID" -v .  >&8
+	-R -J -volid "$ISO_VOLID" -v . >&8
 	#-R -J -volid "$ISO_VOLID" -v "$BUILD_DIR/isofs"  >&8
 	#-R -J -volid "$ISO_VOLID" -v "${ISO_FILES[@]}"  >&8
 StopIfError "Could not create ISO image"
 
 ISO_IMAGES=( "${ISO_IMAGES[@]}" "$ISO_DIR/$ISO_PREFIX.iso" )
-popd >/dev/null
+popd >&8
 Print "Wrote ISO Image $ISO_DIR/$ISO_PREFIX.iso ($(du -h "$ISO_DIR/$ISO_PREFIX.iso"| tr -s " \t" " " | cut -d " " -f 1))"
 
 # Add ISO image to result files

Modified: trunk/usr/share/rear/output/ISO/Linux-ppc64/80_create_isofs.sh
===================================================================
--- trunk/usr/share/rear/output/ISO/Linux-ppc64/80_create_isofs.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/output/ISO/Linux-ppc64/80_create_isofs.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -31,10 +31,10 @@
 
 pushd $BUILD_DIR >&8 # so that relative paths will work
 $ISO_MKISOFS_BIN -o "$ISO_DIR/$ISO_PREFIX.iso" -U -chrp-boot \
-	-R -J -volid "$ISO_VOLID" -v -graft-points "${ISO_FILES[@]}"  >&8
+	-R -J -volid "$ISO_VOLID" -v -graft-points "${ISO_FILES[@]}" >&8
 StopIfError "Could not create ISO image"
 ISO_IMAGES=( "${ISO_IMAGES[@]}" "$ISO_DIR/$ISO_PREFIX.iso" )
-popd >/dev/null
+popd >&8
 Print "Wrote ISO Image $ISO_DIR/$ISO_PREFIX.iso ($(du -h "$ISO_DIR/$ISO_PREFIX.iso"| tr -s " \t" " " | cut -d " " -f 1))"
 
 # Add ISO image to result files

Modified: trunk/usr/share/rear/output/PXE/default/81_create_pxelinux_cfg.sh
===================================================================
--- trunk/usr/share/rear/output/PXE/default/81_create_pxelinux_cfg.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/output/PXE/default/81_create_pxelinux_cfg.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -33,7 +33,7 @@
 	append initrd=$PXE_INITRD root=/dev/ram0 vga=normal rw $KERNEL_CMDLINE
 EOF
 
-pushd "$PXE_LOCAL_PATH" >/dev/null
+pushd "$PXE_LOCAL_PATH" >&8
 StopIfError "PXE_CONFIG_PATH [$PXE_CONFIG_PATH] does not exist !"
 if test "$PXE_CREATE_LINKS" -a "$PXE_REMOVE_OLD_LINKS" ; then
 	# remove old links
@@ -68,7 +68,7 @@
 		Error "Invalid PXE_CREATE_LINKS specified, must be MAC or IP or ''"
 		;;
 esac
-popd >/dev/null
+popd >&8
 
 #TODO: umount remote PXE server
 

Modified: trunk/usr/share/rear/output/RSYNC/default/20_make_prefix_dir.sh
===================================================================
--- trunk/usr/share/rear/output/RSYNC/default/20_make_prefix_dir.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/output/RSYNC/default/20_make_prefix_dir.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -10,7 +10,7 @@
 case $RSYNC_PROTO in
 
 	(ssh)
-		$BACKUP_PROG -a $v -r "${BUILD_DIR}/rsync/${RSYNC_PREFIX}" "${RSYNC_USER}@${RSYNC_HOST}:${RSYNC_PATH}" 2>/dev/null >&8
+		$BACKUP_PROG -a $v -r "${BUILD_DIR}/rsync/${RSYNC_PREFIX}" "${RSYNC_USER}@${RSYNC_HOST}:${RSYNC_PATH}" >&8 2>&1
 		StopIfError "Could not create '${RSYNC_PATH}/${RSYNC_PREFIX}' on remote ${RSYNC_HOST}"
 		;;
 

Modified: trunk/usr/share/rear/output/RSYNC/default/90_copy_result_files.sh
===================================================================
--- trunk/usr/share/rear/output/RSYNC/default/90_copy_result_files.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/output/RSYNC/default/90_copy_result_files.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -25,7 +25,7 @@
 	(ssh)
 
 		Log "$BACKUP_PROG -a ${BUILD_DIR}/rsync/${RSYNC_PREFIX}/ ${RSYNC_USER}@${RSYNC_HOST}:${RSYNC_PATH}/${RSYNC_PREFIX}/"
-		$BACKUP_PROG -a "${BUILD_DIR}/rsync/${RSYNC_PREFIX}/" "${RSYNC_USER}@${RSYNC_HOST}:${RSYNC_PATH}/${RSYNC_PREFIX}/" 2>/dev/null
+		$BACKUP_PROG -a "${BUILD_DIR}/rsync/${RSYNC_PREFIX}/" "${RSYNC_USER}@${RSYNC_HOST}:${RSYNC_PATH}/${RSYNC_PREFIX}/" 2>&8
 		;;
 
 	(rsync)

Modified: trunk/usr/share/rear/output/USB/Linux-i386/30_create_extlinux.sh
===================================================================
--- trunk/usr/share/rear/output/USB/Linux-i386/30_create_extlinux.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/output/USB/Linux-i386/30_create_extlinux.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -226,7 +226,7 @@
     # Enable serial console, unless explicitly disabled
     if [[ "$USE_SERIAL_CONSOLE" =~ ^[yY1] ]]; then
         for devnode in $(ls /dev/ttyS[0-9]* | sort); do
-            speed=$(stty -F $devnode 2>/dev/null | awk '/^speed / { print $2 }')
+            speed=$(stty -F $devnode 2>&8 | awk '/^speed / { print $2 }')
             if [ "$speed" ]; then
                 syslinux_write "serial ${devnode##/dev/ttyS} $speed"
             fi
@@ -366,7 +366,7 @@
     fi
 
     # You need the memtest86+ package installed for this to work
-    MEMTEST_BIN=$(ls -d /boot/memtest86+-* 2>/dev/null | tail -1)
+    MEMTEST_BIN=$(ls -d /boot/memtest86+-* 2>&8 | tail -1)
     if [[ "$MEMTEST_BIN" != "." && -r "$MEMTEST_BIN" ]]; then
         cp $v "$MEMTEST_BIN" "$BUILD_DIR/usbfs/$SYSLINUX_PREFIX/memtest" >&8
         syslinux_write <<EOF

Modified: trunk/usr/share/rear/output/default/94_grub_rescue.sh
===================================================================
--- trunk/usr/share/rear/output/default/94_grub_rescue.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/output/default/94_grub_rescue.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -18,7 +18,7 @@
 StopIfError "Failed to find initrd.cgz, updating GRUB failed."
 
 function total_filesize {
-    stat --format '%s' $@ 2>/dev/null | awk 'BEGIN { t=0 } { t+=$1 } END { print t }'
+    stat --format '%s' $@ 2>&8 | awk 'BEGIN { t=0 } { t+=$1 } END { print t }'
 }
 
 available_space=$(df -Pk /boot | awk 'END { print $4 * 1024 }')
@@ -77,7 +77,7 @@
 if [[ $(stat -L -c '%d' $KERNEL_FILE) == $(stat -L -c '%d' /boot/) ]]; then
     # Hardlink file, if possible
     cp -pLlf $v $KERNEL_FILE /boot/rear-kernel >&2
-elif [[ $(stat -L -c '%s %Y' $KERNEL_FILE) == $(stat -L -c '%s %Y' /boot/rear-kernel &>/dev/null) ]]; then
+elif [[ $(stat -L -c '%s %Y' $KERNEL_FILE) == $(stat -L -c '%s %Y' /boot/rear-kernel 2>&8) ]]; then
     # If existing file has exact same size and modification time, assume the same
     :
 else

Modified: trunk/usr/share/rear/pack/Debian/ia64/30_copy_kernel.sh
===================================================================
--- trunk/usr/share/rear/pack/Debian/ia64/30_copy_kernel.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/pack/Debian/ia64/30_copy_kernel.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -32,7 +32,7 @@
 	if [ -r "/boot/efi/efi/debian/vmlinuz-$KERNEL_VERSION" ]; then
 		# guess kernel
 		KERNEL_FILE="/boot/efi/efi/debian/vmlinuz-$KERNEL_VERSION"
-	elif type -p get_kernel_version &>/dev/null; then
+	elif has_binary get_kernel_version; then
 		# if we have get_kernel_version, search for probably matching kernel file
 		for src in $(find /boot -type f) ; do
 			if VER=$(get_kernel_version "$src") && test "$VER" == "$KERNEL_VERSION" ; then

Modified: trunk/usr/share/rear/pack/Fedora/ia64/30_copy_kernel.sh
===================================================================
--- trunk/usr/share/rear/pack/Fedora/ia64/30_copy_kernel.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/pack/Fedora/ia64/30_copy_kernel.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -32,7 +32,7 @@
 	if [ -r "/boot/efi/efi/redhat/vmlinuz-$KERNEL_VERSION" ]; then
 		# guess kernel
 		KERNEL_FILE="/boot/efi/efi/redhat/vmlinuz-$KERNEL_VERSION"
-	elif type -p get_kernel_version &>/dev/null; then
+	elif has_binary get_kernel_version; then
 		# if we have get_kernel_version, search for probably matching kernel file
 		for src in $(find /boot -type f) ; do
 			if VER=$(get_kernel_version "$src") && test "$VER" == "$KERNEL_VERSION" ; then

Modified: trunk/usr/share/rear/pack/GNU/Linux/90_create_initramfs.sh
===================================================================
--- trunk/usr/share/rear/pack/GNU/Linux/90_create_initramfs.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/pack/GNU/Linux/90_create_initramfs.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -20,10 +20,10 @@
 
 LogPrint "Create initramfs"
 
-pushd "$ROOTFS_DIR" >/dev/null
+pushd "$ROOTFS_DIR" >&8
 find . ! -name "*~"  |\
 	tee /dev/fd/8  |\
 	cpio -H newc --create --quiet  |\
 	gzip > "$BUILD_DIR/initrd.cgz"
 StopIfError "Could not create initramfs archive"
-popd >/dev/null
+popd >&8

Modified: trunk/usr/share/rear/pack/Linux-i386/30_copy_kernel.sh
===================================================================
--- trunk/usr/share/rear/pack/Linux-i386/30_copy_kernel.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/pack/Linux-i386/30_copy_kernel.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -25,7 +25,7 @@
 if [ ! -s "$KERNEL_FILE" ]; then
 	if [ -r "/boot/vmlinuz-$KERNEL_VERSION" ]; then
 		KERNEL_FILE="/boot/vmlinuz-$KERNEL_VERSION"
-	elif type -p get_kernel_version &>/dev/null; then
+	elif has_binary get_kernel_version; then
 		for src in /boot/* ; do
 			if VER=$(get_kernel_version "$src") && test "$VER" == "$KERNEL_VERSION" ; then
 				KERNEL_FILE="$src"

Modified: trunk/usr/share/rear/pack/Linux-ppc64/30_copy_kernel.sh
===================================================================
--- trunk/usr/share/rear/pack/Linux-ppc64/30_copy_kernel.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/pack/Linux-ppc64/30_copy_kernel.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -25,7 +25,7 @@
 if [ ! -s "$KERNEL_FILE" ]; then
 	if [ -r "/boot/vmlinuz-$KERNEL_VERSION" ]; then
 		KERNEL_FILE="/boot/vmlinuz-$KERNEL_VERSION"
-	elif type -p get_kernel_version &>/dev/null; then
+	elif has_binary get_kernel_version; then
 		for src in /boot/* ; do
 			if VER=$(get_kernel_version "$src") && test "$VER" == "$KERNEL_VERSION" ; then
 				KERNEL_FILE="$src"

Modified: trunk/usr/share/rear/prep/BACULA/default/03_bextract_tape_device.sh
===================================================================
--- trunk/usr/share/rear/prep/BACULA/default/03_bextract_tape_device.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/prep/BACULA/default/03_bextract_tape_device.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -8,7 +8,7 @@
 fi
 
 if [[ -z "$TAPE_DEVICE" && "$BEXTRACT_DEVICE" ]]; then
-    type -p btape &>/dev/null
+    has_binary btape
     LogIfError "btape binary not found, unable to handle BEXTRACT_DEVICE '$BEXTRACT_DEVICE'"
 
     TAPE_DEVICE="$(echo cap | btape $BEXTRACT_DEVICE | awk '/^Device name/ { print $3 }')"

Modified: trunk/usr/share/rear/prep/BACULA/default/45_check_BACULA_client_configured.sh
===================================================================
--- trunk/usr/share/rear/prep/BACULA/default/45_check_BACULA_client_configured.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/prep/BACULA/default/45_check_BACULA_client_configured.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -4,7 +4,7 @@
 if [ "$BEXTRACT_DEVICE" -o "$BEXTRACT_VOLUME" ]; then
 
    ### Bacula support using bextract
-   type -p bextract &>/dev/null
+   has_binary bextract
    StopIfError "Bacula bextract is missing"
 
    [ -s /etc/bacula/bacula-sd.conf ]
@@ -13,13 +13,13 @@
 else
 
    ### Bacula support using bconsole
-   type -p bacula-fd &>/dev/null
+   has_binary bacula-fd
    StopIfError "Bacula File Daemon is missing"
 
    [ -s /etc/bacula/bacula-fd.conf ]
    StopIfError "Bacula configuration file (bacula-fd.conf) missing"
 
-   type -p bconsole &>/dev/null
+   has_binary bconsole
    StopIfError "Bacula console executable is missing"
 
    [ -s /etc/bacula/bconsole.conf ]

Modified: trunk/usr/share/rear/prep/GNU/Linux/20_include_agetty.sh
===================================================================
--- trunk/usr/share/rear/prep/GNU/Linux/20_include_agetty.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/prep/GNU/Linux/20_include_agetty.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -4,7 +4,7 @@
 # Enable serial console if possible, when not specified
 if [[ -z "$USE_SERIAL_CONSOLE" ]]; then
     for devnode in $(ls /dev/ttyS[0-9]* | sort); do
-        if stty -F $devnode &>/dev/null; then
+        if stty -F $devnode >&8 2>&1; then
             USE_SERIAL_CONSOLE=y
         fi
     done
@@ -15,10 +15,10 @@
     return
 fi
 
-if type -p getty &>/dev/null; then
+if has_binary getty; then
     # Debian, Ubuntu,...
     GETTY=getty
-elif type -p agetty &>/dev/null; then
+elif has_binary agetty; then
     # Fedora, RHEL, SLES,...
     GETTY=agetty
 else

Modified: trunk/usr/share/rear/prep/GNU/Linux/21_include_dhclient.sh
===================================================================
--- trunk/usr/share/rear/prep/GNU/Linux/21_include_dhclient.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/prep/GNU/Linux/21_include_dhclient.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -70,8 +70,8 @@
 if [ -z "$DHCLIENT_BIN" ]; then
 	for x in ${dhclients}
 	do
-		if type -p $x >/dev/null ; then
-			define_dhclient_bins `type -p $x`
+		if has_binary $x; then
+			define_dhclient_bins `get_path $x`
 		fi
 	done
 fi

Modified: trunk/usr/share/rear/prep/GNU/Linux/22_include_lvm_tools.sh
===================================================================
--- trunk/usr/share/rear/prep/GNU/Linux/22_include_lvm_tools.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/prep/GNU/Linux/22_include_lvm_tools.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,6 +1,6 @@
 # Include LVM tools if LVM exists
 
-test -c /dev/mapper/control -a -x "$(type -p lvm)" || return    # silently skip
+test -c /dev/mapper/control -a -x "$(get_path lvm)" || return    # silently skip
 
 Log "Device mapper found enabled. Including LVM tools."
 

Modified: trunk/usr/share/rear/prep/GNU/Linux/23_include_md_tools.sh
===================================================================
--- trunk/usr/share/rear/prep/GNU/Linux/23_include_md_tools.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/prep/GNU/Linux/23_include_md_tools.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,6 +1,6 @@
 # Include software raid tools
 
-grep -q blocks /proc/mdstat &>/dev/null || return
+grep -q blocks /proc/mdstat 2>/dev/null || return
 
 Log "Software RAID detected. Including mdadm tools."
 

Modified: trunk/usr/share/rear/prep/GNU/Linux/28_include_vmware_tools.sh
===================================================================
--- trunk/usr/share/rear/prep/GNU/Linux/28_include_vmware_tools.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/prep/GNU/Linux/28_include_vmware_tools.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -5,7 +5,7 @@
 # is loaded but modinfo cannot find it.
 
 if lsmod | grep -q vmxnet ; then
-	if ! modinfo vmxnet >/dev/null 2>&1 ; then
+	if ! modinfo vmxnet >&8 2>&1; then
 		COPY_AS_IS=( "${COPY_AS_IS[@]}" /usr/lib*/vmware-tools )
 		Log "Including '/usr/lib*/vmware-tools'"
 	fi

Modified: trunk/usr/share/rear/prep/ISO/Linux-ia64/34_define_console_ia64.sh
===================================================================
--- trunk/usr/share/rear/prep/ISO/Linux-ia64/34_define_console_ia64.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/prep/ISO/Linux-ia64/34_define_console_ia64.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -2,7 +2,7 @@
 # therefore, we need to add ttyS0 or ttyS1 to isolinux command line to see something
 # default settings
 CONSOLE="console=tty0 console=ttyS0"
-dmesg | grep console | grep MMIO | grep ttyS1 > /dev/null 2>&1
+dmesg | grep console | grep MMIO | grep ttyS1 >&8 2>&1
 if [ $? -eq 0 ]; then
 	# ttyS1 found
 	CONSOLE="console=tty1 console=ttyS1"

Modified: trunk/usr/share/rear/prep/RSYNC/default/10_check_rsync.sh
===================================================================
--- trunk/usr/share/rear/prep/RSYNC/default/10_check_rsync.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/prep/RSYNC/default/10_check_rsync.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -95,7 +95,7 @@
 
 	(ssh)
 		Log "Test: ssh ${RSYNC_USER}@${RSYNC_HOST} /bin/true"
-		ssh ${RSYNC_USER}@${RSYNC_HOST} /bin/true 2>/dev/null >&8
+		ssh ${RSYNC_USER}@${RSYNC_HOST} /bin/true >&8 2>&1
 		StopIfError "Secure shell connection not setup properly [$RSYNC_USER@$RSYNC_HOST]"
 		;;
 

Modified: trunk/usr/share/rear/prep/RSYNC/default/15_check_rsync_protocol_version.sh
===================================================================
--- trunk/usr/share/rear/prep/RSYNC/default/15_check_rsync_protocol_version.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/prep/RSYNC/default/15_check_rsync_protocol_version.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -4,7 +4,7 @@
 case $RSYNC_PROTO in
 
 	(ssh)
-		ssh ${RSYNC_USER}@${RSYNC_HOST} rsync --version >"$TMP_DIR/rsync_protocol" 2>/dev/null
+		ssh ${RSYNC_USER}@${RSYNC_HOST} rsync --version >"$TMP_DIR/rsync_protocol" >&8 2>&1
 		StopIfError "Secure shell connection not setup properly [$RSYNC_USER@$RSYNC_HOST]"
 		grep -q "protocol version" "$TMP_DIR/rsync_protocol"
 		if [ $? -eq 0 ]; then

Modified: trunk/usr/share/rear/recreate/GNU/Linux/09_disable_lvm2_md.sh
===================================================================
--- trunk/usr/share/rear/recreate/GNU/Linux/09_disable_lvm2_md.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/recreate/GNU/Linux/09_disable_lvm2_md.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -1,6 +1,6 @@
 # skip if no LVM installed
 
-if ! type -p lvm >/dev/null; then
+if ! has_binary lvm; then
     return 0
 fi
 

Modified: trunk/usr/share/rear/recreate/GNU/Linux/31_create_filesystems.sh
===================================================================
--- trunk/usr/share/rear/recreate/GNU/Linux/31_create_filesystems.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/recreate/GNU/Linux/31_create_filesystems.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -87,7 +87,7 @@
 	StopIfError "Invalid filesystem creation command: '${CMD[@]}'"
 	
 	# check that command exists
-	[ -x "$(type -p $CMD)" ]
+	[ -x "$(get_path $CMD)" ]
 	StopIfError "Filesystem creation command '$CMD' not found !"
 
 	# run command
@@ -98,7 +98,7 @@
 	if test "${#CMD2[@]}" -ge 2 ; then
 
 		# check that CMD2 exists
-		[ -x "$( type -p $CMD2)" ]
+		[ -x "$( get_path $CMD2)" ]
 		StopIfError "Filesystem manipulation command '$CMD2' not found !"
 		
 		# run CMD2
@@ -111,7 +111,7 @@
 	if test "${#CMD3[@]}" -ge 2 ; then
 
 		# check that CMD3 exists
-		[ test -x "$( type -p $CMD3)" ]
+		[ test -x "$( get_path $CMD3)" ]
 		StopIfError "Filesystem manipulation command '$CMD3' not found !"
 		
 		# run CMD3

Modified: trunk/usr/share/rear/recreate/Linux-ia64/10_make_partitions.sh
===================================================================
--- trunk/usr/share/rear/recreate/Linux-ia64/10_make_partitions.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/recreate/Linux-ia64/10_make_partitions.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -2,7 +2,7 @@
 # install a blank default MBR on each disk
 
 LogPrint "Creating partitions"
-pushd "$VAR_DIR/recovery" >/dev/null
+pushd "$VAR_DIR/recovery" >&8
 mkdir -p /boot
 for f in $( find dev -type f -name parted ); do
 	device="$(dirname "$f")"
@@ -12,4 +12,4 @@
 	"$f"  >&2
 	StopIfError "Repartioning of ${device} failed"
 done
-popd >/dev/null
+popd >&8

Modified: trunk/usr/share/rear/rescue/GNU/Linux/31_network_devices.sh
===================================================================
--- trunk/usr/share/rear/rescue/GNU/Linux/31_network_devices.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/rescue/GNU/Linux/31_network_devices.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -73,8 +73,8 @@
     elif [[ -z "$driver" && -e "$sysfspath/driver" ]]; then
         # this should work for virtio_net, xennet and vmxnet on older kernels (2.6.18)
         driver=$(basename $(readlink $sysfspath/driver))
-    elif [[ -z "$driver" ]] && type -p ethtool >/dev/null; then
-        driver=$(ethtool -i $dev 2>/dev/null | grep driver: | cut -d: -f2)
+    elif [[ -z "$driver" ]] && has_binary ethtool; then
+        driver=$(ethtool -i $dev 2>&8 | grep driver: | cut -d: -f2)
     fi
     if [[ "$driver" ]]; then
         if ! grep -q $driver /proc/modules; then

Modified: trunk/usr/share/rear/rescue/GNU/Linux/40_use_serial_console.sh
===================================================================
--- trunk/usr/share/rear/rescue/GNU/Linux/40_use_serial_console.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/rescue/GNU/Linux/40_use_serial_console.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -13,7 +13,7 @@
 done
 
 for devnode in $(ls /dev/ttyS[0-9]* | sort); do
-    speed=$(stty -F $devnode 2>/dev/null | awk '/^speed / { print $2 }')
+    speed=$(stty -F $devnode 2>&8 | awk '/^speed / { print $2 }')
     if [ "$speed" ]; then
         echo "s${devnode##/dev/ttyS}:2345:respawn:/sbin/$GETTY $speed ${devnode##/dev/} vt100" >>$ROOTFS_DIR/etc/inittab
         cmdline="${cmdline}console=${devnode##/dev/},$speed "

Modified: trunk/usr/share/rear/rescue/GNU/Linux/95_cfg2html.sh
===================================================================
--- trunk/usr/share/rear/rescue/GNU/Linux/95_cfg2html.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/rescue/GNU/Linux/95_cfg2html.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -12,7 +12,7 @@
 fi
 
 # No cfg2html binary, skip this script
-if ! type -p cfg2html &>/dev/null; then
+if ! has_binary cfg2html; then
     Log "cfg2html has not been found on the system, skipping cfg2html."
     return
 fi

Modified: trunk/usr/share/rear/rescue/default/01_merge_skeletons.sh
===================================================================
--- trunk/usr/share/rear/rescue/default/01_merge_skeletons.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/rescue/default/01_merge_skeletons.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -19,7 +19,7 @@
 #
 
 LogPrint "Creating root FS layout"
-pushd $SHARE_DIR/skel >/dev/null
+pushd $SHARE_DIR/skel >&8
 for dir in default "$ARCH" "$OS" \
 		"$OS_MASTER_VENDOR/default" "$OS_MASTER_VENDOR_ARCH" "$OS_MASTER_VENDOR_VERSION" \
 		"$OS_VENDOR/default" "$OS_VENDOR_ARCH" "$OS_VENDOR_VERSION" \
@@ -37,4 +37,4 @@
 		Debug "No '$dir' or '$dir.tar.gz' found"
 	fi
 done
-popd >/dev/null
+popd >&8

Modified: trunk/usr/share/rear/rescue/default/50_ssh.sh
===================================================================
--- trunk/usr/share/rear/rescue/default/50_ssh.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/rescue/default/50_ssh.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -17,16 +17,16 @@
 #    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
 #
-if type -p sshd >/dev/null ; then
+if has_binary sshd; then
 
 	# assume that we have openssh with configs in /etc/ssh
 
 	COPY_AS_IS=( "${COPY_AS_IS[@]}" /etc/ssh* /root/.s[s]h /root/.shos[t]s )
-	PROGS=( 
-	${PROGS[@]} 
-	ssh sshd scp sftp 
-	$( 
-		read subsys sftp file junk < <( grep sftp /etc/sshd_co[n]fig /etc/ssh/sshd_co[n]fig 2>/dev/null )
+	PROGS=(
+	${PROGS[@]}
+	ssh sshd scp sftp
+	$(
+		read subsys sftp file junk < <( grep sftp /etc/sshd_co[n]fig /etc/ssh/sshd_co[n]fig 2>&8 )
 		echo $file
 	)
 	)

Modified: trunk/usr/share/rear/restore/DP/default/40_restore_with_dp.sh
===================================================================
--- trunk/usr/share/rear/restore/DP/default/40_restore_with_dp.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/restore/DP/default/40_restore_with_dp.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -30,7 +30,7 @@
 	fs=`echo ${object} | awk '{print $1}' | cut -d: -f 2`
 	label=`echo "${object}" | cut -d"'" -f 2`
 	# only retain the latest backup which was completed successfully
-	if grep "^${fs} " ${VAR_DIR}/recovery/mountpoint_device 2>&1 >/dev/null; then
+	if grep -q "^${fs} " ${VAR_DIR}/recovery/mountpoint_device; then
 		LogPrint "Restore filesystem ${object}"
 		SessionID=`cat /tmp/dp_recovery_session`
 		Device=`/opt/omni/bin/omnidb -session ${SessionID} -detail | grep Device | sort -u | tail -n 1 | awk '{print $4}'`
@@ -44,4 +44,4 @@
 				;;
 		esac
 	fi # if grep "^${fs}
-done 
+done

Modified: trunk/usr/share/rear/restore/GALAXY/default/39_create_ramdisk.sh
===================================================================
--- trunk/usr/share/rear/restore/GALAXY/default/39_create_ramdisk.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/restore/GALAXY/default/39_create_ramdisk.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -10,14 +10,14 @@
 # stop logfile
 exec 2>&1
 
-pushd / >/dev/null
+pushd / >&8
 for dir in opt var tmp ; do
         mv "$dir" /ramdisk
         mkdir "$dir"
         mount --bind /ramdisk/"$dir" /"$dir"
 done
 chmod 1777 /tmp
-popd >/dev/null
+popd >&8
 
 
 # start logfile

Modified: trunk/usr/share/rear/restore/GALAXY/default/40_restore_with_galaxy.sh
===================================================================
--- trunk/usr/share/rear/restore/GALAXY/default/40_restore_with_galaxy.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/restore/GALAXY/default/40_restore_with_galaxy.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -63,8 +63,6 @@
 StopIfError "Galaxy aborted"
 
 # create missing directories
-pushd /mnt/local >/dev/null
-for dir in opt/galaxy/Base/Temp opt/galaxy/Updates opt/galaxy/iDataAgent/jobResults ; do
-	mkdir -p "$dir"
-done
-popd >/dev/null
+pushd /mnt/local >&8
+mkdir -p opt/galaxy/Base/Temp opt/galaxy/Updates opt/galaxy/iDataAgent/jobResults
+popd >&8

Modified: trunk/usr/share/rear/restore/GALAXY7/default/40_restore_with_galaxy.sh
===================================================================
--- trunk/usr/share/rear/restore/GALAXY7/default/40_restore_with_galaxy.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/restore/GALAXY7/default/40_restore_with_galaxy.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -71,8 +71,8 @@
 fi
 
 # create missing directories
-pushd /mnt/local >/dev/null
+pushd /mnt/local >&8
 for dir in opt/galaxy/Base/Temp opt/galaxy/Updates opt/galaxy/iDataAgent/jobResults ; do
 	mkdir -p "$dir"
 done
-popd >/dev/null
+popd >&8

Modified: trunk/usr/share/rear/restore/NBU/default/40_restore_with_nbu.sh
===================================================================
--- trunk/usr/share/rear/restore/NBU/default/40_restore_with_nbu.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/restore/NBU/default/40_restore_with_nbu.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -18,7 +18,7 @@
 # output: mm/dd/yyyy (string)
 # Recent_Month_Hour="Nov 12 20:45" is a possible output
 Recent_Month_Hour=""	# make it empty to start with
-Recent_Month_Hour=`LANG=C /usr/openv/netbackup/bin/bplist -l -s \`date -d "-5 days" "+%m/%d/%Y"\` $1 2>/dev/null | head -n 1 | awk '{print $5,$6,$7}'`
+Recent_Month_Hour=`LANG=C /usr/openv/netbackup/bin/bplist -l -s \`date -d "-5 days" "+%m/%d/%Y"\` $1 2>&8 | head -n 1 | awk '{print $5,$6,$7}'`
 [ "${Recent_Month_Hour}" ]
 StopIfError "Netbackup bplist cannot get last backup timestamp of $1"
 

Modified: trunk/usr/share/rear/restore/SUSE_LINUX/91_create_missing_directories.sh
===================================================================
--- trunk/usr/share/rear/restore/SUSE_LINUX/91_create_missing_directories.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/restore/SUSE_LINUX/91_create_missing_directories.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -2,8 +2,6 @@
 # SuSE likes to have stuff under /media
 #
 # create missing directories
-pushd /mnt/local >/dev/null
-for dir in media/cdrom media/floppy ; do
-        mkdir -p "$dir"
-done
-popd >/dev/null
+pushd /mnt/local >&8
+mkdir -p media/cdrom media/floppy
+popd >&8

Modified: trunk/usr/share/rear/restore/default/90_create_missing_directories.sh
===================================================================
--- trunk/usr/share/rear/restore/default/90_create_missing_directories.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/restore/default/90_create_missing_directories.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -3,9 +3,7 @@
 #
 #
 # create missing directories
-pushd /mnt/local >/dev/null
-for dir in mnt proc sys tmp dev/pts dev/shm ; do
-        mkdir -p "$dir"
-done
+pushd /mnt/local >&8
+mkdir -p mnt proc sys tmp dev/pts dev/shm
 chmod 1777 tmp
-popd >/dev/null
+popd >&8

Modified: trunk/usr/share/rear/verify/DP/default/40_verify_dp.sh
===================================================================
--- trunk/usr/share/rear/verify/DP/default/40_verify_dp.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/verify/DP/default/40_verify_dp.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -7,7 +7,7 @@
 StopIfError "DP Cell Server not set in /etc/opt/omni/client/cell_server (TCPSERVERADDRESS) !"
 
 if test "$PING" ; then
-	ping -c 1 "${CELL_SERVER}" >/dev/null 2>&1
+	ping -c 1 "${CELL_SERVER}" >&8 2>&1
 	StopIfError "Sorry, but cannot reach DP Cell Server ${CELL_SERVER}"
 
 	Log "DP Cell Server ${CELL_SERVER} seems to be up and running."

Modified: trunk/usr/share/rear/verify/DP/default/50_select_dp_restore.sh
===================================================================
--- trunk/usr/share/rear/verify/DP/default/50_select_dp_restore.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/verify/DP/default/50_select_dp_restore.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -115,7 +115,7 @@
       DPChooseBackup
       return
     fi
-    if ${OMNICELLINFO} -cell | grep "host=\"${REPLY}\"" 2>&1 >/dev/null; then
+    if ${OMNICELLINFO} -cell | grep -q "host=\"${REPLY}\""; then
       valid=1
     else
       LogPrint "Invalid hostname '${REPLY}'!"
@@ -139,7 +139,7 @@
     i=$(cat /tmp/backup.list | while read s; do echo "$s" | cut -f 2; done | sort -u | wc -l)
     LogPrint ""
     read -r -p "Please choose datalist [1-$i]: " 2>&1
-    if test "${REPLY}" -ge 1 -a "${REPLY}" -le $i 2>&1 >/dev/null; then
+    if test "${REPLY}" -ge 1 -a "${REPLY}" -le $i 2>&8; then
       DL=$(cat /tmp/backup.list | while read s; do echo "$s" | cut -f 2; done | sort -u | head -${REPLY} | tail -1)
       valid=1
     else
@@ -164,7 +164,7 @@
     i=$(cat /tmp/backup.list.part | while read s; do echo "$s" | cut -f 1; done | sort -u -r | wc -l)
     echo
     read -r -p "Please choose session [1-$i]: " 2>&1
-    if test "${REPLY}" -ge 1 -a "${REPLY}" -le $i 2>&1 >/dev/null; then
+    if test "${REPLY}" -ge 1 -a "${REPLY}" -le $i 2>&8; then
       SESS=$(cat /tmp/backup.list.part | while read s; do echo "$s" | cut -f 1; done | sort -u -r | head -${REPLY} | tail -1)
       valid=1
     else

Modified: trunk/usr/share/rear/verify/GALAXY7/default/39_create_ramdisk.sh
===================================================================
--- trunk/usr/share/rear/verify/GALAXY7/default/39_create_ramdisk.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/verify/GALAXY7/default/39_create_ramdisk.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -15,14 +15,14 @@
 	# stop logfile
 	exec 2>&1
 
-	pushd / >/dev/null
+	pushd / >&8
 	for dir in opt var tmp ; do
 		mv "$dir" /ramdisk
 		mkdir "$dir"
 		mount --bind /ramdisk/"$dir" /"$dir"
 	done
 	chmod 1777 /tmp
-	popd >/dev/null
+	popd >&8
 
 
 	# start logfile

Modified: trunk/usr/share/rear/verify/GALAXY7/default/42_login_to_galaxy_and_setup_environment.sh
===================================================================
--- trunk/usr/share/rear/verify/GALAXY7/default/42_login_to_galaxy_and_setup_environment.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/verify/GALAXY7/default/42_login_to_galaxy_and_setup_environment.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -7,7 +7,7 @@
 export PATH=$PATH:/opt/galaxy/Base
 
 # we first try to run a Galaxy command and try to logon if it fails
-qlist backupset -c $HOSTNAME -a Q_LINUX_FS >/dev/null
+qlist backupset -c $HOSTNAME -a Q_LINUX_FS >&8
 let ret=$?
 [ $ret -eq 0 -o $ret -eq 2 ]
 StopIfError "Unknown error in qlist [$ret], check log file"

Modified: trunk/usr/share/rear/verify/GNU/Linux/12_compare_physical_devices.sh
===================================================================
--- trunk/usr/share/rear/verify/GNU/Linux/12_compare_physical_devices.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/verify/GNU/Linux/12_compare_physical_devices.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -58,7 +58,7 @@
 
 	# size is set in 11_describe_device_properties.sh
 	original_size="$(cat $VAR_DIR/recovery$device/size)"
-	size="$(cat ${TMP_DIR}$device/size 2>/dev/null )"
+	size="$(cat ${TMP_DIR}$device/size 2>&8 )"
 	test "$size" || size=0 # set size to sane value if unknown
 
 	

Modified: trunk/usr/share/rear/verify/NBU/default/39_request_point_in_time_restore_parameters.sh
===================================================================
--- trunk/usr/share/rear/verify/NBU/default/39_request_point_in_time_restore_parameters.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/verify/NBU/default/39_request_point_in_time_restore_parameters.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -16,9 +16,9 @@
 else
         BAD_ENDTIME=0
         # validate date
-        NBU_ENDTIME_DATE=$( date -d "$REPLY" +%m/%d/%Y 2>/dev/null ) || BAD_ENDTIME=1
+        NBU_ENDTIME_DATE=$( date -d "$REPLY" +%m/%d/%Y 2>&8 ) || BAD_ENDTIME=1
         # validate time
-        NBU_ENDTIME_TIME=$( date -d "$REPLY" +%T 2>/dev/null ) || BAD_ENDTIME=1
+        NBU_ENDTIME_TIME=$( date -d "$REPLY" +%T 2>&8 ) || BAD_ENDTIME=1
         [ ${BAD_ENDTIME} -ne 1 ]
         BugIfError "Incorrect date and/or time definition used: ${REPLY} Ending NetBackup Restore Attempt..." 
         if test "$NBU_ENDTIME_TIME" = "00:00:00"; then

Modified: trunk/usr/share/rear/verify/NBU/default/40_verify_nbu.sh
===================================================================
--- trunk/usr/share/rear/verify/NBU/default/40_verify_nbu.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/verify/NBU/default/40_verify_nbu.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -7,7 +7,7 @@
 StopIfError "NBU Master Server not set in bp.conf (TCPSERVERADDRESS) !"
 
 if test "$PING" ; then
-	if ping -c 1 "${NBU_SERVER}" >/dev/null 2>&1 ; then
+	if ping -c 1 "${NBU_SERVER}" >&8 2>&1; then
 	   Log "NBU Master Server ${NBU_SERVER} seems to be up and running."
 	else
 	   Error "Sorry, but cannot reach NBU Master Server ${NBU_SERVER}"

Modified: trunk/usr/share/rear/verify/NETFS/default/08_start_required_daemons.sh
===================================================================
--- trunk/usr/share/rear/verify/NETFS/default/08_start_required_daemons.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/verify/NETFS/default/08_start_required_daemons.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -4,14 +4,14 @@
 case "$NETFS_PROTO" in
 	nfs)
 		# newer Linux distros use rpcbind instead of portmap
-		if type -p portmap >/dev/null ; then
+		if has_binary portmap; then
 			# note: portmap can be called multiple times without harm!
 			portmap
 			StopIfError "Could not start port mapper [portmap] !"
-		elif type -p rpcbind >/dev/null ; then
+		elif has_binary rpcbind; then
 			# rpcbind cannot be called multiple times, so start it only if
 			# it is not yet running
-			rpcinfo -p localhost >/dev/null 2>&1 ||	rpcbind
+			rpcinfo -p localhost >&8 2>&1 || rpcbind
 			StopIfError "Could not start port mapper [rpcbind] !"
 		else
 			Error "Could not find any portmapper (tried portmap and rpcbind) !"
@@ -20,7 +20,7 @@
 		# check that portmapper is running
 		# note: on some systems portmap can take a second or two, to be accessible. Hence the loop.
 		max_portmap_checks=5
-		until rpcinfo -p localhost >/dev/null ; do
+		until rpcinfo -p localhost >&8 2>&1; do
 			[ $max_portmap_checks -gt 0 ]
 			StopIfError "portmapper is not running, even though we started it"
 			let max_portmap_checks--
@@ -28,7 +28,7 @@
 		done
 
 		# start stat daemon if found, some Linux distros use a kernel-based stat daemon
-		if type -p rpc.statd >/dev/null ; then
+		if has_binary rpc.statd; then
 			# statd should be started only once, check with rpcinfo if it is already there
 			if rpcinfo -p localhost | grep -q status ; then
 				: noop, status is running

Modified: trunk/usr/share/rear/verify/RSYNC/default/55_check_remote_backup_archive.sh
===================================================================
--- trunk/usr/share/rear/verify/RSYNC/default/55_check_remote_backup_archive.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/verify/RSYNC/default/55_check_remote_backup_archive.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -3,12 +3,12 @@
 case $RSYNC_PROTO in
 
 	(ssh)
-		ssh ${RSYNC_USER}@${RSYNC_HOST} "ls -ld ${RSYNC_PATH}/${RSYNC_PREFIX}/backup" 1>/dev/null  2>&1
+		ssh ${RSYNC_USER}@${RSYNC_HOST} "ls -ld ${RSYNC_PATH}/${RSYNC_PREFIX}/backup" >&8 2>&1
 		StopIfError "Archive not found on [$RSYNC_USER@$RSYNC_HOST:${RSYNC_PATH}/${RSYNC_PREFIX}]"
 		;;
 
 	(rsync)
-		$BACKUP_PROG "${RSYNC_PROTO}://${RSYNC_USER}@${RSYNC_HOST}:${RSYNC_PORT}/${RSYNC_PATH}/${RSYNC_PREFIX}/backup" 1>/dev/null  2>&1
+		$BACKUP_PROG "${RSYNC_PROTO}://${RSYNC_USER}@${RSYNC_HOST}:${RSYNC_PORT}/${RSYNC_PATH}/${RSYNC_PREFIX}/backup" >&8 2>&1
 		StopIfError "Archive not found on [$RSYNC_USER@$RSYNC_HOST:${RSYNC_PATH}/${RSYNC_PREFIX}]"
 		;;
 esac

Modified: trunk/usr/share/rear/verify/TSM/default/39_request_point_in_time_restore_parameters.sh
===================================================================
--- trunk/usr/share/rear/verify/TSM/default/39_request_point_in_time_restore_parameters.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/verify/TSM/default/39_request_point_in_time_restore_parameters.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -11,13 +11,13 @@
 	LogPrint "Skipping Point-In-Time Restore, will restore most recent data."
 else
 	# validate date
-	TSM_RESTORE_PIT_DATE=$( date -d "$REPLY" +%m/%d/%Y 2>/dev/null ) ||\
+	TSM_RESTORE_PIT_DATE=$( date -d "$REPLY" +%m/%d/%Y 2>&8 ) ||\
 		Error "Invalid date for recovery: '$REPLY'"
 	# correct date, add to dsmc options
 	TSM_DSMC_RESTORE_OPTIONS=( "${TSM_DSMC_RESTORE_OPTIONS[@]}" -pitd="$TSM_RESTORE_PIT_DATE" )
 
 	# validate time
-	TSM_RESTORE_PIT_TIME=$( date -d "$REPLY" +%T 2>/dev/null ) ||\
+	TSM_RESTORE_PIT_TIME=$( date -d "$REPLY" +%T 2>&8 ) ||\
 		Error "Invalid time for recovery: '$REPLY'"
 	if test "$TSM_RESTORE_PIT_TIME" = "00:00:00" ; then
 		# invalid / missing time, do nothing

Modified: trunk/usr/share/rear/verify/TSM/default/40_verify_tsm.sh
===================================================================
--- trunk/usr/share/rear/verify/TSM/default/40_verify_tsm.sh	2011-06-14 11:57:46 UTC (rev 609)
+++ trunk/usr/share/rear/verify/TSM/default/40_verify_tsm.sh	2011-06-14 16:05:47 UTC (rev 610)
@@ -18,7 +18,7 @@
 StopIfError "TSM Server not set in dsm.sys (TCPSERVERADDRESS) !"
 
 if test "$PING" ; then
-	ping -c 1 "${TSM_SYS_TCPSERVERADDRESS}" >/dev/null 2>&1
+	ping -c 1 "${TSM_SYS_TCPSERVERADDRESS}" >&8 2>&1
 	StopIfError "Sorry, but cannot reach TSM Server ${TSM_SYS_TCPSERVERADDRESS}"
 
 	Log "TSM Server ${TSM_SYS_TCPSERVERADDRESS} seems to be up and running."


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the rear-users mailing list