Mercurial > emacs
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; }