通用解析器

概述

通用解析器是一个简单的解析器,用于解析挂载选项、文件系统选项、驱动程序选项、子系统选项等。

解析器 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