Каковы ограничения на имена путей 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).

Итак, документация завершена - в ней упоминается все, что проверяет код.

В зависимости от того, как идентифицируются ваши устройства, вы, вероятно, захотите сделать какое-либо экранирование или дезинфекцию, чтобы удалить косые черты, на случай, если у вас будут последовательные косые черты. Кроме этого, вам нужно только санировать объекты, чтобы они были удобочитаемыми и легко отлаживались, если хотите.

Другие вопросы по тегам