Инициализация управляющей структуры
Назначение
Инициализация управляющей структуры t_LINDBCtrl.
Синтаксис
L_LONG LINDBCtrlInit(t_LINDBCtrl* LINDBCtrl, char* LinterPath);
Входные данные
Входными данными являются:
-
управляющая структура LINDBCtrl;
-
путь к установочному каталогу СУБД ЛИНТЕР LinterPath. Допустимые значения:
-
строка длиной не более 1024 байт (должна заканчиваться двоичным нулем);
-
NULL-значение.
-
Выходные данные
Выходными данными является управляющая структура LINDBCtrl.
В управляющей структуре будут возвращены:
Имя поля | Значение | |
---|---|---|
DbPath | Путь к текущему каталогу | |
LinterPath | Путь к установочному каталогу СУБД ЛИНТЕР | |
LinterMbx | Пустая строка | |
TmpPath | Пустая строка | |
LinterPid | 0 | |
Flg | Флаг LINDB_INIT_FLG (структура инициализирована) | |
OpenFlags | 0 | |
RetStatus | Библиотечный код завершения | |
SysStatus | Системный код завершения |
Описание
Функция выполняет следующие действия:
-
инициализирует поля структуры LINDBCtrl нулевыми значениями;
-
если аргумент LinterPath содержит строковое значение, проверяется заданный путь на существование;
-
если аргумент LinterPath содержит NULL-значение, производится попытка найти установочный каталог СУБД ЛИНТЕР на основании значения переменной окружения
PATH
. В данном случае для успешного поиска установочный каталог (предполагается, что это каталогlinter/bin
) должен быть включен в список каталогов переменной окруженияPATH
; -
в
PATH
путь к каталогу должен обязательно заканчиватьсяlinter/bin
; -
проверяет наличие в предполагаемом установочном каталоге (в подкаталоге
bin
) исполняемого файла СУБД ЛИНТЕР; -
выделяет динамическую память для хранения пути, сохраняет в выделенной памяти путь к дистрибутиву СУБД ЛИНТЕР и заполняет поле LinterPath управляющей структуры значением указателя на выделенную память;
-
выделяет динамическую память для текущего каталога, устанавливает значение текущего каталога в качестве пути к БД (поле DbPath).
Функция должна вызываться перед вызовом любой другой функции библиотеки linctrl
.
Клиентское приложение может создавать необходимое количество управляющих структур.
Возвращаемые значения
Функция возвращает:
-
0
– нормальное завершение; -
-1
– структура LINDBCtrl не инициализирована.
Библиотечные коды завершения
Код | Описание | |
---|---|---|
E_LINCTRL_ALREADYINIT | Управляющая структура LINDBCtrl уже инициализирована | |
E_LINCTRL_GETPATH | Отсутствие в ОС переменной окружения PATH | |
E_LINCTRL_NOTFOUND | Установочный каталог СУБД ЛИНТЕР не прописан в переменной окружения PATH | |
E_LINCTRL_NOTDIR | Найденный через переменную окружения PATH или заданный в аргументе LinterPath путь не является установочным каталогом СУБД ЛИНТЕР | |
E_LINCTRL_NOMEM | Невозможность выделения динамической памяти для хранения значения путей в структуре LINDBCtrl |
Пример
#include < stdio.h > #include < stdlib.h > #include < string.h > #include "linctrl.h" #include "exlib.h" void PrintError(t_LINDBCtrl *LINDBCtrl); void main() { t_LINDBCtrl LINDBCtrl; CHAR LinterPath[]="/usr/linter"; LONGINT Err; Err=LINDBCtrlInit(&LINDBCtrl,LinterPath); If (Err != NORMAL) PrintError(&LINDBCtrl); printf("Initialisation LINDBCtrl\n"); printf("End Example\n"); }