changeset 6618:a871b5070d59 v7.4.635

updated for version 7.4.635 Problem: If no NL or CR is found in the first block of a file then the 'fileformat' may be set to "mac". (Issue 77) Solution: Check if a CR was found. (eswald)
author Bram Moolenaar <bram@vim.org>
date Tue, 17 Feb 2015 14:15:19 +0100
parents ee31638d1adf
children 83e0a3073da8
files src/fileio.c src/version.c
diffstat 2 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2101,6 +2101,10 @@ rewind_retry:
 		{
 		    for (p = ptr; p < ptr + size; ++p)
 		    {
+			/* Reset the carriage return counter. */
+			if (try_mac)
+			    try_mac = 1;
+
 			if (*p == NL)
 			{
 			    if (!try_unix
@@ -2110,6 +2114,8 @@ rewind_retry:
 				fileformat = EOL_UNIX;
 			    break;
 			}
+			else if (*p == CAR && try_mac)
+			    try_mac++;
 		    }
 
 		    /* Don't give in to EOL_UNIX if EOL_MAC is more likely */
@@ -2133,6 +2139,10 @@ rewind_retry:
 				fileformat = EOL_MAC;
 			}
 		    }
+		    else if (fileformat == EOL_UNKNOWN && try_mac == 1)
+			/* Looking for CR but found no end-of-line markers at
+			 * all: use the default format. */
+			fileformat = default_fileformat();
 		}
 
 		/* No NL found: may use Mac format */
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    635,
+/**/
     634,
 /**/
     633,