"conv_line_ctrl": Converting line control sequences in C
hacker emblem Happy Hacking!


English Here (machine translation)

conv_line_ctrl: 文字列中の改行制御コードを一律変換変換するユーティリティ

この C 言語ユーティリティは、文字列中のすべての改行制御コードを引数で指定されたもの (Unix では "\n"、DOS では "\r\n"、MacOS では "\r") に変換します。


count_lines: 改行制御コードに基づいて文字列の行数を計数するユーティリティ

この C 言語ユーティリティは、指定された改行制御シーケンスに基づいて、文字列の行数を計数します。


API を使用するためのヘッダは conv_line_ctrl.h で、API の実装は conv_line_ctrl.c です。API の説明は、この文書で後述しています。テスト・プログラム unit_test.c そして make ファイル Makefile も記述しました。


API の説明

  1. 文字列中の改行制御コードを一律変換する: conv_line_ctrl()
    char *conv_line_ctrl(Conv_line_ctrl_style_t style
    , char *dst
    , size_t dst_sz
    , char *src
    )

    style には改行制御コードの変換内容を指定します。すべての改行制御シーケンスを Unix 形式 "\n" に変換する場合は Conv_line_ctrl_to_Unix を、DOS 形式 "\r\n" だけを Unix 形式にするには Conv_line_ctrl_Dos_to_Unix を、MacOS 形式 "\r" だけを Unix 形式にするには Conv_line_ctrl_Mac_to_Unix を指定します。すべての改行制御シーケンスを DOS 形式に変換する場合は Conv_line_ctrl_to_Dos を、Unix 形式だけを DOS 形式にするには Conv_line_ctrl_Unix_to_Dos を、MacOS 形式だけを DOS 形式にするには Conv_line_ctrl_Mac_to_Dos を指定します。すべての改行制御シーケンスを MacOS 形式に変換する場合は Conv_line_ctrl_to_Mac を、Unix 形式だけを MacOS 形式にするには Conv_line_ctrl_Unix_to_Mac を、DOS 形式だけを MacOS 形式にするには Conv_line_ctrl_Dos_to_Mac を指定します。
    dst には変換の結果を展開するバッファのアドレスを指定します。
    dst_sz には dst が指すバッファのメモリサイズを指定します。
    src には変換される文字列のアドレスを指定します。

    正常終了した場合、dst と同じアドレスが戻り値になります。なんらかのエラーが発生した場合は NULL が戻り値になります。発生したエラーの詳細は以下のように errno に出力されます。

    • EINVAL (= 22) : 不正な引数が渡された場合
    • ENOBUFS (= 105) : 出力先のバッファ・サイズが不足している場合

  2. 改行制御コードに基づいて文字列の行数を計数する: count_lines()
    size_t count_lines(char *src
    , char *line_ctrl_sequence
    )

    src には行数を計数する文字列を指定します。
    line_ctrl_sequence には改行制御シーケンスを表す文字列を指定します (例: Unix なら "\n", DOS なら "\r\n", MaxOS なら "\r")。

    正常終了した場合、戻り値は 1 以上の値になります。なんらかのエラーが発生した場合はゼロが返され、errno にエラーの詳細が出力されます。

    • EINVAL (= 22) : 不正な引数が渡された場合