coding_arg_ccl_max
};
+enum define_coding_undecided_arg_index
+ {
+ coding_arg_undecided_inhibit_null_byte_detection = coding_arg_max,
+ coding_arg_undecided_inhibit_iso_escape_detection,
+ coding_arg_undecided_prefer_utf_8,
+ coding_arg_undecided_max
+ };
+
/* Hash table for all coding systems. Keys are coding system symbols
and values are spec vectors of the corresponding coding system. A
spec vector has the form [ ATTRS ALIASES EOL-TYPE ]. ATTRS is a
coding_attr_emacs_mule_full,
+ coding_attr_undecided_inhibit_null_byte_detection,
+ coding_attr_undecided_inhibit_iso_escape_detection,
+ coding_attr_undecided_prefer_utf_8,
+
coding_attr_last_index
};
struct composition_status cmp_status;
};
-struct ccl_spec;
+struct undecided_spec
+{
+ /* Inhibit null byte detection. 1 means always inhibit,
+ -1 means do not inhibit, 0 means rely on user variable. */
+ int inhibit_nbd;
+
+ /* Inhibit ISO escape detection. -1, 0, 1 as above. */
+ int inhibit_ied;
+
+ /* Prefer UTF-8 when the input could be other encodings. */
+ bool prefer_utf_8;
+};
enum utf_bom_type
{
struct utf_16_spec utf_16;
enum utf_bom_type utf_8_bom;
struct emacs_mule_spec emacs_mule;
+ struct undecided_spec undecided;
} spec;
int max_charset_id;
`charbuf', but at `src_object'. */
unsigned chars_at_source : 1;
+ /* Nonzero if the result of conversion is in `destination'
+ buffer rather than in `dst_object'. */
+ unsigned raw_destination : 1;
+
/* Set to 1 if charbuf contains an annotation. */
unsigned annotated : 1;
(code) = (s1 << 8) | s2; \
} while (0)
-/* Encode the file name NAME using the specified coding system
- for file names, if any. */
-#define ENCODE_FILE(name) \
- (! NILP (Vfile_name_coding_system) \
- ? code_convert_string_norecord (name, Vfile_name_coding_system, 1) \
- : (! NILP (Vdefault_file_name_coding_system) \
- ? code_convert_string_norecord (name, Vdefault_file_name_coding_system, 1) \
- : name))
+/* Encode the file name NAME using the specified coding system for
+ file names, if any. If NAME is a unibyte string, return NAME. */
+#define ENCODE_FILE(name) \
+ (! STRING_MULTIBYTE (name) \
+ ? name \
+ : (! NILP (Vfile_name_coding_system) \
+ ? code_convert_string_norecord (name, Vfile_name_coding_system, 1) \
+ : (! NILP (Vdefault_file_name_coding_system) \
+ ? code_convert_string_norecord (name, Vdefault_file_name_coding_system, 1) \
+ : name)))
/* Decode the file name NAME using the specified coding system