Mercurial > dovecot > original-hg > dovecot-1.2
view src/lib-mail/quoted-printable.c @ 956:26cafa3dc09c HEAD
minor optimization
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 12 Jan 2003 01:49:45 +0200 |
parents | fd8888f6f037 |
children | cad379bd76d6 |
line wrap: on
line source
/* Copyright (C) 2002 Timo Sirainen */ #include "lib.h" #include "buffer.h" #include "hex-binary.h" #include "quoted-printable.h" void quoted_printable_decode(const unsigned char *src, size_t src_size, size_t *src_pos_r, buffer_t *dest) { char hexbuf[3]; size_t src_pos, next; hexbuf[2] = '\0'; next = 0; for (src_pos = 0; src_pos < src_size; src_pos++) { if (src[src_pos] != '_' && src[src_pos] != '=') continue; buffer_append(dest, src + next, src_pos - next); if (src[src_pos] == '_') { buffer_append_c(dest, ' '); next = src_pos+1; } else { /* =<hex> */ if (src_pos+2 >= src_size) break; hexbuf[0] = src[src_pos+1]; hexbuf[1] = src[src_pos+2]; if (hex_to_binary(hexbuf, dest) == 1) { src_pos += 2; next = src_pos+1; } else { /* non-hex data */ next = src_pos; } } } buffer_append(dest, src + next, src_size - next); if (src_pos_r != NULL) *src_pos_r = src_pos; }