emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/emacs-23 r100085: coding.c (complement_proc


From: Kenichi Handa
Subject: [Emacs-diffs] /srv/bzr/emacs/emacs-23 r100085: coding.c (complement_process_encoding_system): Fix previous change.
Date: Fri, 08 Oct 2010 11:23:52 +0900
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 100085 [merge]
committer: Kenichi Handa <address@hidden>
branch nick: emacs-23
timestamp: Fri 2010-10-08 11:23:52 +0900
message:
  coding.c (complement_process_encoding_system): Fix previous change.
modified:
  src/ChangeLog
  src/coding.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2010-10-03 09:23:07 +0000
+++ b/src/ChangeLog     2010-10-08 00:43:16 +0000
@@ -1,3 +1,13 @@
+2010-10-08  Kenichi Handa  <address@hidden>
+
+       * coding.c (complement_process_encoding_system): Fix previous
+       change.
+
+2010-10-04  Kenichi Handa  <address@hidden>
+
+       * coding.c (complement_process_encoding_system): Fix previous
+       change.
+
 2010-10-03  Michael Albinus  <address@hidden>
 
        * dbusbind.c (syms_of_dbusbind): Move putenv call ...

=== modified file 'src/coding.c'
--- a/src/coding.c      2010-10-02 01:44:50 +0000
+++ b/src/coding.c      2010-10-08 00:43:16 +0000
@@ -6122,50 +6122,33 @@
 complement_process_encoding_system (coding_system)
      Lisp_Object coding_system;
 {
-  Lisp_Object spec, attrs, coding_type, eol_type;
-
-  if (NILP (coding_system))
-    coding_system = Qundecided;
-  spec = CODING_SYSTEM_SPEC (coding_system);
-  attrs = AREF (spec, 0);
-  coding_type = CODING_ATTR_TYPE (attrs);
-  eol_type = AREF (spec, 2);
-
-  if (EQ (coding_type, Qundecided))
-    {
-      /* We must decide the text-conversion part ar first.  */
-      if (CONSP (Vdefault_process_coding_system))
-       {
-         coding_system = XCDR (Vdefault_process_coding_system);
-         if (! NILP (coding_system))
-           {
-             spec = CODING_SYSTEM_SPEC (coding_system);
-             attrs = AREF (spec, 0);
-             coding_type = CODING_ATTR_TYPE (attrs);
-             eol_type = AREF (spec, 2);
-           }
-       }
-      if (EQ (coding_type, Qundecided))
-       {
-         coding_system = preferred_coding_system ();
-         spec = CODING_SYSTEM_SPEC (coding_system);
-         attrs = AREF (spec, 0);
-         coding_type = CODING_ATTR_TYPE (attrs);
-         eol_type = AREF (spec, 2);
-       }
-      if (EQ (coding_type, Qundecided))
-       {
-         coding_system = Qraw_text;
-         coding_type = Qraw_text;
-         eol_type = Qnil;
-       }
-    }
-  if (NILP (eol_type) || VECTORP (eol_type))
-    {
-      /* We must decide the eol-conversion part.  */      
-      coding_system = coding_inherit_eol_type (coding_system, coding_system);
-    }
-
+  Lisp_Object coding_base = Qnil, eol_base = Qnil;
+  Lisp_Object spec, attrs;
+  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;
 }
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]