Каковы ограничения на имена путей GSetting?
Я прочитал в документации GSettings, что:
Названия клавиш ограничены строчными буквами, цифрами и '-'. Кроме того, имена должны начинаться со строчной буквы, не должны заканчиваться символом "-" и не должны содержать последовательные тире
Но нет никаких примечаний к именам путей, кроме тех, которые не включают последовательные косые черты (/
). Мой пример использования - генерация подкаталогов (из перемещаемой схемы) для настроек на основе устройства, и мне интересно, следует ли мне санировать строки любых символов.
1 ответ
Есть примечания к именам путей, и они полны:
Пути должны начинаться и заканчиваться символом прямой косой черты ('/') и не должны содержать двух последовательных символов косой черты. Пути следует выбирать на основе доменного имени, связанного с программой или библиотекой, к которой относятся настройки. Примерами путей являются "/ org / gtk / settings / file-chooser /" и "/ ca / desrt / dconf-editor /". Пути не должны начинаться с "/ apps /", "/ desktop /" или "/ system /", как это часто делалось в GConf.
(из документации).
Код, который их проверяет, следующий:
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).
Итак, документация завершена - в ней упоминается все, что проверяет код.
В зависимости от того, как идентифицируются ваши устройства, вы, вероятно, захотите сделать какое-либо экранирование или дезинфекцию, чтобы удалить косые черты, на случай, если у вас будут последовательные косые черты. Кроме этого, вам нужно только санировать объекты, чтобы они были удобочитаемыми и легко отлаживались, если хотите.