(add_emchar_rune): Use `ASCII_TO_CHARC', `CHAR_TO_CHARC' and
[chise/xemacs-chise.git-] / src / file-coding.c
index baad068..59629d8 100644 (file)
@@ -176,67 +176,67 @@ EXFUN (Fcopy_coding_system, 2);
 #ifdef MULE
 struct detection_state;
 static int detect_coding_sjis (struct detection_state *st,
-                              CONST unsigned char *src,
+                              const unsigned char *src,
                               unsigned int n);
 static void decode_coding_sjis (Lstream *decoding,
-                               CONST unsigned char *src,
+                               const unsigned char *src,
                                unsigned_char_dynarr *dst,
                                unsigned int n);
 static void encode_coding_sjis (Lstream *encoding,
-                               CONST unsigned char *src,
+                               const unsigned char *src,
                                unsigned_char_dynarr *dst,
                                unsigned int n);
 static int detect_coding_big5 (struct detection_state *st,
-                              CONST unsigned char *src,
+                              const unsigned char *src,
                               unsigned int n);
 static void decode_coding_big5 (Lstream *decoding,
-                               CONST unsigned char *src,
+                               const unsigned char *src,
                                unsigned_char_dynarr *dst, unsigned int n);
 static void encode_coding_big5 (Lstream *encoding,
-                               CONST unsigned char *src,
+                               const unsigned char *src,
                                unsigned_char_dynarr *dst, unsigned int n);
 static int detect_coding_ucs4 (struct detection_state *st,
-                              CONST unsigned char *src,
+                              const unsigned char *src,
                               unsigned int n);
 static void decode_coding_ucs4 (Lstream *decoding,
-                               CONST unsigned char *src,
+                               const unsigned char *src,
                                unsigned_char_dynarr *dst, unsigned int n);
 static void encode_coding_ucs4 (Lstream *encoding,
-                               CONST unsigned char *src,
+                               const unsigned char *src,
                                unsigned_char_dynarr *dst, unsigned int n);
 static int detect_coding_utf8 (struct detection_state *st,
-                              CONST unsigned char *src,
+                              const unsigned char *src,
                               unsigned int n);
 static void decode_coding_utf8 (Lstream *decoding,
-                               CONST unsigned char *src,
+                               const unsigned char *src,
                                unsigned_char_dynarr *dst, unsigned int n);
 static void encode_coding_utf8 (Lstream *encoding,
-                               CONST unsigned char *src,
+                               const unsigned char *src,
                                unsigned_char_dynarr *dst, unsigned int n);
 static int postprocess_iso2022_mask (int mask);
 static void reset_iso2022 (Lisp_Object coding_system,
                           struct iso2022_decoder *iso);
 static int detect_coding_iso2022 (struct detection_state *st,
-                                 CONST unsigned char *src,
+                                 const unsigned char *src,
                                  unsigned int n);
 static void decode_coding_iso2022 (Lstream *decoding,
-                                  CONST unsigned char *src,
+                                  const unsigned char *src,
                                   unsigned_char_dynarr *dst, unsigned int n);
 static void encode_coding_iso2022 (Lstream *encoding,
-                                  CONST unsigned char *src,
+                                  const unsigned char *src,
                                   unsigned_char_dynarr *dst, unsigned int n);
 #endif /* MULE */
 static void decode_coding_no_conversion (Lstream *decoding,
-                                        CONST unsigned char *src,
+                                        const unsigned char *src,
                                         unsigned_char_dynarr *dst,
                                         unsigned int n);
 static void encode_coding_no_conversion (Lstream *encoding,
-                                        CONST unsigned char *src,
+                                        const unsigned char *src,
                                         unsigned_char_dynarr *dst,
                                         unsigned int n);
-static void mule_decode (Lstream *decoding, CONST unsigned char *src,
+static void mule_decode (Lstream *decoding, const unsigned char *src,
                         unsigned_char_dynarr *dst, unsigned int n);
-static void mule_encode (Lstream *encoding, CONST unsigned char *src,
+static void mule_encode (Lstream *encoding, const unsigned char *src,
                         unsigned_char_dynarr *dst, unsigned int n);
 
 typedef struct codesys_prop codesys_prop;
@@ -1071,6 +1071,7 @@ Return the coding-system symbol for which symbol ALIAS is an alias.
     return aliasee;
   else
     signal_simple_error ("Symbol is not a coding system alias", alias);
+  return Qnil;         /* To keep the compiler happy */
 }
 
 static Lisp_Object
@@ -1626,7 +1627,7 @@ mask_has_at_most_one_bit_p (int mask)
 }
 
 static eol_type_t
-detect_eol_type (struct detection_state *st, CONST unsigned char *src,
+detect_eol_type (struct detection_state *st, const unsigned char *src,
                 unsigned int n)
 {
   int c;
@@ -1671,7 +1672,7 @@ detect_eol_type (struct detection_state *st, CONST unsigned char *src,
 */
 
 static int
-detect_coding_type (struct detection_state *st, CONST Extbyte *src,
+detect_coding_type (struct detection_state *st, const Extbyte *src,
                    unsigned int n, int just_do_eol)
 {
   int c;
@@ -2166,7 +2167,7 @@ struct decoding_stream
 static ssize_t decoding_reader (Lstream *stream,
                                unsigned char *data, size_t size);
 static ssize_t decoding_writer (Lstream *stream,
-                               CONST unsigned char *data, size_t size);
+                               const unsigned char *data, size_t size);
 static int decoding_rewinder   (Lstream *stream);
 static int decoding_seekable_p (Lstream *stream);
 static int decoding_flusher    (Lstream *stream);
@@ -2261,7 +2262,7 @@ decoding_reader (Lstream *stream, unsigned char *data, size_t size)
 }
 
 static ssize_t
-decoding_writer (Lstream *stream, CONST unsigned char *data, size_t size)
+decoding_writer (Lstream *stream, const unsigned char *data, size_t size)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (stream);
   ssize_t retval;
@@ -2296,6 +2297,13 @@ reset_decoding_stream (struct decoding_stream *str)
     }
   str->counter = 0;
 #endif /* MULE */
+  if (CODING_SYSTEM_TYPE (str->codesys) == CODESYS_AUTODETECT
+      || CODING_SYSTEM_EOL_TYPE (str->codesys) == EOL_AUTODETECT)
+    {
+      xzero (str->decst);
+      str->decst.eol_type = EOL_AUTODETECT;
+      str->decst.mask = ~0;
+    }
   str->flags = str->ch = 0;
 }
 
@@ -2371,7 +2379,7 @@ set_decoding_stream_coding_system (Lstream *lstr, Lisp_Object codesys)
 
 static Lisp_Object
 make_decoding_stream_1 (Lstream *stream, Lisp_Object codesys,
-                       CONST char *mode)
+                       const char *mode)
 {
   Lstream *lstr = Lstream_new (lstream_decoding, mode);
   struct decoding_stream *str = DECODING_STREAM_DATA (lstr);
@@ -2414,7 +2422,7 @@ make_decoding_output_stream (Lstream *stream, Lisp_Object codesys)
    be used for both reading and writing. */
 
 static void
-mule_decode (Lstream *decoding, CONST unsigned char *src,
+mule_decode (Lstream *decoding, const unsigned char *src,
             unsigned_char_dynarr *dst, unsigned int n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
@@ -2620,7 +2628,7 @@ struct encoding_stream
 };
 
 static ssize_t encoding_reader (Lstream *stream, unsigned char *data, size_t size);
-static ssize_t encoding_writer (Lstream *stream, CONST unsigned char *data,
+static ssize_t encoding_writer (Lstream *stream, const unsigned char *data,
                                size_t size);
 static int encoding_rewinder   (Lstream *stream);
 static int encoding_seekable_p (Lstream *stream);
@@ -2716,7 +2724,7 @@ encoding_reader (Lstream *stream, unsigned char *data, size_t size)
 }
 
 static ssize_t
-encoding_writer (Lstream *stream, CONST unsigned char *data, size_t size)
+encoding_writer (Lstream *stream, const unsigned char *data, size_t size)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
   ssize_t retval;
@@ -2831,7 +2839,7 @@ set_encoding_stream_coding_system (Lstream *lstr, Lisp_Object codesys)
 
 static Lisp_Object
 make_encoding_stream_1 (Lstream *stream, Lisp_Object codesys,
-                       CONST char *mode)
+                       const char *mode)
 {
   Lstream *lstr = Lstream_new (lstream_encoding, mode);
   struct encoding_stream *str = ENCODING_STREAM_DATA (lstr);
@@ -2862,7 +2870,7 @@ make_encoding_output_stream (Lstream *stream, Lisp_Object codesys)
    Store the encoded data into DST. */
 
 static void
-mule_encode (Lstream *encoding, CONST unsigned char *src,
+mule_encode (Lstream *encoding, const unsigned char *src,
             unsigned_char_dynarr *dst, unsigned int n)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
@@ -3009,7 +3017,7 @@ text.  BUFFER defaults to the current buffer if unspecified.
   ((c) >= 0xA1 && (c) <= 0xDF)
 
 static int
-detect_coding_sjis (struct detection_state *st, CONST unsigned char *src,
+detect_coding_sjis (struct detection_state *st, const unsigned char *src,
                    unsigned int n)
 {
   int c;
@@ -3034,7 +3042,7 @@ detect_coding_sjis (struct detection_state *st, CONST unsigned char *src,
 /* Convert Shift-JIS data to internal format. */
 
 static void
-decode_coding_sjis (Lstream *decoding, CONST unsigned char *src,
+decode_coding_sjis (Lstream *decoding, const unsigned char *src,
                    unsigned_char_dynarr *dst, unsigned int n)
 {
   unsigned char c;
@@ -3102,7 +3110,7 @@ decode_coding_sjis (Lstream *decoding, CONST unsigned char *src,
 /* Convert internally-formatted data to Shift-JIS. */
 
 static void
-encode_coding_sjis (Lstream *encoding, CONST unsigned char *src,
+encode_coding_sjis (Lstream *encoding, const unsigned char *src,
                    unsigned_char_dynarr *dst, unsigned int n)
 {
   unsigned char c;
@@ -3382,7 +3390,7 @@ Return the corresponding character code in SHIFT-JIS as a cons of two bytes.
 } while (0)
 
 static int
-detect_coding_big5 (struct detection_state *st, CONST unsigned char *src,
+detect_coding_big5 (struct detection_state *st, const unsigned char *src,
                    unsigned int n)
 {
   int c;
@@ -3408,7 +3416,7 @@ detect_coding_big5 (struct detection_state *st, CONST unsigned char *src,
 /* Convert Big5 data to internal format. */
 
 static void
-decode_coding_big5 (Lstream *decoding, CONST unsigned char *src,
+decode_coding_big5 (Lstream *decoding, const unsigned char *src,
                    unsigned_char_dynarr *dst, unsigned int n)
 {
   unsigned char c;
@@ -3458,7 +3466,7 @@ decode_coding_big5 (Lstream *decoding, CONST unsigned char *src,
 /* Convert internally-formatted data to Big5. */
 
 static void
-encode_coding_big5 (Lstream *encoding, CONST unsigned char *src,
+encode_coding_big5 (Lstream *encoding, const unsigned char *src,
                    unsigned_char_dynarr *dst, unsigned int n)
 {
 #ifndef UTF2000
@@ -3734,7 +3742,7 @@ encode_ucs4 (Lisp_Object charset,
 #endif
 
 static int
-detect_coding_ucs4 (struct detection_state *st, CONST unsigned char *src,
+detect_coding_ucs4 (struct detection_state *st, const unsigned char *src,
                    unsigned int n)
 {
   while (n--)
@@ -3759,7 +3767,7 @@ detect_coding_ucs4 (struct detection_state *st, CONST unsigned char *src,
 }
 
 static void
-decode_coding_ucs4 (Lstream *decoding, CONST unsigned char *src,
+decode_coding_ucs4 (Lstream *decoding, const unsigned char *src,
                    unsigned_char_dynarr *dst, unsigned int n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
@@ -3795,7 +3803,7 @@ decode_coding_ucs4 (Lstream *decoding, CONST unsigned char *src,
 }
 
 static void
-encode_coding_ucs4 (Lstream *encoding, CONST unsigned char *src,
+encode_coding_ucs4 (Lstream *encoding, const unsigned char *src,
                    unsigned_char_dynarr *dst, unsigned int n)
 {
 #ifndef UTF2000
@@ -3809,7 +3817,7 @@ encode_coding_ucs4 (Lstream *encoding, CONST unsigned char *src,
   /* flags for handling composite chars.  We do a little switcharoo
      on the source while we're outputting the composite char. */
   unsigned int saved_n = 0;
-  CONST unsigned char *saved_src = NULL;
+  const unsigned char *saved_src = NULL;
   int in_composite = 0;
 
  back_to_square_n:
@@ -3936,7 +3944,7 @@ encode_coding_ucs4 (Lstream *encoding, CONST unsigned char *src,
 /************************************************************************/
 
 static int
-detect_coding_utf8 (struct detection_state *st, CONST unsigned char *src,
+detect_coding_utf8 (struct detection_state *st, const unsigned char *src,
                    unsigned int n)
 {
   while (n--)
@@ -3971,7 +3979,7 @@ detect_coding_utf8 (struct detection_state *st, CONST unsigned char *src,
 }
 
 static void
-decode_coding_utf8 (Lstream *decoding, CONST unsigned char *src,
+decode_coding_utf8 (Lstream *decoding, const unsigned char *src,
                    unsigned_char_dynarr *dst, unsigned int n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
@@ -4087,7 +4095,7 @@ encode_utf8 (Lisp_Object charset,
 #endif
 
 static void
-encode_coding_utf8 (Lstream *encoding, CONST unsigned char *src,
+encode_coding_utf8 (Lstream *encoding, const unsigned char *src,
                    unsigned_char_dynarr *dst, unsigned int n)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
@@ -4158,7 +4166,7 @@ encode_coding_utf8 (Lstream *encoding, CONST unsigned char *src,
   /* flags for handling composite chars.  We do a little switcharoo
      on the source while we're outputting the composite char. */
   unsigned int saved_n = 0;
-  CONST unsigned char *saved_src = NULL;
+  const unsigned char *saved_src = NULL;
   int in_composite = 0;
 
  back_to_square_n:
@@ -4865,7 +4873,7 @@ parse_iso2022_esc (Lisp_Object codesys, struct iso2022_decoder *iso,
 }
 
 static int
-detect_coding_iso2022 (struct detection_state *st, CONST unsigned char *src,
+detect_coding_iso2022 (struct detection_state *st, const unsigned char *src,
                       unsigned int n)
 {
   int mask;
@@ -5056,7 +5064,7 @@ ensure_correct_direction (int direction, Lisp_Coding_System *codesys,
 /* Convert ISO2022-format data to internal format. */
 
 static void
-decode_coding_iso2022 (Lstream *decoding, CONST unsigned char *src,
+decode_coding_iso2022 (Lstream *decoding, const unsigned char *src,
                       unsigned_char_dynarr *dst, unsigned int n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
@@ -5316,8 +5324,8 @@ static void
 iso2022_designate (Lisp_Object charset, unsigned char reg,
                   struct encoding_stream *str, unsigned_char_dynarr *dst)
 {
-  static CONST char inter94[] = "()*+";
-  static CONST char inter96[] = ",-./";
+  static const char inter94[] = "()*+";
+  static const char inter96[] = ",-./";
   unsigned int type;
   unsigned char final;
   Lisp_Object old_charset = str->iso2022.charset[reg];
@@ -5401,7 +5409,7 @@ ensure_shift_out (struct encoding_stream *str, unsigned_char_dynarr *dst)
 /* Convert internally-formatted data to ISO2022 format. */
 
 static void
-encode_coding_iso2022 (Lstream *encoding, CONST unsigned char *src,
+encode_coding_iso2022 (Lstream *encoding, const unsigned char *src,
                       unsigned_char_dynarr *dst, unsigned int n)
 {
   unsigned char charmask, c;
@@ -5422,7 +5430,7 @@ encode_coding_iso2022 (Lstream *encoding, CONST unsigned char *src,
   /* flags for handling composite chars.  We do a little switcharoo
      on the source while we're outputting the composite char. */
   unsigned int saved_n = 0;
-  CONST unsigned char *saved_src = NULL;
+  const unsigned char *saved_src = NULL;
   int in_composite = 0;
 #endif /* ENABLE_COMPOSITE_CHARS */
 
@@ -5928,7 +5936,7 @@ encode_coding_iso2022 (Lstream *encoding, CONST unsigned char *src,
    contain all 256 possible byte values and that are not to be
    interpreted as being in any particular decoding. */
 static void
-decode_coding_no_conversion (Lstream *decoding, CONST unsigned char *src,
+decode_coding_no_conversion (Lstream *decoding, const unsigned char *src,
                             unsigned_char_dynarr *dst, unsigned int n)
 {
   unsigned char c;
@@ -5953,7 +5961,7 @@ decode_coding_no_conversion (Lstream *decoding, CONST unsigned char *src,
 }
 
 static void
-encode_coding_no_conversion (Lstream *encoding, CONST unsigned char *src,
+encode_coding_no_conversion (Lstream *encoding, const unsigned char *src,
                             unsigned_char_dynarr *dst, unsigned int n)
 {
   unsigned char c;
@@ -6077,6 +6085,8 @@ encode_coding_no_conversion (Lstream *encoding, CONST unsigned char *src,
 void
 syms_of_file_coding (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (coding_system);
+
   deferror (&Qcoding_system_error, "coding-system-error",
            "Coding-system error", Qio_error);