# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description   "Mount /home/chronos/user/MyFiles for ARC."
author        "chromium-os-dev@chromium.org"

start on started arc-myfiles
stop on stopping arc-myfiles

env SOURCE=/home/chronos/user/MyFiles
env DEST=/run/arc/media/MyFiles-write
env UMASK=007
env ANDROID_MEDIA_UID=1023
env ANDROID_MEDIA_GID=1023

expect fork

pre-start exec logger -t "${UPSTART_JOB}" "Pre-start ${UPSTART_JOB}"

# The accesses are intentionally the same as arc-myfiles.conf to restrict access
# to MediaProvider and DocumentsUI. This will be the same behaviour as
# removable-media in pre-72.
# TODO(risan): Remove these mount-passthrough processes or do something to fix
# the mount points.

# systemd-cat is used to redirect stdio from sdcard to journald for logging.
# minijail is used in the mount-passthrough-jailed script.
exec /usr/bin/systemd-cat -t "${UPSTART_JOB}" \
  mount-passthrough-jailed "${SOURCE}" "${DEST}" "${UMASK}" \
    "${ANDROID_MEDIA_UID}" "${ANDROID_MEDIA_GID}" "write"

post-stop exec logger -t "${UPSTART_JOB}" "Post-stop ${UPSTART_JOB}"
