From: Kenichi Handa Date: Mon, 4 Oct 2010 01:47:51 +0000 (+0900) Subject: coding.c (complement_process_encoding_system): Fix previous change. X-Git-Tag: emacs-pretest-23.2.90~88 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5886ec9c0c7a250d987ac6180577b4574ea00f21;p=emacs.git coding.c (complement_process_encoding_system): Fix previous change. --- diff --git a/src/ChangeLog b/src/ChangeLog index eb9ba22b0b2..bb20d5739de 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2010-10-04 Kenichi Handa + + * coding.c (complement_process_encoding_system): Fix previous + change. + 2010-10-02 Kenichi Handa * coding.c (coding_inherit_eol_type): If parent doesn't specify diff --git a/src/coding.c b/src/coding.c index e2819f62e55..4b52c838d67 100644 --- a/src/coding.c +++ b/src/coding.c @@ -6122,51 +6122,55 @@ Lisp_Object complement_process_encoding_system (coding_system) Lisp_Object coding_system; { - Lisp_Object spec, attrs, coding_type, eol_type; + 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); - coding_type = CODING_ATTR_TYPE (attrs); - eol_type = AREF (spec, 2); + if (! EQ (CODING_ATTR_TYPE (attrs), Qundecided)) + coding_base = CODING_ATTR_BASE_NAME (attrs); + if (! VECTORP (AREF (spec, 2))) + eol_base = coding_system; - if (EQ (coding_type, Qundecided)) + if (NILP (coding_base)) { /* We must decide the text-conversion part ar first. */ - if (CONSP (Vdefault_process_coding_system)) + if (CONSP (Vdefault_process_coding_system) + && ! NILP (XCDR (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); - } + 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 (EQ (coding_type, Qundecided)) + if (NILP (coding_base)) { 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_ATTR_TYPE (attrs), Qundecided)) + coding_base = CODING_ATTR_BASE_NAME (attrs); + if (NILP (eol_base) && ! VECTORP (AREF (spec, 2))) + eol_base = coding_system; } - if (EQ (coding_type, Qundecided)) + if (NILP (coding_base)) { - coding_system = Qraw_text; - coding_type = Qraw_text; - eol_type = Qnil; + 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; } } - if (NILP (eol_type) || VECTORP (eol_type)) - { - /* We must decide the eol-conversion part. */ - coding_system = coding_inherit_eol_type (coding_system, coding_system); - } - return coding_system; + /* We must decide the eol-conversion part (if not yet done). */ + return coding_inherit_eol_type (coding_base, eol_base); }