[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
feature/native-comp 0c1fc9d: * Fix native-comp startup for symliked bina
From: |
Andrea Corallo |
Subject: |
feature/native-comp 0c1fc9d: * Fix native-comp startup for symliked binary (bug#44128) |
Date: |
Wed, 14 Apr 2021 09:48:11 -0400 (EDT) |
branch: feature/native-comp
commit 0c1fc9d581ad64efc96c1efccbb4d057796ef807
Author: Andrea Corallo <akrl@sdf.org>
Commit: Andrea Corallo <akrl@sdf.org>
* Fix native-comp startup for symliked binary (bug#44128)
* src/emacs.c (real_filename): New function.
(set_invocation_vars, load_pdump): Make use of.
---
src/emacs.c | 36 +++++++++++++++++++++++++++---------
1 file changed, 27 insertions(+), 9 deletions(-)
diff --git a/src/emacs.c b/src/emacs.c
index e5940ce..f0d75f5 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -440,6 +440,28 @@ terminate_due_to_signal (int sig, int backtrace_limit)
exit (1);
}
+/* Return the real filename following symlinks in case.
+ The caller should deallocate the returned buffer. */
+
+static char *
+real_filename (char *filename)
+{
+ char *real_name;
+#ifdef WINDOWSNT
+ /* w32_my_exename resolves symlinks internally, so no need to
+ call realpath. */
+ real_name = xmalloc (strlen (filename));
+ strcpy (real_name, filename);
+ return real_name;
+#else
+ real_name = realpath (filename, NULL);
+ if (!real_name)
+ fatal ("could not resolve realpath of \"%s\": %s",
+ filename, strerror (errno));
+ return real_name;
+#endif
+}
+
/* Set `invocation-name' `invocation-directory'. */
static void
@@ -475,6 +497,10 @@ set_invocation_vars (char *argv0, char const *original_pwd)
if (! NILP (handler))
raw_name = concat2 (slash_colon, raw_name);
+ char *filename = real_filename (SSDATA (raw_name));
+ raw_name = build_unibyte_string (filename);
+ xfree (filename);
+
Vinvocation_name = Ffile_name_nondirectory (raw_name);
Vinvocation_directory = Ffile_name_directory (raw_name);
@@ -888,17 +914,9 @@ load_pdump (int argc, char **argv, char const
*original_pwd)
the dump in the hardcoded location. */
if (dump_file && *dump_file)
{
-#ifdef WINDOWSNT
- /* w32_my_exename resolves symlinks internally, so no need to
- call realpath. */
-#else
- char *real_exename = realpath (dump_file, NULL);
- if (!real_exename)
- fatal ("could not resolve realpath of \"%s\": %s",
- dump_file, strerror (errno));
+ char *real_exename = real_filename (dump_file);
xfree (dump_file);
dump_file = real_exename;
-#endif
ptrdiff_t exenamelen = strlen (dump_file);
#ifndef WINDOWSNT
bufsize = exenamelen + 1;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- feature/native-comp 0c1fc9d: * Fix native-comp startup for symliked binary (bug#44128),
Andrea Corallo <=