Динамічні бібліотеки

Призначення та структура бібліотеки

Динамічна бібліотека FSERVDLL.DLL призначена для забезпечення виконання базових функцій по упаковці, розпакуванню, аналізу і перевірці файлів поштової кореспонденції (ФПК).

FSERVDLL.DLL є складовою частиною програмного комплексу “Електронна пошта FossDocMail” і може бути використана для розробки FossDocMail- сумісних додатків.

Вибір динамічного компонування бібліотеки обумовлений необхідністю організації інтерфейсу з ЕП FossDocMail для прикладних програм, написаних з використанням різних систем програмування (Visual C ++, Delphi, FSHELL та інших).

FSERVDLL.DLL є багатопотокової бібліотекою. Виклик будь-якої функції бібліотеки прив’язаний до попереднього розподілу блоку управління ФПК (БУП ФПК). Створення блоку управління ФПК проводиться за допомогою функції fpk_alloc, а звільнення блоку управління – за допомогою функції fpk_free.

Для одночасної роботи з декількома ФПК в різних потоках прикладної програми резервується пул адрес блоків управління (1024 у даній версії). Під час завантаження бібліотеки проводиться підготовка пулу адрес і ініціалізація критичної секції, необхідної для коректного розміщення чергової адреси блоку управління ФПК в пулі. Під час вивантаження бібліотеки критична секція видаляється.

Схема виклику функцій

Для використання функцій бібліотеки в програмах на Visual C ++ необхідно визначити тип FPKAPI і вказати прототипи потрібних функцій.

define FPKAPI extern “C” __declspec(dllimport)

FPKAPI int fpk_alloc (void);

FPKAPI int fpk_free (int i);

 Для використання функцій бібліотеки в програмах на Delphi необхідно вказати прототипи функцій:

function fpk_alloc: Integer; cdecl; external ‘fservdll.dll’;

function fpk_free( fhand: Integer ): Integer; cdecl; external ‘fservdll.dll’;

Для використання функцій бібліотеки в FSHELL програмах необхідно вказати прототипи функцій:

fpkdll := “fservdll.dll”

_import(“_fpk_alloc”,       fpkdll, 0)

_import(“_fpk_free”,        fpkdll, 1)

При використанні FSHELL можливий альтернативний варіант вказівки імпортованих функцій:

#import          _fpk_alloc       fservdll.dll     0

#import          _fpk_free        fservdll.dll     1

Перед викликом будь-якої функції слід розподілити блок управління ФПК і отримати дескриптор блоку управління ФПК (ДБУП ФПК). Після цього можна проводити обробку ФПК за допомогою бібліотечних функцій. Першим параметром виклику (крім u_makechain) будь-якої функції є номер дескриптора блоку управління. В кінці роботи слід звільнити блок управління.

ПРИКЛАД (FSHELL)

fh := _fpk_alloc()      // розподілити блок управління

 

                                               // тут можна обробляти ФПК

 

_fpk_free(fh)                        // звільнити блок управління

Опис функцій

Зауваження: Назва кожної функції бібліотеки включає префікс, який вказує на її призначення. У даній версії використовуються наступні префікси:

fpk_    – загальні функції роботи с ФПК;

u_       – допоміжні функції;

env_    – функції роботи з конвертом ФПК;

flist_   – функції роботи зі списком файлів ФПК.

 FPKAPI int u_makechain (const char* p_dir)

 ОПИС

Створення каталогу з усіма проміжними каталогами

ПАРАМЕТРИ

p_dir               – шлях каталогу

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення (завжди)

ЗАУВАЖЕННЯ

Може викликатися поза контекстом відкриття ФПК. Можна вказувати не повністю описаний шлях, потрібний каталог буде створюватися в поточному.

FPKAPI char* u_uniqname (int i, const char* p_fmask)

 ОПИС

Генерація унікального імені файлу ФПК по масці

ПАРАМЕТРИ

i                      –  дескриптор блоку управління ФПК

p_fmask          – маска довжиною до 12 символів, в якій знаками питання (‘?’) вказані позиції, де випадково генеруються символи

КОД ПОВЕРНЕННЯ

– адреса буфера з отриманим унікальним ім’ям

-1        – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Генерується коротке ім’я файлу (8 символів – ім’я, 3 – розширення)

FPKAPI char* u_genIN (int i, const char* p_pn )

 ОПИС

Генерація унікального ідентифікатора ФПК по масці

ПАРАМЕТРИ

i                      – дескриптор блоку управління ФПК

p_pn               – символьний префікс унікального ідентифікатора

КОД ПОВЕРНЕННЯ

адреса буфера з отриманим унікальним ідентифікатором

-1        – помилка доступу до блоку управління ФПК

FPKAPI int fpk_setfpkdir (int i, char* p_dir)

 ОПИС

Вказати каталог для  ФПК

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_dir   – шлях каталогу

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

У тому випадку, якщо вказаний каталог не існує, він буде створений. У разі використання зазначеного каталогу для упаковки ФПК проводиться перевірка існування підкаталогу .tmp”. У разі його відсутності він буде створений.

FPKAPI int fpk_setfildir (int i, char* p_dir)

ОПИС

Вказати каталог для файлів

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_dir   – шлях каталогу

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

У тому випадку, якщо вказаний каталог не існує, він буде створений.

FPKAPI int fpk_settmpdir (int i, char* p_dir)

 

ОПИС

Вказати тимчасовий каталог

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_dir   – шлях каталогу

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу к блоку управління ФПК

ЗАУВАЖЕННЯ

У тому випадку, якщо вказаний каталог не існує, він буде створений.

FPKAPI int fpk_setbaddir (int i, char* p_dir)

 ОПИС

Вказати каталог для зіпсованих ФПК

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_dir   – шлях каталогу

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу к блоку управління ФПК

ЗАУВАЖЕННЯ

У тому випадку, якщо вказаний каталог не існує, він буде створений.

FPKAPI int fpk_alloc (void)

 ОПИС

Створити блок управління ФПК

ПАРАМЕТРИ

КОД ПОВЕРНЕННЯ

– дескриптор блоку управління ФПК

FPKAPI int fpk_duplicate (int p_sourcehandle, char* p_fpknew)

 ОПИС

Створити копію файлу ФПК і копію блоку управління ФПК

ПАРАМЕТРИ

p_sourcehandle          – дескриптор блоку управління ФПК

p_fpknew                   – ім’я файлу – копії ФПК

КОД ПОВЕРНЕННЯ

– дескриптор нового блоку управління ФПК

-1        – помилка доступу к блоку управління ФПК

FPKAPI int fpk_copy (int p_dest, int p_source)

 ОПИС

Створити копію блоку управління ФПК

ПАРАМЕТРИ

p_dest             – дескриптор копії блоку управління

p_source         – дескриптор вихідного блоку управління

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу к блоку управління ФПК

FPKAPI int fpk_free (int i)

ОПИС

звільнити блок управління ФПК

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу к блоку управління ФПК

FPKAPI int fpk_open (int i)

 ОПИС

Відкрити ФПК

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

–  дескриптор ( в контексті функції open) відкритого файлу ФПК

-1        – помилка доступу к блоку управління ФПК

-1        – не визначене ім’я файлу ФПК

-2        – не вдається відкрити файл ФПК

-3        – помилка функції fdopen

FPKAPI int fpk_close (int i)

 ОПИС

закрити ФПК

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу к блоку управління ФПК

-1        – файл ФПК не був відкритий

1          – помилка функції fclose

2          – помилка функції close

FPKAPI int fpk_get_sign (int i)

 ОПИС

Визначити сигнатуру ФПК, завантажити контрольну суму ФПК

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу к блоку управління ФПК

2          – помилка читання сигнатури

3          – неправильна сигнатура

ЗАУВАЖЕННЯ

ФПК повинен бути попередньо відкритий функцією fpk_open.

FPKAPI int fpk_load (int i)

 ОПИС

Завантажити ФПК (ФПК повинен бути попередньо відкритий функцією fpk_open.)

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу к блоку управління ФПК

5          – помилка контрольної суми інформаційної частини ФПК

100      – помилка readEnv

13        – помилка контрольної суми конверту ФПК

FPKAPI int fpk_load_ex (int i, char* p_fpkname)

 ОПИС

Відкриття, завантаження і закриття ФПК

ПАРАМЕТРИ

i                      – дескриптор блока управління ФПК

p_fpkname     – ім’я файлу ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу к блоку управління ФПК

-3        – помилка відкриття ФПК

-2        – помилка читання сигнатури

5          – помилка контрольної суми інформаційної частини ФПК

100      – помилка readEnv ???

13        – помилка контрольної суми конверта ФПК

ЗАУВАЖЕННЯ

Після завершення роботи функції файл закривається.

FPKAPI int fpk_check (int i)

 ОПИС

Перевірка цілісності ФПК

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

14        – файл відкритий іншим додатком

15        – занадто багато відкритих файлів

1          – файл не знайдено (або інша помилка файлової системи)

2          – помилка читання сигнатури

3          – неправильна сигнатура

5          – помилка контрольної суми інформаційної частини ФПК

12        – помилка читання ФПК

13        – помилка контрольної суми конверта ФПК

FPKAPI int fpk_clear (int i)

 ОПИС

Скидання внутрішніх змінних ФПК

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

FPKAPI int fpk_setname (int i, char* p_fpkname)

 ОПИС

Задати ім’я ФПК

ПАРАМЕТРИ

i                      – дескриптор блоку управління ФПК

p_fpkname     – ім’я файлу ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Ця функція використовується для вказівки імені оброблюваного ФПК, наприклад перед функцією fpk_load.

//          m_mode = UNPACK

FPKAPI char* fpk_lastname (int i)

ОПИС

Визначити ім’я ФПК

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

покажчик на рядок, що містить ім’я ФПК

-1        – помилка доступу до блоку управління ФПК

FPKAPI int fpk_setmode (int i, int p_mode)

ОПИС

Встановлення режиму обробки ФПК

ПАРАМЕТРИ

i                      – дескриптор блоку управління ФПК

p_mode          – режим обробки

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Поки передбачені два режими:

0x0      – розпакування файлів з короткими іменами

0x1      – розпакування файлів з довгими іменами (умовчання).

Режим 0x1 можна включати при труднощах з розпакуванням файлів на сервери Novell Netware без встановленої підтримки довгих імен.

FPKAPI int fpk_pack (int i)

ОПИС

Упакувати ФПК

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

11        – помилка створення каталогу “.tmp”

1          – файл ФПК із заданим ім’ям вже існує

14        – помилка доступу

16        – занадто багато відкритих файлів (файл ФПК)

4          – помилка вводу – виводу (файл ФПК)

14        – помилка доступу (файл, що впаковується ) (файл ФПК)

16        – занадто багато відкритих файлів (файл, що впаковується )

4          – помилка вводу – виводу (файл, що впаковується)

3          – помилка read

5          – помилка write

-1        – помилка unlink

13        – помилка доступу rename (EACCES)

2          – помилка доступу rename (ENOENT)

FPKAPI int fpk_unpack (int i)

 ОПИС

Відкрити файл ФПК, розпакувати, закрити файл ФПК

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

14        – файл відкритий іншим додатком

15        – занадто багато відкритих файлів

1          – файл не знайдено (або інша помилка файлової системи)

2          – помилка читання сигнатури

3          – неправильна сигнатура

5          – помилка контрольної суми інформаційної частини ФПК

100      – помилка readEnv ???

13           – помилка контрольної суми конверта ФПК

ЗАУВАЖЕННЯ

Розпаковуються всі файли, що входять до складу ФПК. Формується нове ім’я при конфлікті імен.

ДИВИСЬ ТАКОЖ:

fpk_unpackfile

FPKAPI char* fpk_unpackfile_ex(int i, int index, unsigned long flag)

ОПИС

Розпакувати файл з ФПК за індексом

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

index   – індекс файлу

flag     – прапори розпакування

0: за замовчуванням (розпакування файлу з довгим ім’ям)

1: розпакування файлу з коротким ім’ям

КОД ПОВЕРНЕННЯ

NULL – помилка розпакування інакше – покажчик на рядок що містить шлях + ім’я розпакованого файлу

 FPKAPI int fpk_unpackl (int i)

 

см. FPKAPI int fpk_unpack (int i)

прим. Розпаковує файли (з конверта), зберігаючи довгі імена

FPKAPI int fpk_unpackfile (int i, long p_offs)

 ОПИС

Розпакувати окремий файл щодо зміщення у ФПК

ПАРАМЕТРИ

i           – дескриптор блока управління ФПК

p_offs – зміщення файлу відносно початку ФПК

КОД ПОВЕРНЕННЯ

–  довжина розпакованого файлу

-1        – помилка доступу до блоку управління ФПК

14        – файл відкритий іншим додатком

15        – занадто багато відкритих файлів

1          – файл не знайдено (або інша помилка файлової системи)

ЗАУВАЖЕННЯ

ФПК повинен бути попередньо відкритий функцією fpk_open. Формування нового імені при конфлікті імен.

FPKAPI int fpk_unpackfilel (int i, long p_offs)

 см. FPKAPI int fpk_unpackfile (int i, long p_offs)

прим. Розпаковує файл (з конверта), зберігаючи довге ім’я

FPKAPI int fpk_unpack_byname (int i, char* p_fname, char* p_dir)

 ОПИС

Розпакувати окремий файл по його імені в зазначений каталог

ПАРАМЕТРИ

i                      – дескриптор блоку управління ФПК

p_fname         – ім’я файлу

p_dir               – каталог, куди потрібно розпаковувати файл

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

14        – файл відкритий іншим додатком

15        – занадто багато відкритих файлів

1          – файл не знайдено (або інша помилка файлової системи)

ЗАУВАЖЕННЯ

Функція відкриває і закриває файл ФПК. Пошук здійснюється по короткому імені файлу.

FPKAPI int fpk_unpack_bynamel (int i, char* p_fname, char* p_dir)

 см. FPKAPI int fpk_unpack_byname (int i, char* p_fname, char* p_dir)

прим. Розпаковує файл (з конверта), зберігаючи довге ім’я

FPKAPI int fpk_repack (int i)

ОПИС

Перепакувати ФПК (змінити поле .IN)

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

2          – помилка читання сигнатури

3          – неправильна сигнатура

ЗАУВАЖЕННЯ

При перепакуванні додається ключ “.VD” – версія бібліотеки. Під час перепаковки нова копія файлу не створюється.

FPKAPI int fpk_do_rreport (int i, int p_rcode, char* p_from)

 ОПИС

Створити звіт від маршрутизатора

ПАРАМЕТРИ

i                      – дескриптор блоку управління ФПК

p_rcode          – код помилки маршрутизатора

p_from                       – X.400 адреса відправника

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Функція не створює файл звіту, для створення файлу звіту потрібно виконати функцію fpk_pack.

FPKAPI int fpk_do_report (int i, int p_rcode, int p_ercode, char* p_from)

 ОПИС

Створити звіт

ПАРАМЕТРИ

i                      – дескриптор блоку управління ФПК

p_rcode          – код помилки маршрутизатора

p_ercode         – код помилки програми розпакування

p_from                       – X.400 адреса відправника

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Функція не створює файл звіту, для створення файлу звіту потрібно виконати функцію fpk_pack.

FPKAPI int fpk_envfromfile (int i, char* p_fenv)

 ОПИС

Побудова ФПК за значеннями полів у файлі

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_fenv            – файл з інформацією для побудови ФПК

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

FPKAPI int fpk_add (int i, char* p_key, char* p_value)

 ОПИС

Додати поле в конверт

ПАРАМЕТРИ

i                      – дескриптор блоку управління ФПК

p_key              – ключ

p_value           – значення

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

 FPKAPI int fpk_add_file (int i, const char* file_path, const char* name)

 ОПИС

Додати в конверт файл.

ПАРАМЕТРИ

i                      – дескриптор блока управління ФПК

file_path         – шлях до файлу (шлях + ім’я файлу)

name               – ім’я файлу, з яким він буде доданий в конверт. 0 використовувати ім’я з file_path.

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

 

FPKAPI int fpk_add_file_buf (int i, const char* name, unsigned long body_size, const unsigned char* body)

 ОПИС

Додати в конверт файл із буфера.

ПАРАМЕТРИ

i                      – дескриптор блоку управління ФПК

name               – ім’я файлу, з яким він буде доданий в конверт.

body_size       – розмір буфера body.

body               – буфер, який містить тіло файлу

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

FPKAPI int fpk_changekey (int i, char* p_key, char* p_keynew)

 ОПИС

Змінити ключ поля конверта

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_key              – ключ

p_keynew       – нове значення ключа

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Проводиться пошук першого запису із заданим полем ключа і його заміна.

FPKAPI int fpk_find_changekey (int i,  char* keynew)

 ОПИС

Змінити ключ поля конверта

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_keynew       – нове значення ключа

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

-1        – бажаний запис не знайдено

ЗАУВАЖЕННЯ

Функція працює в контексті пошуку функціями env_findfirst і env_findnext, тобто проводиться заміна поля об’єкта, виявленого цими функціями.

FPKAPI int fpk_changevalue (int i, char* p_key, char* p_value)

 ОПИС

Змінити значення поля конверта

ПАРАМЕТРИ

i                      – дескриптор блоку управління ФПК

p_key              – ключ

p_value           – нове значення

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Проводиться пошук ПЕРШОГО запису із заданим полем ключа і заміна поля значення.

FPKAPI int fpk_find_changevalue (int i,  char* p_value)

 ОПИС

Змінити значення поля конверта

ПАРАМЕТРИ

i                      – дескриптор блоку управління ФПК

p_value           – нове значення

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

-1        – бажаний запис не знайдено

ЗАУВАЖЕННЯ

Функція працює в контексті пошуку функціями env_findfirst і env_findnext, тобто проводиться заміна поля об’єкта, виявленого цими функціями.

FPKAPI int fpk_detachunits (int i, char* p_key)

 ОПИС

Видалення з ФПК групи полів із заданим ключем

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_key  – ключ

КОД ПОВЕРНЕННЯ

0          –  нормальне завершення

-1        – помилка доступу до блоку управління ФПК

FPKAPI int env_getcount (int i)

 ОПИС

Визначити кількість полів конверта

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

–  кількість полів конверта

-1        – помилка доступу до блоку управління ФПК

FPKAPI void* env_findfirst (int i, char* p_obj)

 ОПИС

Знайти перший запис в конверті заданим ключем

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_obj   – значення ключа, за яким здійснюється пошук

КОД ПОВЕРНЕННЯ

адреса поля значення, відповідного заданому ключу

0          – помилка доступу до блоку управління ФПК

FPKAPI void* env_findnext (int i)

 ОПИС

Знайти наступний запис у конверті з заданим ключем

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

адреса поля значення, відповідного заданому ключу

0          – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Пошук наступного запису проводиться в контексті функції env_findfirst

FPKAPI int env_findfirst_ind (int i, char* p_obj)

 ОПИС

Знайти індекс першого поля із заданим ключем

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_obj   – значення ключа, за яким здійснюється пошук

КОД ПОВЕРНЕННЯ

–  индекс знайденого запису

-1        – помилка доступу до блоку управління ФПК

FPKAPI int env_findnext_ind (int i)

 ОПИС

Знайти індекс наступного поля із заданим ключем

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

–  индекс знайденого запису

-1        – помилка доступу до блоку управління ФПК

FPKAPI void* env_at_key (int i, int p_ind)

 ОПИС

Прочитати ключ запису із заданим індексом

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_ind  – индекс запису конверту

КОД ПОВЕРНЕННЯ

адреса поля ключа, відповідного заданому ключу

0          – помилка доступу до блоку управління ФПК

FPKAPI void* env_at_value (int i, int ind)

 ОПИС

прочитати значення поля із заданим індексом

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_ind  – индекс запису конверту

КОД ПОВЕРНЕННЯ

адреса поля значення, відповідного заданому ключу

0          – помилка доступу до блоку управління ФПК

FPKAPI int flist_getcount (int i)

 ОПИС

Отримати кількість файлів вкладення

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

КОД ПОВЕРНЕННЯ

– кількість файлів

-1        – помилка доступу до блоку управління ФПК

 FPKAPI void* flist_at_fname (int i, int p_ind)

 ОПИС

Прочитати ім’я файлу зі списку файлів за його номером

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_ind  – номер файлу

КОД ПОВЕРНЕННЯ

адреса рядка з ім’ям файлу

0          – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Повертається коротке ім’я файлу (8 символів – ім’я, 3 – розширення)

ДИВИСЬ ТАКОЖ:

fpk_setmode

FPKAPI void* flist_at_fnamel (int i, int p_ind)

 ОПИС

Прочитати довге ім’я файлу зі списку файлів за його номером

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_ind  – номер файлу

КОД ПОВЕРНЕННЯ

– адреса рядку з ім’ям файлу

0          – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Повертається довге  ім’я файлу 

ДИВИСЬ ТАКОЖ:

fpk_setmode

FPKAPI unsigned short flist_at_ftime (int i, int p_ind)

 ОПИС

Прочитати час створення файлу за його номером

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_ind  – номер файлу

КОД ПОВЕРНЕННЯ

час створення файлу

-1        – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Час створення файлу зберігається в ФПК у форматі MS-DOS

FPKAPI unsigned short flist_at_fdate (int i, int ind)

 ОПИС

Прочитати дату файлу за його номером

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_ind  – номер файлу

КОД ПОВЕРНЕННЯ

дата створення файлу

-1        – помилка доступу до блоку управління ФПК

ЗАУВАЖЕННЯ

Дата створення файлу зберігається в ФПК у форматі MS-DOS

FPKAPI long flist_at_foffs (int i, int ind)

 ОПИС

Визначити зміщення файлу в ФПК за його номером

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_ind  – номер файлу

КОД ПОВЕРНЕННЯ

зміщення файлу в ФПК

-1        – помилка доступу до блоку управління ФПК

 FPKAPI long flist_at_flen(int i, int ind)

 ОПИС

Отримати розмір файлу за індексом.

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_ind  – номер файлу

КОД ПОВЕРНЕННЯ

– розмір  файлу

-1        – помилка доступу до блоку управління ФПК

 FPKAPI long flist_at_flen_ex(int i, int ind, int code)

 ОПИС

Отримати розмір файлу за індексом.

ПАРАМЕТРИ

i           – дескриптор блоку управління ФПК

p_ind  – номер файлу

code    – прапор. Можливі значення:

  • 0 – оригінальний розмір файлу
  • 1 – розмір файлу в конверті (при обробці плагінами розмір може відрізнятися від оригінального).

КОД ПОВЕРНЕННЯ

– розмір  файлу

-1        – помилка доступу до блоку управління ФПК

 int CopyFiles (char* TargetMask, char* DestMask)

 ОПИС

Копіює файли по масці

ПАРАМЕТРИ

TargetMask – шлях і маска для відбору файлів на копіювання

DestMask- шлях і маска для отриманих файлів

КОД ПОВЕРНЕННЯ

Завжди 0

 int MoveFiles (char* TargetMask, char* DestDir)

 ОПИС

Переміщує файли по масці

ПАРАМЕТРИ

TargetMask – шлях і маска для відбору файлів на переміщення

DestMask – шлях, куди файли будуть переміщені.

КОД ПОВЕРНЕННЯ

Завжди 0

 int MoveFilesEx (char* TargetMask, char* DestDir, unsigned long ulFlags)

 ОПИС

Переміщує файли по масці

ПАРАМЕТРИ

TargetMaskшлях і маска для відбору файлів на переміщення

DestMaskшлях, куди файли будуть переміщені.

ulFlags –        0 – не провадити заміщення однойменних файлів

1 – заміщати однойменні файли

0x00010000 (MOVEFILE_FORCE_CALK_DIR) – провадити розбір DestMask на наявність зарезервованих слів:

  • ?YYYY – рік, всі знаки
  • ?YY – рік, 2 останніх знака
  • ?HH – часи, 2 знака
  • ?TT – мінути, 2 знака
  • ?MM – місяць, 2 знака
  • ?DD – день месяця, 2 знака
  • ?W – день тижня, 1 знак

прапор введений починаючи з версії “FpkAPI(v 4.0.1.30a)”

КОД ПОВЕРНЕННЯ

Завжди 0

Опис кодів помилок

 

Код Опис
-3 Помилка відкриття файлу конверта
3 У відкриваємом файлі конверту не виявлена сигнатура
2 Порушена структура конверту
5 Порушена контрольна сума конверту
200000 + <sys error> Помилка переміщення упаковуваного конверту з каталогу .Tmp в каталог упаковки
4100+errno Помилка відкриття формованого файлу конверту в .Tmp
14 Системна помилка EACCES при відкритті  файлу конверту,що формується в .Tmp
16 Системна помилка EMFILE при відкритті  файла конверта,що формується в .Tmp