Show
Ignore:
Timestamp:
08/18/06 08:35:31 (2 years ago)
Author:
miyoshi
Message:

Sync up with Emacs CVS HEAD.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/coding.c

    r4140 r4148  
    220220 
    221221/* Like ONE_MORE_BYTE, but 8-bit bytes of data at SRC are in multibyte 
    222    form if MULTIBYTEP is nonzero.  */ 
    223  
    224 #define ONE_MORE_BYTE_CHECK_MULTIBYTE(c1, multibytep)           \ 
     222   form if MULTIBYTEP is nonzero.  In addition, if SRC is not less 
     223   than SRC_END, return with RET.  */ 
     224 
     225#define ONE_MORE_BYTE_CHECK_MULTIBYTE(c1, multibytep, ret)      \ 
    225226  do {                                                          \ 
    226227    if (src >= src_end)                                         \ 
    227228      {                                                         \ 
    228229        coding->result = CODING_FINISH_INSUFFICIENT_SRC;        \ 
    229         goto label_end_of_loop;                                       \ 
     230        return ret;                                           \ 
    230231      }                                                         \ 
    231232    c1 = *src++;                                                \ 
     
    633634  while (1) 
    634635    { 
    635       ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
    636  
     636      ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 
     637                                     CODING_CATEGORY_MASK_EMACS_MULE); 
    637638      if (composing) 
    638639        { 
     
    641642          else if (c == 0xA0) 
    642643            { 
    643               ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     644              ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 0); 
    644645              c &= 0x7F; 
    645646            } 
     
    670671        } 
    671672    } 
    672  label_end_of_loop: 
    673   return CODING_CATEGORY_MASK_EMACS_MULE; 
    674673} 
    675674 
     
    14261425 
    14271426  reg[0] = CHARSET_ASCII, reg[1] = reg[2] = reg[3] = -1; 
    1428   while (mask && src < src_end
    1429     { 
    1430       ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     1427  while (mask
     1428    { 
     1429      ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, mask & mask_found); 
    14311430    retry: 
    14321431      switch (c) 
     
    14361435            break; 
    14371436          single_shifting = 0; 
    1438           ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     1437          ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, mask & mask_found); 
    14391438          if (c >= '(' && c <= '/') 
    14401439            { 
    14411440              /* Designation sequence for a charset of dimension 1.  */ 
    1442               ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep); 
     1441              ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep, mask & mask_found); 
    14431442              if (c1 < ' ' || c1 >= 0x80 
    14441443                  || (charset = iso_charset_table[0][c >= ','][c1]) < 0) 
     
    14501449            { 
    14511450              /* Designation sequence for a charset of dimension 2.  */ 
    1452               ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     1451              ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, mask & mask_found); 
    14531452              if (c >= '@' && c <= 'B') 
    14541453                /* Designation for JISX0208.1978, GB2312, or JISX0208.  */ 
     
    14561455              else if (c >= '(' && c <= '/') 
    14571456                { 
    1458                   ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep); 
     1457                  ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep, 
     1458                                                 mask & mask_found); 
    14591459                  if (c1 < ' ' || c1 >= 0x80 
    14601460                      || (charset = iso_charset_table[1][c >= ','][c1]) < 0) 
     
    16311631                  while (src < src_end) 
    16321632                    { 
    1633                       ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     1633                      ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 
     1634                                                     mask & mask_found); 
    16341635                      if (c < 0xA0) 
    16351636                        break; 
     
    16491650        } 
    16501651    } 
    1651  label_end_of_loop: 
    16521652  return (mask & mask_found); 
    16531653} 
     
    29202920  while (1) 
    29212921    { 
    2922       ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     2922      ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, CODING_CATEGORY_MASK_SJIS); 
    29232923      if (c < 0x80) 
    29242924        continue; 
     
    29272927      if (c <= 0x9F || c >= 0xE0) 
    29282928        { 
    2929           ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     2929          ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 0); 
    29302930          if (c < 0x40 || c == 0x7F || c > 0xFC) 
    29312931            return 0; 
    29322932        } 
    29332933    } 
    2934  label_end_of_loop: 
    2935   return CODING_CATEGORY_MASK_SJIS; 
    29362934} 
    29372935 
     
    29522950  while (1) 
    29532951    { 
    2954       ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     2952      ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, CODING_CATEGORY_MASK_BIG5); 
    29552953      if (c < 0x80) 
    29562954        continue; 
    29572955      if (c < 0xA1 || c > 0xFE) 
    29582956        return 0; 
    2959       ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     2957      ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 0); 
    29602958      if (c < 0x40 || (c > 0x7F && c < 0xA1) || c > 0xFE) 
    29612959        return 0; 
    29622960    } 
    2963  label_end_of_loop: 
    2964   return CODING_CATEGORY_MASK_BIG5; 
    29652961} 
    29662962 
     
    29902986  while (1) 
    29912987    { 
    2992       ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     2988      ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, CODING_CATEGORY_MASK_UTF_8); 
    29932989      if (UTF_8_1_OCTET_P (c)) 
    29942990        continue; 
     
    30083004      do 
    30093005        { 
    3010           ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     3006          ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 0); 
    30113007          if (!UTF_8_EXTRA_OCTET_P (c)) 
    30123008            return 0; 
     
    30153011      while (seq_maybe_bytes > 0); 
    30163012    } 
    3017  
    3018  label_end_of_loop: 
    3019   return CODING_CATEGORY_MASK_UTF_8; 
    30203013} 
    30213014 
     
    30463039  struct coding_system *coding = &dummy_coding; 
    30473040 
    3048   ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep); 
    3049   ONE_MORE_BYTE_CHECK_MULTIBYTE (c2, multibytep); 
     3041  ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep, 0); 
     3042  ONE_MORE_BYTE_CHECK_MULTIBYTE (c2, multibytep, 0); 
    30503043 
    30513044  if ((c1 == 0xFF) && (c2 == 0xFE)) 
     
    30533046  else if ((c1 == 0xFE) && (c2 == 0xFF)) 
    30543047    return CODING_CATEGORY_MASK_UTF_16_BE; 
    3055  
    3056  label_end_of_loop: 
    30573048  return 0; 
    30583049} 
     
    33233314  while (1) 
    33243315    { 
    3325       ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 
     3316      ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, CODING_CATEGORY_MASK_CCL); 
    33263317      if (! valid[c]) 
    33273318        return 0; 
    33283319    } 
    3329  label_end_of_loop: 
    3330   return CODING_CATEGORY_MASK_CCL; 
    33313320} 
    33323321