diff --git a/src/os_unix.c b/src/os_unix.c
index 7d2d0cc..4535aef 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -2354,6 +2354,72 @@
 #endif
 }
 
+#if defined(USE_FNAME_CASE) || defined(PROTO)
+/*
+ * Set the case of the file name, if it already exists.  This will cause the
+ * file name to remain exactly the same.
+ * Only required for file systems where case is ingored and preserved.
+ */
+/*ARGSUSED*/
+    void
+fname_case(name, len)
+    char_u	*name;
+    int		len;	    /* buffer size, only used when name gets longer */
+{
+    struct stat st;
+    char_u	*slash, *tail;
+    DIR		*dirp;
+    struct dirent *dp;
+
+    if (lstat((char *)name, &st) >= 0)
+    {
+	/* Open the directory where the file is located. */
+	slash = vim_strrchr(name, '/');
+	if (slash == NULL)
+	{
+	    dirp = opendir(".");
+	    tail = name;
+	}
+	else
+	{
+	    *slash = NUL;
+	    dirp = opendir((char *)name);
+	    *slash = '/';
+	    tail = slash + 1;
+	}
+
+	if (dirp != NULL)
+	{
+	    while ((dp = readdir(dirp)) != NULL)
+	    {
+		/* Only accept names that differ in case and are the same byte
+		 * length. TODO: accept different length name. */
+		if (STRICMP(tail, dp->d_name) == 0
+			&& STRLEN(tail) == STRLEN(dp->d_name))
+		{
+		    char_u	newname[MAXPATHL + 1];
+		    struct stat st2;
+
+		    /* Verify the inode is equal. */
+		    vim_strncpy(newname, name, MAXPATHL);
+		    vim_strncpy(newname + (tail - name), (char_u *)dp->d_name,
+						    MAXPATHL - (tail - name));
+		    if (lstat((char *)newname, &st2) >= 0
+			    && st.st_ino == st2.st_ino
+			    && st.st_dev == st2.st_dev)
+		    {
+			STRCPY(tail, dp->d_name);
+			break;
+		    }
+		}
+	    }
+
+	    closedir(dirp);
+	}
+    }
+}
+#endif
+
 /*
  * Get file permissions for 'name'.
  * Returns -1 when it doesn't exist.
diff --git a/src/os_unix.h b/src/os_unix.h
index b78b23e..c1458d6 100644
--- a/src/os_unix.h
+++ b/src/os_unix.h
@@ -40,6 +40,9 @@
 #if defined(__CYGWIN__) || defined(__CYGWIN32__)
 # define WIN32UNIX	/* Compiling for Win32 using Unix files. */
 # define BINARY_FILE_IO
+
+# define CASE_INSENSITIVE_FILENAME
+# define USE_FNAME_CASE	/* Fix filename case differences. */
 #endif
 
 /* On AIX 4.2 there is a conflicting prototype for ioctl() in stropts.h and
