>From c4dad9e5d60153870cca647ece7e266b4eb4e19e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 15 Feb 2019 14:36:30 -0800 Subject: [PATCH] Port tramp-adb to various 'touch' platforms * lisp/net/tramp-adb.el (tramp-adb-handle-set-file-times): Try nanoseconds first, then plain seconds, then touch -t. --- lisp/net/tramp-adb.el | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index 22f2c5f6bf..4fba4e14f3 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el @@ -677,11 +677,22 @@ tramp-adb-handle-set-file-times (tramp-compat-time-equal-p time tramp-time-doesnt-exist) (tramp-compat-time-equal-p time tramp-time-dont-know)) (current-time) - time))) + time)) + (quoted-name (tramp-shell-quote-argument localname))) + ;; Older versions of toybox 'touch' mishandle nanoseconds and/or + ;; trailing "Z", so fall back on plain seconds if nanoseconds+Z + ;; fails. Also, fall back on old POSIX 'touch -t' if 'touch -d' + ;; (introduced in POSIX.1-2008) fails. (tramp-adb-send-command-and-check - v (format "touch -d %s %s" + v (format (concat "touch -d %s %s 2>/dev/null || " + "touch -d %s %s 2>/dev/null || " + "touch -t %s %s") + (format-time-string "%Y-%m-%dT%H:%M:%S.%NZ" time t) + quoted-name (format-time-string "%Y-%m-%dT%H:%M:%S" time t) - (tramp-shell-quote-argument localname)))))) + quoted-name + (format-time-string "%Y%m%d%H%M.%S" time t) + quoted-name))))) (defun tramp-adb-handle-copy-file (filename newname &optional ok-if-already-exists keep-date -- 2.20.1