summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1994-03-16 22:14:23 +0000
committerKarl Heuer <kwzh@gnu.org>1994-03-16 22:14:23 +0000
commit3ace87e34c93a6b000932510d3bd3b81d4056d20 (patch)
treea1fdfc193b83c8fe1886cffbf9e5f46d57bb0b35 /src
parenta7d40caa145f4f2a7dcb791248fe2e1b05b8cb8f (diff)
downloademacs-3ace87e34c93a6b000932510d3bd3b81d4056d20.tar.gz
(Ffile_modes) [MSDOS]: set exec-bit based on file suffix.
Diffstat (limited to 'src')
-rw-r--r--src/fileio.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/fileio.c b/src/fileio.c
index 371d44050e9..4f37b392f8d 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2352,6 +2352,19 @@ DEFUN ("file-modes", Ffile_modes, Sfile_modes, 1, 1, 0,
if (stat (XSTRING (abspath)->data, &st) < 0)
return Qnil;
+#ifdef MSDOS
+ {
+ int len;
+ char *suffix;
+ if (S_ISREG (st.st_mode)
+ && (len = XSTRING (abspath)->size) >= 5
+ && (stricmp ((suffix = XSTRING (abspath)->data + len-4), ".com") == 0
+ || stricmp (suffix, ".exe") == 0
+ || stricmp (suffix, ".bat") == 0))
+ st.st_mode |= S_IEXEC;
+ }
+#endif /* MSDOS */
+
return make_number (st.st_mode & 07777);
}