#! /bin/sh

###############################################################################
###                                                                         ###
###		     GNU Interactive Tools auto-mount script		    ###
###      Copyright (C) 1994-2000, 2006-2007 Free Software Foundation, Inc.  ###
###                                                                         ###
###                  This file is part of gnuit.                            ###
###                                                                         ###
###  gnuit is free software: you can redistribute it and/or modify it       ###
###  under the terms of the GNU General Public License as published         ###
###  by the Free Software Foundation, either version 3 of the               ###
###  License, or (at your option) any later version.                        ###
###                                                                         ###
###  gnuit is distributed in the hope that it will be useful, but           ###
###  WITHOUT ANY WARRANTY; without even the implied warranty of             ###
###  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          ###
###  GNU General Public License for more details.                           ###
###                                                                         ###
###  You should have received a copy of the GNU General Public              ###
###  License along with this program. If not, see                           ###
###  http://www.gnu.org/licenses/.                                          ###
###									    ###
###                 Written by Tudor Hulubei and Andrei Pitis.              ###
###                                                                         ###
###############################################################################


###
### The ideea of this script is quite general but the script needs
### some changes in order to run on other UNIX systems.
### The major change is in the file system types list.
###
### If you enhance this script, please send me a patch at
### gnuit-dev@gnu.org and I'll include it in the next release.
###

exit_code=0
name=`basename "$0"`
mp="/mnt"

if test "$#" -lt 1; then
    echo "usage: $name devices...      (ex: gitmount fd0)"
    exit 1
fi

while true; do
    device="$1"

    # Remove the `/dev/' prefix, if present.
    if test `echo "$device" | cut -c1-5` = "/dev/"; then
	device=`echo "$device" | cut -c6-`
    fi

    device_alias="$device"

    # Handle aliases: RedHat uses /mnt/floppy as a mount point.
    if test "/dev/$device" = "/dev/floppy"; then
	device="fd0"
    fi

    if test ! -b /dev/"$device"; then
	echo "$0: /dev/$device: no such device" >&2
	exit_code=1
    else
	success=1
	if test ! -d "$mp/$device_alias"; then
	    gitmkdirs "$mp/$device_alias"
	    if test $? -ne 0; then
		success=0
		exit_code=1
	    fi
	fi

	if test $success -eq 1; then
	    success=0
	    for fstype in ext3 ext2 iso9660 reiserfs xfs vfat msdos\
		          ntfs minix ext xiafs jfs hpfs xenix sysv\
		          coherent ufs umsdos affs; do
		mount -t "$fstype" "/dev/$device" "$mp/$device_alias"\
			> /dev/null 2>&1
		if test $? = 0; then
		    success=1
		    break
		fi
	    done

	    # No luck so far.  Try without specifying the fs type.
	    if test $success -eq 1; then
		echo "$device_alias: $fstype"
	    else
		mount "/dev/$device" "$mp/$device_alias" > /dev/null 2>&1
		if test $? = 0; then
		    echo "$device_alias: default"
		else
		    # As a last resort try without specifying the fs
		    # type and mounting directory.  Hopefully this
		    # will allow regular users to mount cdroms,
		    # floppies, and zip drives under Linux.
		    mount /dev/"$device" > /dev/null 2>&1
		    if test $? = 0; then
			echo "$device_alias: default"
		    else
			echo "$device_alias: could not mount file system" >&2
			exit_code=1
		    fi
		fi
	    fi
	fi
    fi

    shift
    if test $# -eq 0; then
	exit $exit_code
    fi
done
