emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/native-comp 4a1bb46 7/7: * Native compiling do not target a dire


From: Andrea Corallo
Subject: feature/native-comp 4a1bb46 7/7: * Native compiling do not target a directory with no write permission
Date: Tue, 6 Oct 2020 12:37:44 -0400 (EDT)

branch: feature/native-comp
commit 4a1bb4626053d5be5d3e869d6b7049dc3269d812
Author: Andrea Corallo <akrl@sdf.org>
Commit: Andrea Corallo <akrl@sdf.org>

    * Native compiling do not target a directory with no write permission
    
        * src/comp.c (Fcomp_el_to_eln_filename): Check for write
        permission while choosing the output directory in
        `comp-eln-load-path'.
---
 src/comp.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/comp.c b/src/comp.c
index 076236e..ba4089e 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -4080,8 +4080,22 @@ If BASE-DIR is nil use the first entry in 
`comp-eln-load-path'.  */)
                      separator);
   Lisp_Object hash = concat3 (path_hash, separator, content_hash);
   filename = concat3 (filename, hash, build_string (NATIVE_ELISP_SUFFIX));
+
+  /* If base_dir was not specified search inside Vcomp_eln_load_path
+     for the first directory where we have write access.  */
   if (NILP (base_dir))
-    base_dir = XCAR (Vcomp_eln_load_path);
+    {
+      Lisp_Object eln_load_paths = Vcomp_eln_load_path;
+      FOR_EACH_TAIL (eln_load_paths)
+       if (!NILP (Ffile_writable_p (XCAR (eln_load_paths))))
+         {
+           base_dir = XCAR (eln_load_paths);
+           break;
+         }
+      /* If we can't find it return Nil.  */
+      if (NILP (base_dir))
+       return Qnil;
+    }
 
   if (!file_name_absolute_p (SSDATA (base_dir)))
     base_dir = Fexpand_file_name (base_dir, Vinvocation_directory);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]