/[emacs]/emacs/src/coding.c
ViewVC logotype

Diff of /emacs/src/coding.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.239.2.4 by handa, Mon Mar 11 11:28:41 2002 UTC revision 1.239.2.5 by handa, Tue May 7 04:50:48 2002 UTC
# Line 928  coding_set_destination (coding) Line 928  coding_set_destination (coding)
928        coding->destination = (BUF_BEG_ADDR (XBUFFER (coding->dst_object))        coding->destination = (BUF_BEG_ADDR (XBUFFER (coding->dst_object))
929                               + coding->dst_pos_byte - 1);                               + coding->dst_pos_byte - 1);
930        if (coding->src_pos < 0)        if (coding->src_pos < 0)
         /* The source and destination is in the same buffer.  */  
931          coding->dst_bytes = (GAP_END_ADDR          coding->dst_bytes = (GAP_END_ADDR
932                               - (coding->src_bytes - coding->consumed)                               - (coding->src_bytes - coding->consumed)
933                               - coding->destination);                               - coding->destination);
# Line 958  coding_alloc_by_making_gap (coding, byte Line 957  coding_alloc_by_making_gap (coding, byte
957       struct coding_system *coding;       struct coding_system *coding;
958       EMACS_INT bytes;       EMACS_INT bytes;
959  {  {
960    Lisp_Object this_buffer;    if (BUFFERP (coding->dst_object)
961          && EQ (coding->src_object, coding->dst_object))
   this_buffer = Fcurrent_buffer ();  
   if (EQ (this_buffer, coding->dst_object))  
962      {      {
963        EMACS_INT add = coding->src_bytes - coding->consumed;        EMACS_INT add = coding->src_bytes - coding->consumed;
964    
# Line 971  coding_alloc_by_making_gap (coding, byte Line 968  coding_alloc_by_making_gap (coding, byte
968      }      }
969    else    else
970      {      {
971          Lisp_Object this_buffer;
972    
973          this_buffer = Fcurrent_buffer ();
974        set_buffer_internal (XBUFFER (coding->dst_object));        set_buffer_internal (XBUFFER (coding->dst_object));
975        make_gap (bytes);        make_gap (bytes);
976        set_buffer_internal (XBUFFER (this_buffer));        set_buffer_internal (XBUFFER (this_buffer));
# Line 4130  decode_coding_raw_text (coding) Line 4130  decode_coding_raw_text (coding)
4130       struct coding_system *coding;       struct coding_system *coding;
4131  {  {
4132    coding->chars_at_source = 1;    coding->chars_at_source = 1;
4133    coding->consumed_char = coding->src_chars;    coding->consumed_char = 0;
4134    coding->consumed = coding->src_bytes;    coding->consumed = 0;
4135    coding->result = CODING_RESULT_SUCCESS;    coding->result = CODING_RESULT_SUCCESS;
4136  }  }
4137    
# Line 5124  produce_chars (coding) Line 5124  produce_chars (coding)
5124                      }                      }
5125                    if (dst == dst_end)                    if (dst == dst_end)
5126                      {                      {
5127                        EMACS_INT offset = src - coding->source;                        coding->consumed = src - coding->source;
5128    
5129                        dst = alloc_destination (coding, src_end - src + 1, dst);                      if (EQ (coding->src_object, coding->dst_object))
5130                        dst_end = coding->destination + coding->dst_bytes;                        dst_end = src;
5131                        coding_set_source (coding);                      if (dst == dst_end)
5132                        src = coding->source + offset;                        {
5133                        src_end = coding->source + coding->src_bytes;                          dst = alloc_destination (coding, src_end - src + 1,
5134                                                     dst);
5135                            dst_end = coding->destination + coding->dst_bytes;
5136                            coding_set_source (coding);
5137                            src = coding->source + coding->consumed;
5138                            src_end = coding->source + coding->src_bytes;
5139                          }
5140                      }                      }
5141                    *dst++ = c;                    *dst++ = c;
5142                    produced_chars++;                    produced_chars++;
# Line 5157  produce_chars (coding) Line 5163  produce_chars (coding)
5163                    }                    }
5164                  if (dst >= dst_end - 1)                  if (dst >= dst_end - 1)
5165                    {                    {
5166                      EMACS_INT offset = src - coding->source;                      coding->consumed = src - coding->source;
5167    
5168                      dst = alloc_destination (coding, src_end - src + 2, dst);                      if (EQ (coding->src_object, coding->dst_object))
5169                      dst_end = coding->destination + coding->dst_bytes;                        dst_end = src;
5170                      coding_set_source (coding);                      if (dst >= dst_end - 1)
5171                      src = coding->source + offset;                        {
5172                      src_end = coding->source + coding->src_bytes;                          dst = alloc_destination (coding, src_end - src + 2,
5173                                                     dst);
5174                            dst_end = coding->destination + coding->dst_bytes;
5175                            coding_set_source (coding);
5176                            src = coding->source + coding->consumed;
5177                            src_end = coding->source + coding->src_bytes;
5178                          }
5179                    }                    }
5180                  EMIT_ONE_BYTE (c);                  EMIT_ONE_BYTE (c);
5181                }                }
# Line 5204  produce_chars (coding) Line 5216  produce_chars (coding)
5216                *dst++ = c;                *dst++ = c;
5217              }              }
5218          }          }
5219          coding->consumed = coding->src_bytes;
5220          coding->consumed_char = coding->src_chars;
5221      }      }
5222    
5223    produced = dst - (coding->destination + coding->produced);    produced = dst - (coding->destination + coding->produced);
# Line 7574  DEFUN ("define-coding-system-alias", Fde Line 7588  DEFUN ("define-coding-system-alias", Fde
7588      }      }
7589    
7590    Fputhash (alias, spec, Vcoding_system_hash_table);    Fputhash (alias, spec, Vcoding_system_hash_table);
7591      Vcoding_system_alist = Fcons (Fcons (alias, Qnil), Vcoding_system_alist);
7592    
7593    return Qnil;    return Qnil;
7594  }  }
# Line 7847  syms_of_coding () Line 7862  syms_of_coding ()
7862    ASET (Vcoding_category_table, coding_category_undecided,    ASET (Vcoding_category_table, coding_category_undecided,
7863          intern ("coding-category-undecided"));          intern ("coding-category-undecided"));
7864    
   {  
     Lisp_Object args[coding_arg_max];  
     Lisp_Object plist[14];  
     int i;  
   
     for (i = 0; i < coding_arg_max; i++)  
       args[i] = Qnil;  
   
     plist[0] = intern (":name");  
     plist[1] = args[coding_arg_name] = Qno_conversion;  
     plist[2] = intern (":mnemonic");  
     plist[3] = args[coding_arg_mnemonic] = make_number ('=');  
     plist[4] = intern (":coding-type");  
     plist[5] = args[coding_arg_coding_type] = Qraw_text;  
     plist[6] = intern (":ascii-compatible-p");  
     plist[7] = args[coding_arg_ascii_compatible_p] = Qt;  
     plist[8] = intern (":default-char");  
     plist[9] = args[coding_arg_default_char] = make_number (0);  
     plist[10] = intern (":docstring");  
     plist[11] = build_string ("Do no conversion.\n\  
 \n\  
 When you visit a file with this coding, the file is read into a\n\  
 unibyte buffer as is, thus each byte of a file is treated as a\n\  
 character.");  
     plist[12] = intern (":eol-type");  
     plist[13] = args[coding_arg_eol_type] = Qunix;  
     args[coding_arg_plist] = Flist (14, plist);  
     Fdefine_coding_system_internal (coding_arg_max, args);  
   }  
   
   setup_coding_system (Qno_conversion, &keyboard_coding);  
   setup_coding_system (Qno_conversion, &terminal_coding);  
   setup_coding_system (Qno_conversion, &safe_terminal_coding);  
   
7865    defsubr (&Scoding_system_p);    defsubr (&Scoding_system_p);
7866    defsubr (&Sread_coding_system);    defsubr (&Sread_coding_system);
7867    defsubr (&Sread_non_nil_coding_system);    defsubr (&Sread_non_nil_coding_system);
# Line 8153  The other way to read escape sequences i Line 8134  The other way to read escape sequences i
8134  to explicitly specify some coding system that doesn't use ISO2022's  to explicitly specify some coding system that doesn't use ISO2022's
8135  escape sequence (e.g `latin-1') on reading by \\[universal-coding-system-argument].  */);  escape sequence (e.g `latin-1') on reading by \\[universal-coding-system-argument].  */);
8136    inhibit_iso_escape_detection = 0;    inhibit_iso_escape_detection = 0;
8137    
8138      {
8139        Lisp_Object args[coding_arg_max];
8140        Lisp_Object plist[14];
8141        int i;
8142    
8143        for (i = 0; i < coding_arg_max; i++)
8144          args[i] = Qnil;
8145    
8146        plist[0] = intern (":name");
8147        plist[1] = args[coding_arg_name] = Qno_conversion;
8148        plist[2] = intern (":mnemonic");
8149        plist[3] = args[coding_arg_mnemonic] = make_number ('=');
8150        plist[4] = intern (":coding-type");
8151        plist[5] = args[coding_arg_coding_type] = Qraw_text;
8152        plist[6] = intern (":ascii-compatible-p");
8153        plist[7] = args[coding_arg_ascii_compatible_p] = Qt;
8154        plist[8] = intern (":default-char");
8155        plist[9] = args[coding_arg_default_char] = make_number (0);
8156        plist[10] = intern (":docstring");
8157        plist[11] = build_string ("Do no conversion.\n\
8158    \n\
8159    When you visit a file with this coding, the file is read into a\n\
8160    unibyte buffer as is, thus each byte of a file is treated as a\n\
8161    character.");
8162        plist[12] = intern (":eol-type");
8163        plist[13] = args[coding_arg_eol_type] = Qunix;
8164        args[coding_arg_plist] = Flist (14, plist);
8165        Fdefine_coding_system_internal (coding_arg_max, args);
8166      }
8167    
8168      setup_coding_system (Qno_conversion, &keyboard_coding);
8169      setup_coding_system (Qno_conversion, &terminal_coding);
8170      setup_coding_system (Qno_conversion, &safe_terminal_coding);
8171  }  }
8172    
8173  char *  char *

Legend:
Removed from v.1.239.2.4  
changed lines
  Added in v.1.239.2.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26