#!/bin/bash # Copyright (c) 2012 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. # Work around a bug on precise where gvfs trash goes looking in mounts # it shouldn't, resulting in the umount failing when it shouldn't. # See crosbug.com/23443 for the sordid details. suppressed_dir=$(dirname "$0") cleaned_path=$(echo "${PATH}" | sed -r -e "s,(^|:)${suppressed_dir}(:|$),,g") binary=$(PATH="${cleaned_path}" type -P umount) if [ $? -ne 0 ]; then echo "umount: command not found" >&2 exit 127 fi for x in {1..10}; do # umount doesn't give use a distinct exit code for device is busy; thus grep # the output. output=$(LC_ALL=C "${binary}" "$@" 2>&1) ret=$? if [ ${ret} -eq 0 ] || [[ "${output}" != *"device is busy"* ]]; then # Nothing to do in these scenarios; either ran fine, or it failed in a non # busy fashion. break fi sleep 1 done echo -n "${output}" >&2 exit ${ret}