comparison src/coding.c @ 23279:ca159e828a68

(ccl_coding_driver): If ccl_driver is interrupted by a user or the CCL program executed an invalid command, return CODING_FINISH_INTERRUPT. (code_convert_region): Pay attention to the converters return value CODING_FINISH_NORMAL and CODING_FINISH_INTERRUPT.
author Kenichi Handa <handa@m17n.org>
date Fri, 18 Sep 1998 13:10:40 +0000
parents 2f8585bcea90
children 86a8b8566369
comparison
equal deleted inserted replaced
23278:bad51ca51df3 23279:ca159e828a68
3623 result = CODING_FINISH_INSUFFICIENT_SRC; 3623 result = CODING_FINISH_INSUFFICIENT_SRC;
3624 break; 3624 break;
3625 case CCL_STAT_SUSPEND_BY_DST: 3625 case CCL_STAT_SUSPEND_BY_DST:
3626 result = CODING_FINISH_INSUFFICIENT_DST; 3626 result = CODING_FINISH_INSUFFICIENT_DST;
3627 break; 3627 break;
3628 case CCL_STAT_QUIT:
3629 case CCL_STAT_INVALID_CMD:
3630 result = CODING_FINISH_INTERRUPT;
3631 break;
3628 default: 3632 default:
3629 result = CODING_FINISH_NORMAL; 3633 result = CODING_FINISH_NORMAL;
3630 break; 3634 break;
3631 } 3635 }
3632 return result; 3636 return result;
4251 inserted_byte += coding->produced; 4255 inserted_byte += coding->produced;
4252 len_byte -= coding->consumed; 4256 len_byte -= coding->consumed;
4253 src += coding->consumed; 4257 src += coding->consumed;
4254 dst += inserted_byte; 4258 dst += inserted_byte;
4255 4259
4260 if (result == CODING_FINISH_NORMAL)
4261 {
4262 src += len_byte;
4263 break;
4264 }
4256 if (! encodep && result == CODING_FINISH_INCONSISTENT_EOL) 4265 if (! encodep && result == CODING_FINISH_INCONSISTENT_EOL)
4257 { 4266 {
4258 unsigned char *pend = dst, *p = pend - inserted_byte; 4267 unsigned char *pend = dst, *p = pend - inserted_byte;
4259 4268
4260 /* Encode LFs back to the original eol format (CR or CRLF). */ 4269 /* Encode LFs back to the original eol format (CR or CRLF). */
4315 make them valid buffer contents, and finish conversion. */ 4324 make them valid buffer contents, and finish conversion. */
4316 inserted += len_byte; 4325 inserted += len_byte;
4317 inserted_byte += len_byte; 4326 inserted_byte += len_byte;
4318 while (len_byte--) 4327 while (len_byte--)
4319 *dst++ = *src++; 4328 *dst++ = *src++;
4329 fake_multibyte = 1;
4330 break;
4331 }
4332 if (result == CODING_FINISH_INTERRUPT)
4333 {
4334 /* The conversion procedure was interrupted by a user. */
4335 fake_multibyte = 1;
4336 break;
4337 }
4338 /* Now RESULT == CODING_FINISH_INSUFFICIENT_DST */
4339 if (coding->consumed < 1)
4340 {
4341 /* It's quite strange to require more memory without
4342 consuming any bytes. Perhaps CCL program bug. */
4320 fake_multibyte = 1; 4343 fake_multibyte = 1;
4321 break; 4344 break;
4322 } 4345 }
4323 if (first) 4346 if (first)
4324 { 4347 {