changeset 110847:c234b2db847c

coding.c (complement_process_encoding_system): Fix previous change.
author Kenichi Handa <handa@m17n.org>
date Fri, 08 Oct 2010 09:43:16 +0900
parents 9f6864a5076e
children 79354404ff53
files src/ChangeLog src/coding.c
diffstat 2 files changed, 31 insertions(+), 47 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Mon Oct 04 10:53:48 2010 +0900
+++ b/src/ChangeLog	Fri Oct 08 09:43:16 2010 +0900
@@ -1,3 +1,8 @@
+2010-10-08  Kenichi Handa  <handa@m17n.org>
+
+	* coding.c (complement_process_encoding_system): Fix previous
+	change.
+
 2010-10-04  Kenichi Handa  <handa@m17n.org>
 
 	* coding.c (complement_process_encoding_system): Fix previous
--- a/src/coding.c	Mon Oct 04 10:53:48 2010 +0900
+++ b/src/coding.c	Fri Oct 08 09:43:16 2010 +0900
@@ -6124,53 +6124,32 @@
 {
   Lisp_Object coding_base = Qnil, eol_base = Qnil;
   Lisp_Object spec, attrs;
-
-  if (NILP (coding_system))
-    coding_system = Qundecided;
-  spec = CODING_SYSTEM_SPEC (coding_system);
-  attrs = AREF (spec, 0);
-  if (! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
-    coding_base = CODING_ATTR_BASE_NAME (attrs);
-  if (! VECTORP (AREF (spec, 2)))
-    eol_base = coding_system;
-
-  if (NILP (coding_base))
-    {
-      /* We must decide the text-conversion part ar first.  */
-      if (CONSP (Vdefault_process_coding_system)
-	  && ! NILP (XCDR (Vdefault_process_coding_system)))
-	{
-	  coding_system = XCDR (Vdefault_process_coding_system);
-	  spec = CODING_SYSTEM_SPEC (coding_system);
-	  attrs = AREF (spec, 0);
-	  if (! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
-	    coding_base = CODING_ATTR_BASE_NAME (attrs);
-	  if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
-	    eol_base = coding_system;
-	}
-      if (NILP (coding_base))
-	{
-	  coding_system = preferred_coding_system ();
-	  spec = CODING_SYSTEM_SPEC (coding_system);
-	  attrs = AREF (spec, 0);
-	  if (! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
-	    coding_base = CODING_ATTR_BASE_NAME (attrs);
-	  if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
-	    eol_base = coding_system;
-	}
-      if (NILP (coding_base))
-	{
-	  spec = CODING_SYSTEM_SPEC (Qraw_text);
-	  attrs = AREF (spec, 0);
-	  if (! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
-	    coding_base = CODING_ATTR_BASE_NAME (attrs);
-	  if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
-	    eol_base = coding_system;
-	}
-    }
-
-  /* We must decide the eol-conversion part (if not yet done).  */
-  return coding_inherit_eol_type (coding_base, eol_base);
+  int i;
+
+  for (i = 0; i < 3; i++)
+    {
+      if (i == 1)
+	coding_system = CDR_SAFE (Vdefault_process_coding_system);
+      else if (i == 2)
+	coding_system = preferred_coding_system ();
+      spec = CODING_SYSTEM_SPEC (coding_system);
+      if (NILP (spec))
+	continue;
+      attrs = AREF (spec, 0);
+      if (NILP (coding_base) && ! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
+	coding_base = CODING_ATTR_BASE_NAME (attrs);
+      if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
+	eol_base = coding_system;
+      if (! NILP (coding_base) && ! NILP (eol_base))
+	break;
+    }
+
+  if (i > 0)
+    /* The original CODING_SYSTEM didn't specify text-conversion or
+       eol-conversion.  Be sure that we return a fully complemented
+       coding system.  */
+    coding_system = coding_inherit_eol_type (coding_base, eol_base);
+  return coding_system;
 }