#!/bin/sh

fox="/package/host/localhost/firefox/firefox"

firefox_send ()
{
    if ps --no-headers -Cfirefox-bin -ouser | fgrep -q "$(whoami)"; then
        case "$1" in
        url)  "$fox" -remote "openURL($2, new-tab)" ||
              "$fox" "$2"& ;;
        file) "$fox" -remote "openFILE($2, new-tab)" ||
              "$fox" "$2"& ;;
        win)  "$fox" -remote "xfeDoCommand(openBrowser)" ||
              "$fox"& ;;
        esac
    else
        case "$1" in
        url)  "$fox" "$2"& ;;
        file) "$fox" "$2"& ;;
        win)  "$fox"     & ;;
        esac
    fi
}

canonicalize ()
{
    echo -n "file://"
    (
    echo -n "$(cd "$(dirname "$*")" && pwd)"
    echo "/$(basename "$*")"
    ) | sed 's@/\.\(/\|$\)@/@g;  s@/[^/]*/\.\.\(/\|$\)@/@g;  s@/\{2,\}@/@g'
}

if [ -n "$*" ]; then
    if [ "$1" == -remote ]; then
        if echo "$2" | egrep -q "^openURL\(.*\)$"; then
            url="$(echo "$2" | sed "s/^openURL(\(.*\))$/\1/")"
        else
            url="$2"
        fi
    else
        url="$1"
    fi

    if echo "$url" | egrep -q ":"; then
        firefox_send url "$url"
    else
        firefox_send file "$(canonicalize "$url")"
    fi
else
    firefox_send win
fi

# vim: set ts=4 sts=4 sw=4 tw=80 et:
