diff -ur nano-2.0.6/src/files.c nano-2.0.6-fixed/src/files.c --- nano-2.0.6/src/files.c 2007-04-21 15:33:56.000000000 -0500 +++ nano-2.0.6-fixed/src/files.c 2007-11-17 14:39:27.000000000 -0600 @@ -382,12 +382,15 @@ * conversion isn't disabled, handle it! */ if (input == '\n') { #ifndef NANO_TINY - /* If there's a '\r' before the '\n', set format to DOS if - * we currently think this is a *nix file, or to both if we - * currently think it's a Mac file. */ - if (!ISSET(NO_CONVERT) && i > 0 && buf[i - 1] == '\r' && - (format == 0 || format == 2)) - format++; + /* If it's a DOS file or a DOS/Mac file ('\r' before '\n' on + * the first line if we think it's a *nix file, or on any + * line otherwise), and file conversion isn't disabled, + * handle it! */ + if (!ISSET(NO_CONVERT) && (num_lines == 0 || format != 0) && + i > 0 && buf[i - 1] == '\r') { + if (format == 0 || format == 2) + format++; + } #endif /* Read in the line properly. */ @@ -401,9 +404,11 @@ buf[0] = '\0'; i = 0; #ifndef NANO_TINY - /* If it's a Mac file ('\r' without '\n'), and file conversion - * isn't disabled, handle it! */ - } else if (!ISSET(NO_CONVERT) && i > 0 && buf[i - 1] == '\r') { + /* If it's a Mac file ('\r' without '\n' on the first line if we + * think it's a *nix file, or on any line otherwise), and file + * conversion isn't disabled, handle it! */ + } else if (!ISSET(NO_CONVERT) && (num_lines == 0 || + format != 0) && i > 0 && buf[i - 1] == '\r') { /* If we currently think the file is a *nix file, set format * to Mac. If we currently think the file is a DOS file, * set format to both DOS and Mac. */