diff --git a/Makefile b/Makefile index 8e56896..d48f986 100644 --- a/Makefile +++ b/Makefile @@ -236,10 +236,10 @@ install-common: install-doc install -m 0755 misc/qubes-run-terminal $(DESTDIR)/$(BINDIR) install -D -m 0644 misc/qubes-run-terminal.desktop $(DESTDIR)/$(APPLICATIONSDIR)/qubes-run-terminal.desktop install -m 0755 qubes-rpc/qvm-sync-clock $(DESTDIR)$(BINDIR)/qvm-sync-clock - install qubes-rpc/{qvm-open-in-dvm,qvm-open-in-vm,qvm-copy-to-vm,qvm-run-vm} $(DESTDIR)/usr/bin - install qubes-rpc/qvm-copy $(DESTDIR)/usr/bin - ln -s qvm-copy-to-vm $(DESTDIR)/usr/bin/qvm-move-to-vm + install qubes-rpc/{qvm-open-in-dvm,qvm-open-in-vm,qvm-copy,qvm-run-vm} $(DESTDIR)/usr/bin + ln -s qvm-copy $(DESTDIR)/usr/bin/qvm-move-to-vm ln -s qvm-copy $(DESTDIR)/usr/bin/qvm-move + ln -s qvm-copy $(DESTDIR)/usr/bin/qvm-copy-to-vm install qubes-rpc/qvm-copy-to-vm.gnome $(DESTDIR)$(LIBDIR)/qubes ln -s qvm-copy-to-vm.gnome $(DESTDIR)$(LIBDIR)/qubes/qvm-move-to-vm.gnome ln -s qvm-copy-to-vm.gnome $(DESTDIR)$(LIBDIR)/qubes/qvm-copy-to-vm.kde diff --git a/qubes-rpc/qvm-copy b/qubes-rpc/qvm-copy old mode 100644 new mode 100755 index d77e7a5..1437d95 --- a/qubes-rpc/qvm-copy +++ b/qubes-rpc/qvm-copy @@ -1,7 +1,7 @@ #!/bin/sh set -e # -# The Qubes OS Project, https://www.qubes-os.org +# The Qubes OS Project, https://www.qubes-os.org# # # Copyright (C) 2017 Marek Marczykowski-Górecki # @@ -21,5 +21,68 @@ set -e # # -# shellcheck disable=SC2016 -exec "$0-to-vm" '$default' "$@" +PROGRAM_NAME=${0##*/} + +if [ "$PROGRAM_NAME" = "qvm-move-to-vm" ] || [ "$PROGRAM_NAME" = "qvm-move" ]; then + OPERATION_TYPE="move" +else + OPERATION_TYPE="copy" +fi + +if [ "$PROGRAM_NAME" = "qvm-move-to-vm" ] || [ "$PROGRAM_NAME" = "qvm-copy-to-vm" ]; then + TARGET_TYPE="vm" +else + TARGET_TYPE="default" +fi + + +if { [ $# -lt 2 ] && [ "$TARGET_TYPE" = "vm" ];} || { [ $# -lt 1 ] && [ "$TARGET_TYPE" = "default" ];} ; then + + if [ $TARGET_TYPE = "vm" ]; then + echo "usage: $0 [--without-progress] destination_qube_name FILE [FILE ...]" + else + echo "usage: $0 [--without-progress] FILE [FILE ...]" + fi + + echo + + if [ $OPERATION_TYPE = "move" ] ; then + echo "Move FILE to ~/QubesIncoming/[THIS QUBE'S NAME]/ in the destination qube." + else + echo "Copy FILE to ~/QubesIncoming/[THIS QUBE'S NAME]/ in the destination qube." + fi + + echo + echo "You will be prompted to select the destination qube. If FILE is a directory, it will be copied recursively." + exit 1 +fi + +if [ "$1" = "--without-progress" ] ; then + export PROGRESS_TYPE=none + shift +else + export PROGRESS_TYPE=console +fi + +if [ "$TARGET_TYPE" = "vm" ]; then + VM="$1" + shift +else + VM="@default" +fi + +if [ $PROGRESS_TYPE = console ] ; then + FILECOPY_TOTAL_SIZE=$(du --apparent-size -c -- "$@" 2> /dev/null | tail -1 | cut -f 1) + export FILECOPY_TOTAL_SIZE +fi + +if [ "$TARGET_TYPE" = "vm" ]; then + echo "qvm-copy-to-vm/qvm-move-to-vm tools are deprecated," >&2 + echo "use qvm-copy/qvm-move to avoid typing target qube name twice" >&2 +fi + +/usr/lib/qubes/qrexec-client-vm "$VM" qubes.Filecopy /usr/lib/qubes/qfile-agent "$@" + +if [ "$OPERATION_TYPE" = "move" ] ; then + rm -rf -- "$@" +fi diff --git a/qubes-rpc/qvm-copy-to-vm b/qubes-rpc/qvm-copy-to-vm deleted file mode 100755 index 7208e3e..0000000 --- a/qubes-rpc/qvm-copy-to-vm +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh -set -e -# -# The Qubes OS Project, http://www.qubes-os.org -# -# Copyright (C) 2010 Rafal Wojtczuk -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# - -if [ $# -lt 2 ] ; then - - if [ "${0##*/}" = "qvm-move-to-vm" ] || [ "${0##*/}" = "qvm-copy-to-vm" ]; then - echo "usage: $0 [--without-progress] destination_qube_name FILE [FILE ...]" - else - echo "usage: $0 [--without-progress] FILE [FILE ...]" - fi - - echo - - if [ "${0##*/}" = "qvm-move-to-vm" ] || [ "${0##*/}" = "qvm-move" ] ; then - echo "Move FILE to ~/QubesIncoming/[THIS QUBE'S NAME]/ in the destination qube." - else - echo "Copy FILE to ~/QubesIncoming/[THIS QUBE'S NAME]/ in the destination qube." - fi - - echo - echo "You will be prompted to select the destination qube. If FILE is a directory, it will be copied recursively." - exit 1 -fi - -if [ "$1" = "--without-progress" ] ; then - export PROGRESS_TYPE=none - shift -else - export PROGRESS_TYPE=console -fi - - -VM="$1" -shift - -if [ $PROGRESS_TYPE = console ] ; then - FILECOPY_TOTAL_SIZE=$(du --apparent-size -c -- "$@" 2> /dev/null | tail -1 | cut -f 1) - export FILECOPY_TOTAL_SIZE -fi - -if [ "$VM" != \$default ]; then - echo "qvm-copy-to-vm/qvm-move-to-vm tools are deprecated," >&2 - echo "use qvm-copy/qvm-move to avoid typing target qube name twice" >&2 -fi - -/usr/lib/qubes/qrexec-client-vm "$VM" qubes.Filecopy /usr/lib/qubes/qfile-agent "$@" - -if [ "${0##*/}" = "qvm-move-to-vm" ] || [ "${0##*/}" = "qvm-move" ] ; then - rm -rf -- "$@" -fi