通用解析器

概述

通用解析器是一個簡單的解析器,用於解析掛載選項、檔案系統選項、驅動程式選項、子系統選項等。

解析器 API

int match_token(char *s, const match_table_t table, substring_t args[])

在字串中查詢令牌(和可選引數)

引數

char *s

用於檢查令牌/引數對的字串

const match_table_t table

描述允許的選項令牌集及其可能關聯的引數的 match_table_t。必須以一個其模式設定為 NULL 指標的 struct match_token 終止。

substring_t args[]

MAX_OPT_ARGSsubstring_t 元素的陣列。用於返回匹配位置。

描述

檢測是否傳入了一組令牌字串中的任何一個。令牌可以包含最多 MAX_OPT_ARGS 個基本 C 風格格式識別符號例項,這些例項將在匹配令牌時被考慮,其位置將返回在 args 陣列中。

int match_int(substring_t *s, int *result)

從 substring_t 中掃描整數的十進位制表示

引數

substring_t *s

要掃描的 substring_t

int *result

成功時得到的整數

描述

嘗試將 substring_t s 解析為十進位制整數。

返回

成功時,將 result 設定為字串表示的整數並返回 0。失敗時返回 -EINVAL 或 -ERANGE。

int match_uint(substring_t *s, unsigned int *result)

從 substring_t 中掃描整數的十進位制表示

引數

substring_t *s

要掃描的 substring_t

unsigned int *result

成功時得到的整數

描述

嘗試將 substring_t s 解析為十進位制整數。

返回

成功時,將 result 設定為字串表示的整數並返回 0。失敗時返回 -EINVAL 或 -ERANGE。

int match_u64(substring_t *s, u64 *result)

從 substring_t 中掃描 u64 的十進位制表示

引數

substring_t *s

要掃描的 substring_t

u64 *result

成功時得到的無符號長長整數

描述

嘗試將 substring_t s 解析為長十進位制整數。

返回

成功時,將 result 設定為字串表示的整數並返回 0。失敗時返回 -EINVAL 或 -ERANGE。

int match_octal(substring_t *s, int *result)

從 substring_t 中掃描整數的八進位制表示

引數

substring_t *s

要掃描的 substring_t

int *result

成功時得到的整數

描述

嘗試將 substring_t s 解析為八進位制整數。

返回

成功時,將 result 設定為字串表示的整數並返回 0。失敗時返回 -EINVAL 或 -ERANGE。

int match_hex(substring_t *s, int *result)

從 substring_t 中掃描整數的十六進位制表示

引數

substring_t *s

要掃描的 substring_t

int *result

成功時得到的整數

描述

嘗試將 substring_t s 解析為十六進位制整數。

返回

成功時,將 result 設定為字串表示的整數並返回 0。失敗時返回 -EINVAL 或 -ERANGE。

bool match_wildcard(const char *pattern, const char *str)

解析字串是否與給定萬用字元模式匹配

引數

const char *pattern

萬用字元模式

const char *str

要解析的字串

描述

解析字串 str 以檢查是否與萬用字元模式 pattern 匹配。模式可以包含兩種型別的萬用字元

  • ‘*’ - 匹配零個或多個字元

  • ‘?’ - 匹配一個字元

返回

如果 strpattern 匹配,返回 true,否則返回 false。

size_t match_strlcpy(char *dest, const substring_t *src, size_t size)

將字元從 substring_t 複製到大小確定的緩衝區

引數

char *dest

複製到哪裡

const substring_t *src

要複製的 substring_t

size_t size

目標緩衝區的大小

描述

substring_t src 中的字元複製到 C 風格字串 dest。複製字元數不超過 size - 1,加上終止 NUL 字元。

返回

src 的長度。

char *match_strdup(const substring_t *s)

使用 substring_t 的內容分配新字串

引數

const substring_t *s

要複製的 substring_t

描述

分配並返回一個填充了 substring_t s 內容的字串。呼叫者負責使用 kfree() 釋放返回的字串。

返回

新分配的以 NUL 結尾的字串地址,錯誤時為 NULL