Link Search Menu Expand Document

サマリ:base64のソースコードリーディング9回目

base64を読もう⑨〜base_decode_ctx編〜

      if (inlen == 0 && !flush_ctx)
        break;

inlen0!flush_ctxtrueとなるのは、「コンテキスト(ctx)はNULLではなかったがinlen0であった場合」か「コンテキスト(ctx)がNULLではなく、直前のデコードで成功し、inlen0となった場合」の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バイトごとに改行が入っているのだろうか・・。

以上。 今日は晴れ。春は短いのだから雨は降らなくていいよ。でも田植えのためには必要なのかな?


Back to top

Copyright © 2021- Akira Otaka All rights reserved.