diff_cmd () {
	empty_file=

	# p4merge does not like /dev/null
	if test "/dev/null" = "$LOCAL"
	then
		LOCAL="$(create_empty_file)"
	fi
	if test "/dev/null" = "$REMOTE"
	then
		REMOTE="$(create_empty_file)"
	fi

	"$merge_tool_path" "$LOCAL" "$REMOTE"

	if test -n "$empty_file"
	then
		rm -f "$empty_file"
	fi
}

merge_cmd () {
	touch "$BACKUP"
	if ! $base_present
	then
		cp -- "$LOCAL" "$BASE"
		create_virtual_base "$BASE" "$REMOTE"
	fi
	"$merge_tool_path" "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
	check_unchanged
}

create_empty_file () {
	empty_file="${TMPDIR:-/tmp}/git-difftool-p4merge-empty-file.$$"
	>"$empty_file"

	printf "%s" "$empty_file"
}
