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 }