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);
}