#!/bin/sh

DATASIZE="716800"
OPENFILES="400"

xm_log() {
	echo -n "$@\nDo you want to run Chromium anyway?\n\
(If you don't increase these limits, Chromium might fail to work properly.)" | \
		/usr/X11R7/bin/xmessage -file - -center -buttons yes:0,no:1 -default no
}

if [ $(ulimit -Sd) -lt ${DATASIZE} ]; then
	ulimit -Sd ${DATASIZE} || \
		xm_log "Cannot increase datasize-cur to at least ${DATASIZE}"
		[ $? -eq 0 ] || exit
fi

if [ $(ulimit -Sn) -lt ${OPENFILES} ]; then
	ulimit -Sn ${OPENFILES} || \
		xm_log "Cannot increase openfiles-cur to at least ${OPENFILES}"
		[ $? -eq 0 ] || exit
fi

#
# Temporary workaround for the case when chromium crashes and leaves
# the SingletonLock, which prevents chromium to start up.
#
if [ -h ${HOME}/.config/chromium/SingletonLock ]; then
	_pid=`readlink ${HOME}/.config/chromium/SingletonLock | cut -d '-' -f 2`
	kill -0 ${_pid} 2>/dev/null
	if [ $? -gt 0 ]; then
		rm ${HOME}/.config/chromium/SingletonLock
	fi
fi

#
# Issue #395446
# https://code.google.com/p/chromium/issues/detail?id=395446
#
[ -z ${LANG} ] && _l=en_US.UTF-8 || _l=${LANG}

#
# Workaround to dbus
# https://bugs.chromium.org/p/chromium/issues/detail?id=918234
#
[ -z ${DBUS_SESSION_BUS_ADDRESS} ] && export DBUS_SESSION_BUS_ADDRESS="autolaunch:"

#
# Workaround to pulseaudio
# Chromium is failing to start a new pulseaudio server,
# however can use an already started.
#
BUILT_WITH_PULSE=no
if [ "$BUILT_WITH_PULSE" = "yes" ]; then
	pgrep -x pulseaudio || pulseaudio --start --log-target=syslog --exit-idle-time=-1
fi

# Always use our versions of ffmpeg libs.
# This also makes RPMs find the compatibly-named library symlinks.
if [ -n "$LD_LIBRARY_PATH" ]; then
	LD_LIBRARY_PATH="/usr/pkg/lib/chromium:/usr/pkg/lib/chromium/lib:$LD_LIBRARY_PATH"
else
	LD_LIBRARY_PATH="/usr/pkg/lib/chromium:/usr/pkg/lib/chromium/lib"
fi
export LD_LIBRARY_PATH

[ -d ~/Downloads ] || mkdir -m 0700 ~/Downloads
[ -d ~/.config ] || mkdir -m 0700 ~/.config
[ -f ~/.config/user-dirs.dirs ] || \
	echo 'XDG_DOWNLOAD_DIR="$HOME/Downloads"' > ~/.config/user-dirs.dirs

# WebAssembly can be disabled by setting CHROMIUM_ENABLE_WASM=0 in your environment.
[ "${CHROMIUM_ENABLE_WASM:-1}" != "1" ] && \
	_NOWASM="--disable-features=WebAssembly,AsmJsToWebAssembly,WebAssemblyStreaming --js-flags=--noexpose-wasm"

# User settings
[ -f ~/.config/chromium-flags.conf ] || echo 'CHROMIUM_FLAGS=""' > ~/.config/chromium-flags.conf
. ~/.config/chromium-flags.conf

LANG=${_l} exec "/usr/pkg/lib/chromium/chrome" ${_NOWASM} ${CHROMIUM_FLAGS} "${@}"
