quoted-printable - quoted-printable のエンコードとデコード

------------------------------------------------------------------------------
void qp_encode_line		(gchar		*out,
				 const guchar	*in);

文字列 in を quoted-printable エンコードして out に出力します。
行末の改行は LF に正規化されます。
out には十分な領域が必要です(少なくとも in の文字列長 * 4)

out: quoted-printable 文字列を出力するバッファ
in: 入力文字列

------------------------------------------------------------------------------
gint qp_decode_line		(gchar		*str);

quoted-printable 文字列 str をデコードします。デコードした文字列は str に
上書きします。

str: quoted-printable 文字列(かつデコード文字列の出力先)
戻り値: 出力した文字列の長さ

------------------------------------------------------------------------------
gint qp_decode_q_encoding	(guchar		*out,
				 const gchar	*in,
				 gint		 inlen);

RFC 2045 / 2047 で定義されている Q エンコーディング文字列をデコードして
out に出力します。 Q エンコードは quoted-printable と似ていますが、
ソフト改行がないのと一部の文字が追加でエンコードされます。
out には in の文字列長 + 1 の領域が必要です。

out: デコードした文字列を出力するバッファ
in: Q エンコード文字列
inlen: in の文字列長(負の値の場合はヌル文字が出現するまで読む)
戻り値: 出力した文字列の長さ

------------------------------------------------------------------------------
gint qp_get_q_encoding_len	(const guchar	*str);

文字列 str を Q エンコードしたときの文字列の長さを算出します。

str: 文字列
戻り値: str を Q エンコードした場合の文字列の長さ

------------------------------------------------------------------------------
void qp_q_encode		(gchar		*out,
				 const guchar	*in);

文字列 in を Q エンコードして out に出力します。
out には少なくとも qp_get_q_encoding_len(in) で得た値 + 1 の領域が必要です。

out: 出力先バッファ
in: 入力文字列
