porter/libsrc/porter/protocol/config.c

1 ファイル

1.1 porter/libsrc/porter/protocol/config.c

設定ファイル (INI 形式) 解析モジュール。

1.1.1 作者

c-modernization-kit sample team

1.1.2 バージョン

1.0.0

1.1.3 日付

2026/03/04

1.1.4 著作権

Copyright (C) CompanyName, Ltd. 2026. All rights reserved.

2 関数

2.1 open_config_file_read

static FILE *open_config_file_read ( const char *path )

2.2 copy_cstr_trunc

static void copy_cstr_trunc ( char *dst, size_t dst_size, const char *src )

2.3 trim

static void trim ( const char *src, char *buf, size_t buf_size )

2.4 parse_kv

static int parse_kv ( const char *line, char *key_out, size_t key_size, char *val_out, size_t val_size )

2.5 config_load_global

int config_load_global ( const char *config_path, PotrGlobalConfig *global )

設定ファイルから [global] セクションを読み込みます。

[global] セクションが存在しない場合はデフォルト値を設定します。

2.5.1 引数

  • config_path [in] 設定ファイルのパス。
  • global [out] 読み込み結果を格納する構造体へのポインタ。

2.5.2 戻り値

成功時は POTR_SUCCESS、失敗時は POTR_ERROR を返します。

2.6 apply_service_kv

static void apply_service_kv ( const char *key, const char *val, PotrServiceDef *current )

2.7 config_load_service

int config_load_service ( const char *config_path, int64_t service_id, PotrServiceDef *def )

設定ファイルから指定サービスの定義を読み込みます。

[service.] 形式のセクション名から 部分を取得し、service_id と照合します。
サービスの識別子はセクション名の であり、ポート番号とは無関係です。

2.7.1 引数

  • config_path [in] 設定ファイルのパス。
  • service_id [in] 読み込むサービスの ID。
  • def [out] 読み込み結果を格納する構造体へのポインタ。

2.7.2 戻り値

成功時は POTR_SUCCESS、サービスが見つからない場合は POTR_ERROR を返します。

2.8 config_list_service_ids

int config_list_service_ids ( const char *config_path, int64_t **ids_out, int *count_out )

設定ファイルに登録されているすべてのサービス ID を列挙します。

初期容量 POTR_MAX_SERVICES で配列を確保し、超過時は realloc で 2 倍に拡張します。

2.8.1 引数

  • config_path [in] 設定ファイルのパス。
  • ids_out [out] サービス ID 配列へのポインタを格納する変数。 呼び出し元が free(*ids_out) の責務を持つ。
  • count_out [out] 列挙したサービス ID 数。

2.8.2 戻り値

成功時は POTR_SUCCESS、失敗時は POTR_ERROR を返します。

3 定数、マクロ

3.1 CONFIG_LINE_MAX

#define CONFIG_LINE_MAX 256

設定ファイル 1 行の最大長。

3.2 CONFIG_SECTION_MAX

#define CONFIG_SECTION_MAX 64

セクション名の最大長。

3.3 CONFIG_KEY_MAX

#define CONFIG_KEY_MAX 64

キー名の最大長。

3.4 CONFIG_VAL_MAX

#define CONFIG_VAL_MAX 128

値文字列の最大長。