changeset 24706:778b3f056f7f

(code_convert_region): If eol format is inconsistent, change coding->symbol to the sibling coding system of Unix like eol format.
author Kenichi Handa <handa@m17n.org>
date Mon, 10 May 1999 01:04:01 +0000
parents af1bca0bf79b
children fded44022dc6
files src/coding.c
diffstat 1 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/coding.c	Mon May 10 00:56:54 1999 +0000
+++ b/src/coding.c	Mon May 10 01:04:01 1999 +0000
@@ -4473,6 +4473,7 @@
       if (! encodep && result == CODING_FINISH_INCONSISTENT_EOL)
 	{
 	  unsigned char *pend = dst, *p = pend - inserted_byte;
+	  Lisp_Object eol_type;
 
 	  /* Encode LFs back to the original eol format (CR or CRLF).  */
 	  if (coding->eol_type == CODING_EOL_CR)
@@ -4486,7 +4487,7 @@
 	      while (p < pend) if (*p++ == '\n') count++;
 	      if (src - dst < count)
 		{
-		  /* We don't have sufficient room for putting LFs
+		  /* We don't have sufficient room for encoding LFs
 		     back to CRLF.  We must record converted and
 		     not-yet-converted text back to the buffer
 		     content, enlarge the gap, then record them out of
@@ -4519,8 +4520,14 @@
 	  /* Suppress eol-format conversion in the further conversion.  */
 	  coding->eol_type = CODING_EOL_LF;
 
-	  /* Restore the original symbol.  */
-	  coding->symbol = saved_coding_symbol;
+	  /* Set the coding system symbol to that for Unix-like EOL.  */
+	  eol_type = Fget (saved_coding_symbol, Qeol_type);
+	  if (VECTORP (eol_type)
+	      && XVECTOR (eol_type)->size == 3
+	      && SYMBOLP (XVECTOR (eol_type)->contents[CODING_EOL_LF]))
+	    coding->symbol = XVECTOR (eol_type)->contents[CODING_EOL_LF];
+	  else
+	    coding->symbol = saved_coding_symbol;
 	  
 	  continue;
 	}