Создание и удаление имён файлов VFS
sqlite3_filename sqlite3_create_filename( const char *zDatabase, const char *zJournal, const char *zWal, int nParam, const char **azParam ); void sqlite3_free_filename(sqlite3_filename);
Эти интерфейсы предназначены для использования реализациями VFS-подложки и не применимы вне этого контекста.
Функция sqlite3_create_filename(D,J,W,N,P) выделяет память для хранения версии имени файла базы данных D с соответствующим файлом журнала J и файлом WAL W и с N парами параметров URI ключ/значение в массиве P. Результатом функции sqlite3_create_filename(D,J,W,N,P) является указатель на имя файла базы данных, который безопасно передавать в такие функции, как:
- sqlite3_uri_parameter(),
- sqlite3_uri_boolean(),
- sqlite3_uri_int64(),
- sqlite3_uri_key(),
- sqlite3_filename_database(),
- sqlite3_filename_journal(), или
- sqlite3_filename_wal().
Параметр P в sqlite3_create_filename(D,J,W,N,P) должен быть массивом из 2*N указателей на строки. Каждая пара указателей в этом массиве соответствует ключу и значению для параметра запроса. Параметр P может быть указателем NULL, если N равно нулю. Ни один из 2*N указателей в массиве P не должен быть указателем NULL, а указатели на ключи не должны быть пустыми строками. Ни один из параметров D, J или W для sqlite3_create_filename(D,J,W,N,P) не может быть указателем NULL, хотя они могут быть пустыми строками.
Функция sqlite3_free_filename(Y) освобождает выделенную ранее память, полученную из sqlite3_create_filename(). Вызов sqlite3_free_filename(Y), где Y является указателем NULL, является безопасной операцией без эффекта.
Если параметр Y для sqlite3_free_filename(Y) — это что-либо, кроме указателя NULL или указателя, полученного ранее из sqlite3_create_filename(), то могут произойти такие неприятности, как повреждение кучи или сегфолты. Значение Y не должно использоваться повторно после вызова sqlite3_free_filename(Y). Это означает, что если метод sqlite3_vfs.xOpen() VFS был вызван с использованием Y, то соответствующий метод [sqlite3_module.xClose() также должен быть вызван до вызова sqlite3_free_filename(Y).
См. также списки Объектов, Констант и Функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/create_filename.html