Инициализация управляющей структуры

Назначение

Инициализация управляющей структуры t_LINDBCtrl.

Синтаксис

 
L_LONG LINDBCtrlInit(t_LINDBCtrl* LINDBCtrl, char* LinterPath);

Входные данные

Входными данными являются:

  1. управляющая структура LINDBCtrl;

  2. путь к установочному каталогу СУБД ЛИНТЕР LinterPath. Допустимые значения:

    • строка длиной не более 1024 байт (должна заканчиваться двоичным нулем);

    • NULL-значение.

Выходные данные

Выходными данными является управляющая структура LINDBCtrl.

В управляющей структуре будут возвращены:

Имя поля Значение
DbPath Путь к текущему каталогу
LinterPath Путь к установочному каталогу СУБД ЛИНТЕР
LinterMbx Пустая строка
TmpPath Пустая строка
LinterPid 0
Flg Флаг LINDB_INIT_FLG (структура инициализирована)
OpenFlags 0
RetStatus Библиотечный код завершения
SysStatus Системный код завершения

Описание

Функция выполняет следующие действия:

  1. инициализирует поля структуры LINDBCtrl нулевыми значениями;

  2. если аргумент LinterPath содержит строковое значение, проверяется заданный путь на существование;

  3. если аргумент LinterPath содержит NULL-значение, производится попытка найти установочный каталог СУБД ЛИНТЕР на основании значения переменной окружения PATH. В данном случае для успешного поиска установочный каталог (предполагается, что это каталог linter/bin) должен быть включен в список каталогов переменной окружения PATH;

  4. в PATH путь к каталогу должен обязательно заканчиваться linter/bin;

  5. проверяет наличие в предполагаемом установочном каталоге (в подкаталоге bin) исполняемого файла СУБД ЛИНТЕР;

  6. выделяет динамическую память для хранения пути, сохраняет в выделенной памяти путь к дистрибутиву СУБД ЛИНТЕР и заполняет поле LinterPath управляющей структуры значением указателя на выделенную память;

  7. выделяет динамическую память для текущего каталога, устанавливает значение текущего каталога в качестве пути к БД (поле 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");
  }