Set executable permissions when creating .exe/.com files.

diff --git a/server/file.c b/server/file.c
index 4c5c5f8..8a96630 100644
--- a/server/file.c
+++ b/server/file.c
@@ -126,6 +126,7 @@
     struct stat st;
     char *name;
     int fd = -1;
+    mode_t mode;
 
     if (!(name = mem_alloc( len + 1 ))) return NULL;
     memcpy( name, nameptr, len );
@@ -151,10 +152,14 @@
     case GENERIC_WRITE: flags |= O_WRONLY; break;
     case GENERIC_READ|GENERIC_WRITE: flags |= O_RDWR; break;
     }
+    mode = (attrs & FILE_ATTRIBUTE_READONLY) ? 0444 : 0666;
+
+    if (len >= 4 &&
+        (!strcasecmp( name + len - 4, ".exe" ) || !strcasecmp( name + len - 4, ".com" )))
+        mode |= 0111;
 
     /* FIXME: should set error to STATUS_OBJECT_NAME_COLLISION if file existed before */
-    if ((fd = open( name, flags | O_NONBLOCK | O_LARGEFILE,
-                    (attrs & FILE_ATTRIBUTE_READONLY) ? 0444 : 0666 )) == -1)
+    if ((fd = open( name, flags | O_NONBLOCK | O_LARGEFILE, mode )) == -1 )
         goto file_error;
     /* refuse to open a directory */
     if (fstat( fd, &st ) == -1) goto file_error;