Mercurial > emacs
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 { |
