Mercurial > emacs
comparison src/fns.c @ 89039:2383f41c7b8a
(base64_decode_1): Insert eight-bit chars correctly.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Wed, 21 Aug 2002 02:28:21 +0000 |
parents | 90ed3c3cd1cc |
children | 7a6ebd6b0c38 |
comparison
equal
deleted
inserted
replaced
89038:f60ed671d6e4 | 89039:2383f41c7b8a |
---|---|
3261 if (!IS_BASE64 (c)) | 3261 if (!IS_BASE64 (c)) |
3262 return -1; | 3262 return -1; |
3263 value |= base64_char_to_value[c] << 12; | 3263 value |= base64_char_to_value[c] << 12; |
3264 | 3264 |
3265 c = (unsigned char) (value >> 16); | 3265 c = (unsigned char) (value >> 16); |
3266 if (multibyte) | 3266 if (multibyte && c >= 128) |
3267 e += CHAR_STRING (c, e); | 3267 e += BYTE8_STRING (c, e); |
3268 else | 3268 else |
3269 *e++ = c; | 3269 *e++ = c; |
3270 nchars++; | 3270 nchars++; |
3271 | 3271 |
3272 /* Process third byte of a quadruplet. */ | 3272 /* Process third byte of a quadruplet. */ |
3285 if (!IS_BASE64 (c)) | 3285 if (!IS_BASE64 (c)) |
3286 return -1; | 3286 return -1; |
3287 value |= base64_char_to_value[c] << 6; | 3287 value |= base64_char_to_value[c] << 6; |
3288 | 3288 |
3289 c = (unsigned char) (0xff & value >> 8); | 3289 c = (unsigned char) (0xff & value >> 8); |
3290 if (multibyte) | 3290 if (multibyte && c >= 128) |
3291 e += CHAR_STRING (c, e); | 3291 e += BYTE8_STRING (c, e); |
3292 else | 3292 else |
3293 *e++ = c; | 3293 *e++ = c; |
3294 nchars++; | 3294 nchars++; |
3295 | 3295 |
3296 /* Process fourth byte of a quadruplet. */ | 3296 /* Process fourth byte of a quadruplet. */ |
3303 if (!IS_BASE64 (c)) | 3303 if (!IS_BASE64 (c)) |
3304 return -1; | 3304 return -1; |
3305 value |= base64_char_to_value[c]; | 3305 value |= base64_char_to_value[c]; |
3306 | 3306 |
3307 c = (unsigned char) (0xff & value); | 3307 c = (unsigned char) (0xff & value); |
3308 if (multibyte) | 3308 if (multibyte && c >= 128) |
3309 e += CHAR_STRING (c, e); | 3309 e += BYTE8_STRING (c, e); |
3310 else | 3310 else |
3311 *e++ = c; | 3311 *e++ = c; |
3312 nchars++; | 3312 nchars++; |
3313 } | 3313 } |
3314 } | 3314 } |