サマリ:base64のソースコードリーディング9回目
base64を読もう⑨〜base_decode_ctx編〜
if (inlen == 0 && !flush_ctx)
break;
inlen
が0
で!flush_ctx
がtrue
となるのは、「コンテキスト(ctx
)はNULLではなかったがinlen
が0
であった場合」か「コンテキスト(ctx
)がNULLではなく、直前のデコードで成功し、inlen
が0
となった場合」の2つ。前者はエラーに等しいので置いておくとして、後者は処理が正常に完了した場合の終了である。
/* Handle the common case of 72-byte wrapped lines.
This also handles any other multiple-of-4-byte wrapping. */
if (inlen && *in == '\n' && ignore_newlines)
{
++in;
--inlen;
continue;
}
『72バイトごとの共通処理。他のいかなる4バイト倍も処理する。』ちょっと何言ってるかわからないのですけど、ソースだけ見れば、入力がまだ存在していて、その入力が改行であり、改行を無視するオプションがtrueになっていれば、改行をスキップして次のループに行くようになっている。なるほど。
###理解したこと ###宿題
72-byte wrapped lines
ってなんだろう・・72バイトごとに改行が入っているのだろうか・・。
以上。 今日は晴れ。春は短いのだから雨は降らなくていいよ。でも田植えのためには必要なのかな?