]> code.delx.au - gnu-emacs/blobdiff - src/w32.c
* callint.c (Fcall_interactively): <, not <=, for optimization.
[gnu-emacs] / src / w32.c
index 495f878d3a830ac0f0e0f68c1e9ef23f7c2e05d8..d715c39fa81d10c061d669030215b0061922ff59 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -138,6 +138,9 @@ typedef struct _PROCESS_MEMORY_COUNTERS_EX {
 #include "dispextern.h"                /* for xstrcasecmp */
 #include "coding.h"            /* for Vlocale_coding_system */
 
+#include "careadlinkat.h"
+#include "allocator.h"
+
 /* For serial_configure and serial_open.  */
 #include "process.h"
 
@@ -1505,6 +1508,7 @@ w32_get_resource (char *key, LPDWORD lpdwtype)
 }
 
 char *get_emacs_configuration (void);
+
 void
 init_environment (char ** argv)
 {
@@ -1591,25 +1595,25 @@ init_environment (char ** argv)
        If not, then we can try to default to the appdata directory under the
        user's profile, which is more likely to be writable.   */
     if (stat ("C:/.emacs", &ignored) < 0)
-    {
-      HRESULT profile_result;
-      /* Dynamically load ShGetFolderPath, as it won't exist on versions
-        of Windows 95 and NT4 that have not been updated to include
-        MSIE 5.  */
-      ShGetFolderPath_fn get_folder_path;
-      get_folder_path = (ShGetFolderPath_fn)
-       GetProcAddress (GetModuleHandle ("shell32.dll"), "SHGetFolderPathA");
-
-      if (get_folder_path != NULL)
-       {
-         profile_result = get_folder_path (NULL, CSIDL_APPDATA, NULL,
-                                           0, default_home);
+      {
+       HRESULT profile_result;
+       /* Dynamically load ShGetFolderPath, as it won't exist on versions
+          of Windows 95 and NT4 that have not been updated to include
+          MSIE 5.  */
+       ShGetFolderPath_fn get_folder_path;
+       get_folder_path = (ShGetFolderPath_fn)
+         GetProcAddress (GetModuleHandle ("shell32.dll"), "SHGetFolderPathA");
+
+       if (get_folder_path != NULL)
+         {
+           profile_result = get_folder_path (NULL, CSIDL_APPDATA, NULL,
+                                             0, default_home);
 
-         /* If we can't get the appdata dir, revert to old behavior.  */
-         if (profile_result == S_OK)
-           env_vars[0].def_value = default_home;
-       }
-    }
+           /* If we can't get the appdata dir, revert to old behavior.  */
+           if (profile_result == S_OK)
+             env_vars[0].def_value = default_home;
+         }
+      }
 
   /* Get default locale info and use it for LANG.  */
   if (GetLocaleInfo (LOCALE_USER_DEFAULT,
@@ -2082,42 +2086,42 @@ GetCachedVolumeInformation (char * root_dir)
   info = lookup_volume_info (root_dir);
 
   if (info == NULL || ! VOLINFO_STILL_VALID (root_dir, info))
-  {
-    char  name[ 256 ];
-    DWORD serialnum;
-    DWORD maxcomp;
-    DWORD flags;
-    char  type[ 256 ];
-
-    /* Info is not cached, or is stale. */
-    if (!GetVolumeInformation (root_dir,
-                              name, sizeof (name),
-                              &serialnum,
-                              &maxcomp,
-                              &flags,
-                              type, sizeof (type)))
-      return NULL;
+    {
+      char  name[ 256 ];
+      DWORD serialnum;
+      DWORD maxcomp;
+      DWORD flags;
+      char  type[ 256 ];
+
+      /* Info is not cached, or is stale. */
+      if (!GetVolumeInformation (root_dir,
+                                name, sizeof (name),
+                                &serialnum,
+                                &maxcomp,
+                                &flags,
+                                type, sizeof (type)))
+       return NULL;
 
-    /* Cache the volume information for future use, overwriting existing
-       entry if present.  */
-    if (info == NULL)
-      {
-       info = (volume_info_data *) xmalloc (sizeof (volume_info_data));
-       add_volume_info (root_dir, info);
-      }
-    else
-      {
-       xfree (info->name);
-       xfree (info->type);
-      }
+      /* Cache the volume information for future use, overwriting existing
+        entry if present.  */
+      if (info == NULL)
+       {
+         info = (volume_info_data *) xmalloc (sizeof (volume_info_data));
+         add_volume_info (root_dir, info);
+       }
+      else
+       {
+         xfree (info->name);
+         xfree (info->type);
+       }
 
-    info->name = xstrdup (name);
-    info->serialnum = serialnum;
-    info->maxcomp = maxcomp;
-    info->flags = flags;
-    info->type = xstrdup (type);
-    info->timestamp = GetTickCount ();
-  }
+      info->name = xstrdup (name);
+      info->serialnum = serialnum;
+      info->maxcomp = maxcomp;
+      info->flags = flags;
+      info->type = xstrdup (type);
+      info->timestamp = GetTickCount ();
+    }
 
   return info;
 }
@@ -3609,8 +3613,8 @@ utime (const char *name, struct utimbuf *times)
 }
 
 \f
-/* Symlink-related functions that always fail.  Used in fileio.c to
-   avoid #ifdef's.  */
+/* Symlink-related functions that always fail.  Used in fileio.c and in
+   sysdep.c to avoid #ifdef's.  */
 int
 symlink (char const *dummy1, char const *dummy2)
 {
@@ -3627,6 +3631,24 @@ readlink (const char *name, char *dummy1, size_t dummy2)
   return -1;
 }
 
+char *
+careadlinkat (int fd, char const *filename,
+              char *buffer, size_t buffer_size,
+              struct allocator const *alloc,
+              ssize_t (*preadlinkat) (int, char const *, char *, size_t))
+{
+  errno = ENOSYS;
+  return NULL;
+}
+
+ssize_t
+careadlinkatcwd (int fd, char const *filename, char *buffer,
+                 size_t buffer_size)
+{
+  (void) fd;
+  return readlink (filename, buffer, buffer_size);
+}
+
 \f
 /* Support for browsing other processes and their attributes.  See
    process.c for the Lisp bindings.  */