#!/bin/bash

# This file must be executable to work! chmod 755!

# Look at what a host is exporting to determine what we can mount.
# This is very simple, but it appears to work surprisingly well

key="$1"

# add "nosymlink" here if you want to suppress symlinking local filesystems
# add "nonstrict" to make it OK for some filesystems to not mount
# choose one of the two lines below depending on the NFS version in your
# environment

[ -f /etc/default/autofs ] && . /etc/default/autofs

if [ -z "$MOUNT_NFS_DEFAULT_PROTOCOL" -o "$MOUNT_NFS_DEFAULT_PROTOCOL" == "3" ]; then
	# Showmount comes in a number of names and varieties.  "showmount" is
	# typically an older version which accepts the '--no-headers' flag
	# but ignores it.  "kshowmount" is the newer version installed with knfsd,
	# which both accepts and acts on the '--no-headers' flag.
	#SHOWMOUNT="kshowmount --no-headers -e $key"
	#SHOWMOUNT="showmount -e $key | tail -n +2"

	for P in /bin /sbin /usr/bin /usr/sbin
	do
		for M in showmount kshowmount
		do
			if [ -x $P/$M ]
			then
				SMNT=$P/$M
				break
			fi
		done
	done

	[ -x $SMNT ] || exit 1

	# Newer distributions get this right
	SHOWMOUNT="$SMNT --no-headers -e $key"

	$SHOWMOUNT | LC_ALL=C cut -d' ' -f1 | LC_ALL=C sort -u | \
		awk -v key="$key" -v opts="$opts" -- '
		BEGIN	{ ORS=""; first=1 }
			{ if (first) { print opts; first=0 }; print " \\\n\t" $1, key ":" $1 }
		END	{ if (!first) print "\n"; else exit 1 }
		' | sed 's/#/\\#/g'
	opts="-fstype=nfs,hard,intr,nodev,nosuid"
else
	# NFSv4
	opts="-fstype=nfs4,hard,intr,nodev,nosuid,async"

	echo "$opts $key:/"
fi
