【问题标题】:What are the restrictions on GSetting path names?设置路径名有什么限制?
【发布时间】:2017-10-28 12:53:40
【问题描述】:

我在 GSettings 文档中读到:

键名仅限于小写字符、数字和“-”。此外,名称必须以小写字符开头,不得以“-”结尾,并且不得包含连续的破折号

但是没有关于路径名的注释,除了不包括连续的斜杠(/)。我的用例是为基于设备的设置生成子目录(来自可重定位的架构),我想知道是否应该清理任何字符的字符串。

【问题讨论】:

    标签: glib gsettings


    【解决方案1】:

    路径名上有个注释,而且很完整:

    路径必须以正斜杠字符 ('/') 开头和结尾,并且不得包含两个连续的斜杠字符。应根据与设置所属的程序或库关联的域名来选择路径。路径的示例是“/org/gtk/settings/file-chooser/”和“/ca/desrt/dconf-editor/”。路径不应像在 GConf 中那样以“/apps/”、“/desktop/”或“/system/”开头。

    (来自the documentation)。

    验证它们的代码如下:

    static gboolean
    path_is_valid (const gchar *path)
    {
      if (!path)
        return FALSE;
    
      if (path[0] != '/')
        return FALSE;
    
      if (!g_str_has_suffix (path, "/"))
        return FALSE;
    
      return strstr (path, "//") == NULL;
    }
    

    (来自gsettings.c)。

    所以文档是完整的——它提到了代码检查的所有内容。

    根据您的设备的识别方式,您可能确实需要进行一些转义或清理以删除斜线,以防万一您最终会出现连续的斜线。除此之外,如果您愿意,您只需要对事物进行清理,使其易于阅读并易于调试。

    【讨论】:

    • 啊,对不起,关于连续斜线的部分我轻描淡写了。我的设备通常由主机名标识,所以我应该没问题,感谢代码 sn-p。
    猜你喜欢
    • 2021-06-05
    • 2015-03-21
    • 2014-02-16
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多