#!/usr/bin/env bash

check_and_process_opts() {
    local TEMP

    ARGS="
ARGP_DELETE=quiet
ARGP_VERSION=$VERSION
ARGP_PROG=$PROG
##############################################################   
#OPTIONS:
#name=default sname arg       type range   description
##############################################################   

##############################################################   
ARGP_ARGS=[--] $ARGUMENTS
ARGP_SHORT=$SHORT_DESC
ARGP_USAGE=$USAGE"

    exec 4>&1
    eval $(echo "$ARGS" | argp.sh "$@" 3>&1 1>&4 || echo exit $? )
    exec 4>&-
    NEW_ARGS=( "$@" )
    return 0
}

PROG=`basename $0`
VERSION="1.2"
VERBOSE=""
ARGUMENTS="filename(s)"
USAGE='Print a unix version of a M$ filename. Note that \\server is converted to /mnt/SERVER.'
USAGE+=" Can't help with capitalisation though, sorry!"

for i in "$@"; do
    case "$i" in
        -*)
            NEW_ARGS=( )
            check_and_process_opts "$@"
            set -- "${NEW_ARGS[@]}"
            break
            ;;
    esac
done

[ "$VERBOSE" ] && set -x

for NAME in "$@"; do

    # replace \ with /
    NAME=${NAME//\\//}
    # replace C: with /mnt/C/ - but can't do anything with C:'s cwd
    LOCAL_REGEX='^(.):(.*)$'
    if [[ "$NAME" =~ $LOCAL_REGEX ]]; then
        DRIVE=/mnt/smb/$(echo ${BASH_REMATCH[1]}| tr 'A-Z' 'a-z')
        NAME=${BASH_REMATCH[2]}
    else
        DRIVE=
    fi
    
    # replace //SERVERNAME with /net/SERVERNAME
    REMOTE_REGEX='^//([^/][^/]*)/(.*)$'
    [[ "$NAME" =~ $REMOTE_REGEX ]] && NAME="/net/${BASH_REMATCH[1]}/${BASH_REMATCH[2]}"
    
    [[ "$NAME" = /* ]] || NAME="`pwd`/$NAME"
    NAME="$DRIVE$NAME"
    
    # remove any soft links: why?
    NAME=`real-fqn "$NAME"`
    echo "$NAME"
done
