aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Albinus2017-08-12 12:30:39 +0200
committerMichael Albinus2017-08-12 12:30:39 +0200
commitec5cfaa4568327b5b0b299be2664f7fdae123292 (patch)
tree7d79d2a4fd23960763365e192b5934e872f0534c /src
parente94b0d4d54e39b2601b7f3f724d6c6d8a556e89f (diff)
downloademacs-ec5cfaa4568327b5b0b299be2664f7fdae123292.tar.gz
emacs-ec5cfaa4568327b5b0b299be2664f7fdae123292.zip
Implement EXCL of write-region for Tramp
* lisp/net/ange-ftp.el (ange-ftp-write-region): * lisp/net/tramp-adb.el (tramp-adb-handle-write-region) * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-write-region): * lisp/net/tramp-sh.el (tramp-sh-handle-write-region) * lisp/net/tramp-smb.el (tramp-smb-handle-write-region): Implement MUSTBENEW. * lisp/net/tramp-gvfs.el (tramp-gvfs-do-copy-or-rename-file) * lisp/net/tramp-sh.el (tramp-sh-handle-make-symbolic-link) (tramp-sh-handle-add-name-to-file) (tramp-do-copy-or-rename-file) * lisp/net/tramp-smb.el (tramp-smb-handle-make-symbolic-link): Adapt error message for `file-already-exists'. * src/lisp.h: * src/eval.c (call8): New function. * src/fileio.c (write_region): Pass also lockname and mustbenew to the file name handler. * test/lisp/net/tramp-tests.el (tramp-test10-write-region): Add tests for MUSTBENEW.
Diffstat (limited to 'src')
-rw-r--r--src/eval.c11
-rw-r--r--src/fileio.c4
-rw-r--r--src/lisp.h1
3 files changed, 14 insertions, 2 deletions
diff --git a/src/eval.c b/src/eval.c
index fe2708b1bbc..e3e7d8e26b2 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2660,6 +2660,17 @@ call7 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3,
2660 return CALLN (Ffuncall, fn, arg1, arg2, arg3, arg4, arg5, arg6, arg7); 2660 return CALLN (Ffuncall, fn, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2661} 2661}
2662 2662
2663/* Call function fn with 8 arguments arg1, arg2, arg3, arg4, arg5,
2664 arg6, arg7, arg8. */
2665/* ARGSUSED */
2666Lisp_Object
2667call8 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3,
2668 Lisp_Object arg4, Lisp_Object arg5, Lisp_Object arg6, Lisp_Object arg7,
2669 Lisp_Object arg8)
2670{
2671 return CALLN (Ffuncall, fn, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
2672}
2673
2663DEFUN ("functionp", Ffunctionp, Sfunctionp, 1, 1, 0, 2674DEFUN ("functionp", Ffunctionp, Sfunctionp, 1, 1, 0,
2664 doc: /* Non-nil if OBJECT is a function. */) 2675 doc: /* Non-nil if OBJECT is a function. */)
2665 (Lisp_Object object) 2676 (Lisp_Object object)
diff --git a/src/fileio.c b/src/fileio.c
index 8506a198fe3..31fd84512e1 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4852,8 +4852,8 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename,
4852 if (!NILP (handler)) 4852 if (!NILP (handler))
4853 { 4853 {
4854 Lisp_Object val; 4854 Lisp_Object val;
4855 val = call6 (handler, Qwrite_region, start, end, 4855 val = call8 (handler, Qwrite_region, start, end,
4856 filename, append, visit); 4856 filename, append, visit, lockname, mustbenew);
4857 4857
4858 if (visiting) 4858 if (visiting)
4859 { 4859 {
diff --git a/src/lisp.h b/src/lisp.h
index 4de6fc85ec1..25be5c0ceea 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3846,6 +3846,7 @@ extern Lisp_Object call4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Li
3846extern Lisp_Object call5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); 3846extern Lisp_Object call5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
3847extern Lisp_Object call6 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); 3847extern Lisp_Object call6 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
3848extern Lisp_Object call7 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); 3848extern Lisp_Object call7 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
3849extern Lisp_Object call8 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
3849extern Lisp_Object internal_catch (Lisp_Object, Lisp_Object (*) (Lisp_Object), Lisp_Object); 3850extern Lisp_Object internal_catch (Lisp_Object, Lisp_Object (*) (Lisp_Object), Lisp_Object);
3850extern Lisp_Object internal_lisp_condition_case (Lisp_Object, Lisp_Object, Lisp_Object); 3851extern Lisp_Object internal_lisp_condition_case (Lisp_Object, Lisp_Object, Lisp_Object);
3851extern Lisp_Object internal_condition_case (Lisp_Object (*) (void), Lisp_Object, Lisp_Object (*) (Lisp_Object)); 3852extern Lisp_Object internal_condition_case (Lisp_Object (*) (void), Lisp_Object, Lisp_Object (*) (Lisp_Object));