2024-04-07 babolo Перенос pgoblin_dexenv() из func.c в parser.c. Отслеживание текста-источника в pgoblin_parser(). 2024-03-31 babolo Стиль. 2024-03-31 babolo Не работает __weak_reference со static. Отладка. 2024-03-31 babolo Варнинги. 2024-03-24 babolo Дата в копилефте. 2024-03-24 babolo Варнинги. 2024-03-17 babolo Удаление варнингов. Согласование типов. 2024-03-17 babolo Удаление варнингов. Согласование типов. 2024-01-14 babolo Исправление MAXWARN. 2024-01-13 babolo Дата в копилефте. 2024-01-08 babolo Уменьшены варнинги. 2024-01-08 babolo Включен MAXWARN. Явное выравнивание. 2024-01-08 babolo Реорганизация make файлов. 2023-12-03 babolo Исправление using(). 2023-10-29 babolo Удаление варнингов. 2023-10-28 babolo Даты в копилефтах. 2023-08-06 babolo Переименование rou в rio в варианте загрузки плагина 1го типа. 2023-08-06 babolo Замена out_0 на io_0. Замена mife_read() на pgoblin_io_read(). Замена mife_get() на mife_pointer(). Изменён прототип ->read(). 2023-08-06 babolo Переименования pgoblin_io_close() в pgoblin_io_closew(), ->close() в ->closew(). 2023-08-06 babolo Еще перестановки в инициализации, подготовка к совмещению IN и OUT. 2023-08-06 babolo Перестановки этапа инициализации. 2023-08-06 babolo Убрано неоправданное использование pgoblin_options. 2023-08-06 babolo Исправлен и документирован вывод трассировки. 2023-08-06 babolo Обновление REQUIRED. Подсказки и доки. 2023-08-06 babolo Использование pgoblin_jb_*() функций. Ловля ранее неловимых ошибок. Изменён прототип pgoblin_jobs.jait(). Сокрытие mular_descriptor, когда нет _MULTILAR_H_. Убран макрос PGOBLIN_INITED. Пополнен отладочный вывод. Стиль. 2023-07-30 babolo Начинается приведение JOB к порядку. 2023-07-30 babolo Удобства на тему pgoblin_st_*(). Заметка по тестам на будущее. 2023-07-30 babolo Команда #file ликвидирована. 2023-07-30 babolo Удалены тесты. 2023-07-30 babolo Исправлены параметры ключевых слов NEW и OLD. Замена IN #file на #cat в commands. 2023-07-30 babolo Удаление старья. 2023-07-29 babolo Замена rio->flags на rio->type для определения плагина. Убраны неуместные close() для OUT. Пополнена отладка. Комментарии. 2023-07-23 babolo В OUT интерфейс добавлен funclose(), им полагается закрывать открытое funopen(). 2023-07-22 babolo Из интерфейса pgoblin_ios убран open(), в out 0 стал pgoblin_out0_open(). Параметр для pgoblin_ios.oprep() передается через pgoblin_rio.path. Изменение прототипа pgoblin_ios.oprep() и pgoblin_ios.iprep(). Стиль. 2023-07-22 babolo Отлажен и описан #out. Изменились прототипы pgoblin_ios.iprep и pgoblin_ios.oprep. В тестах в список каталогов для поиска плагинов добавлен pgoblin/. Пополнен и поправлен отладочный вывод. Колмментарии. Стиль. 2023-07-16 babolo Расширена диагностика. 2023-07-16 babolo Отладка #out -- не окончена. Расширена диагностика. Замена констант и выражений на макросы. Комментарии. Стиль. 2023-07-16 babolo Переименование PGOBLIN_PARMDBFREE в PGOBLIN_PARMFREE. Замена pgoblin.jobtable[] на JOBE(). Новая команда #out - пока не тестирована. Новые интерфейсные функции в IO - iprep() и oprep(). Стиль. 2023-07-15 babolo Стал плагином OUT "0". 2023-07-15 babolo Из ini удалены следы внутренней структуры OUT "0". 2023-07-15 babolo Инициализация OUT 0 перенесена из pgoblin_init() в pgoblin_load(). В out_0 openr() с отрицательным fd вызывает closer(). В pgoblin делается подключение плагина OUT "0". 2023-07-15 babolo Определение и использование PREPLUGIN. 2023-07-15 babolo Лишний GET_RIO() в pgoblin_getarg(). В ini.c:mods не было элемента для OUT "0". Замена pgoblin.*table[*] на соответствующие макросы. Определение pgoblin_realiod. 2023-07-15 babolo Подготовка к переводу OUT как плагин. Вынос сути из io в out_0. Новые интерфейсные функции в IO - fdin() и fdout(). Комментарии. 2023-07-09 babolo Согласование типов. 2023-07-09 babolo В pgoblin_load() добавлен вариант для mode 0. 2023-07-09 babolo Добавлен контроль ошибки у вывода #getcsv, #getenv, #getproc, #getstr, #getdir, #getopt. Ошибки fprintf стали EX_IOERR. Унификация закрывающей точки. Стиль. 2023-07-09 babolo Ликвидирована зависимость от getCGIparm. Убран вариант #getdir с именем файла в CTL. Комментарии. Стиль. 2023-07-09 babolo Перненос закрывающей точки в общую часть. Унификация тестов. 2023-07-09 babolo Длинная константа определена как BLIN_4STA24E. Не нуждаются в getCGIparm #getget и #getpost. Новый флаг -T для возможности ввода контрольных символов в #getget и #getpost. 2023-07-02 babolo Процедура pgoblin_getcsv() со всем хозяйством переставлена вперёд без изменений. Начало работы с GET/POST параметрами в cmd_parm. 2023-07-02 babolo Процедура pgoblin_style() со всем хозяйством переставлена вперёд без изменений. Стиль. 2023-07-02 babolo Команда #style теперь имеет OUT для вывода дампа. Процедуре pgoblin_st_dump() и подлежащим добавлен параметр - файл. Команде #dump вместо имени файла в CTL надо давать Pm в OUT. Дописан pgoblin5pgeo.dump(). Дописан выбор цвета в pgoblin5pgeo. Добавлены тестовые результаты в pgoblin5pgeo. Пополнен дамп. Пополнена отладочная печать. Стиль. 2023-06-25 babolo Неправильное использование BLIN_O, замена на BLIN_P. 2023-06-24 babolo Переписен #getenv? теперь не зависит от getCGIparm. Проверка ошибок у fprintf(fi... в #getgetproc. 2023-06-18 babolo Переписан #getproc, тепрь не использует getCGIparm, источником служит sysctl(), к каждому процессу добавлена строка с exec()нутым именем. Исправлены описания #getproc и #getdir. В pgoblin_rio добавлено поле funout для файла из funopen(). В pgoblin_io_close() добавлено закрытие funout. В io убрана wr() и добавлена clo(). 2023-06-18 babolo Из всех регистров исключено поле exenv. Параметр pgoblin_fini() теперь exenv вместо options. В pgoblin_db0_create() добавлен параметр exenv. В ->init() и ->fini() всех плагинов замена параметра options на exenv. Большое удаление отладки в pgoblin5pgeo. Включены в дистрибутив pgoblin5pgeo тесты c и d. Стиль. Даты в копилефтах. 2023-06-11 babolo Под 32 архитектуру. 2023-06-10 babolo Уточнен тип pgoblin_realsty без PGOBLIN_MODULE. Удалены лишние пары struct/typedef без полного описания. Стиль. Комментарии. 2023-06-04 babolo Заготовка out_0. 2023-06-04 babolo Исправлены концы файлов. 2023-06-04 babolo Окончен переход на pgoblin_io_funopen(). 2023-06-04 babolo Подготовка 0 плагинам. 2023-06-04 babolo Переход PGOBLIN_COMPAT на 5. 2023-06-04 babolo Сокращены таблицы регистрации плагинов. Замена типов pgoblin_outs и pgoblin_ins на pgoblin_ios. Переформатирован тип pgoblin_db_conn в pgsql. 2023-06-04 babolo Удалён STYLE->pasth -- лишний. 2023-06-04 babolo Сокращены размеры массивов для подгрузки плагинов. Замена STYLE->path на STYLE->pasth. К названиям типов pgoblin_out, pgoblin_io, pgoblin_in добавлена 's' и сделаны полные структуры этих типов. 2023-06-04 babolo Добавлен style.c с интерфейсными процедурами pgoblin_st_*(). Изменён STYLE интерфейс плагинов. 2023-06-03 babolo Изменение прототипа pgoblin_db_finish() и интерфейса DB. 2023-06-03 babolo Прототип pgoblin_db_denote(). 2023-06-03 babolo Изменение прототипов и интерфейсов. 2023-06-03 babolo Массовая замена интерфейсов и прототипов. 2023-05-31 cuhegh Уменьшено количество параметров cmdin(). Помечено изменение регистров в pgoblin_up*(). 2023-05-31 cuhegh В регистры вписывается exenv. 2023-05-31 cuhegh Удаление переменной options из pgoblin.c. 2023-05-31 cuhegh Тепрь pgoblin_init() выдает pgoblin_exenv. 2023-05-31 cuhegh Переименование exenv в oxenv в pgoblin_rio. 2023-05-30 cuhegh Изменён прототип pgoblin_load() и следствия. 2023-05-30 cuhegh Перераспределение компонентов pgoblin_rio. Подготовка места для плагинов 0, 1, 2. 2023-05-21 babolo Убран tlags из pgoblin_rio. 2023-05-21 babolo Перемещение битов в масках. Подготовка к перемещению самых важных битов. 2023-05-21 babolo Поправлены комментарии. 2023-05-21 babolo Ликвидирован PGOBLIN_BINPARM. 2023-05-21 babolo Замена & PGOBLIN_BINPARM на binparm в pgoblin_rio. 2023-05-21 babolo Замена & PGOBLIN_FREEPATH и & PGOBLIN_FILEOVER на freepath и fileover в pgoblin_rio. 2023-05-21 babolo Замена & PGOBLIN_FREEOUTS на freeouts в pgoblin_rio. 2023-05-21 babolo Замена & PGOBLIN_FREEPQRE на freepqre в pgoblin_rio. 2023-05-21 babolo Замена & PGOBLIN_FREEMIFE на freemife в pgoblin_rio. 2023-05-21 babolo Замена & PGOBLIN_FREETEXT на freetext в pgoblin_rio. 2023-05-21 babolo Замена pgoblin_rio.pid на mpid. Разнесены биты rio по подструктурам. Больше отладки. 2023-05-09 babolo Прооптимизированы #begin, #end, #rollbk. Трассировка pgoblin_push*(), pgoblin_pop*(). 2023-05-09 babolo Изменилась нумерация регистров в глубину стека. 2023-05-08 babolo В комментарии форматы записей трассировки. 2023-05-08 babolo Процедура pgoblin_dexenv() для освобождения pgoblin_exenv. Вывод адресов регистров под dasprint. Особенности работы #eval при CTL 0. 2023-05-07 babolo Из rio->stymd выделен rio->exenv и ликвидирован флаг PGOBLIN_PCODE. 2023-05-07 babolo Убрано размножение CTL в #eval. 2023-05-06 babolo Исправлен комментарий. 2023-05-01 babolo В pgoblin_eval() не на месте было получение PGO_CIN. Возможность вывода границы записи в трассировке. В pgoblin_cmdexe() цикл по регистрам рассыпан по видам регистров. Добавлены адреса регистров в трассировку по R. Комментарии. Стиль. 2023-04-23 babolo Исправлен номер глубины стека. 2023-04-09 babolo В #dump добавлен вывод Pq. 2023-04-09 babolo Изменение интерфейсов ->resinfo, ->subinfo, ->erinfo, ->valinfo, ->getvalue. 2023-04-09 babolo В трассировку подается ссылка на регистр вместо номера. В регистры встроены номера и глубина. Абстракция регистра pgoblin_rall. Недоработка в db_pgsql:getstream(). В pgoblin_wait() замена идентификатора j на стандартноый rjb. 2023-04-09 babolo Начало новой команды #dump. Перестала копить IO[-] функция presel(). Стиль обращения с [PGOBLIN_REGSIZE - 1]. 2023-04-02 babolo Зависимость от getCGIparm-5.00. Теперь pgoblin_rio->wri не маскирует свой тип. Расширена pgoblin_rio->flags. 2023-03-12 babolo Движение к освобождению io->tlags. 2023-03-08 babolo Перевод на версию 5. 2023-03-04 babolo Подготовка к 1плагинам. 2023-02-26 babolo Перенос битов IO из flags в tlags. Даты в копилефтах. 2023-02-26 babolo Мелкие зачистки. 2023-02-18 babolo Изменение прототипа pgoblin_dbases->erconn() и pgoblin_dbases->denote(). Исправлен идентификатор параметра у pgoblin_db_clear(). 2023-02-18 babolo Изменение прототипа pgoblin_dbases->tarry(), pgoblin_dbases->notifies(), pgoblin_dbases->finish(). 2023-02-18 babolo Изменение прототипа pgoblin_dbases->getstream(), pgoblin_dbases->getcopy(), pgoblin_dbases->putcopy(), pgoblin_dbases->endstream(), pgoblin_dbases->prepare(), pgoblin_dbases->shurecon(). 2023-02-18 babolo Изменение прототипа pgoblin_dbases->query(). 2023-02-18 babolo Изменение прототипа pgoblin_dbases->execute() и pgoblin_dbases->prexec(). Даты в копилефтах. 2023-02-18 babolo Изменение интерфейса pgoblin_styles->parser() и pgoblin_styles->dump(). Даты в копилефтах. 2023-02-18 babolo Изменение интерфейса pgoblin_styles->clear(). 2023-02-18 babolo Изменение интерфейса pgoblin_styles->get(). 2023-02-18 babolo Изменился прототип pgoblin_styles->table(). Подготовка к загружаемым модулям OUT. Стиль. 2022-11-16 babolo Версия 4.16 Отслеживание прерываний как ошибок. На #getjob теперь влияет -b. 2022-11-12 babolo Версия 4.15 Отслеживание прерываний. 2022-10-03 babolo Версия 4.14 В #copyin можно пустые CTL и IN. 2022-09-24 babolo Версия 4.13 Разрешение NULL для style. 2022-09-18 babolo Разрешение NULL CTL. 2022-09-17 babolo Версия 4.12 Исправлен множественный #fork при нулевом CTL. Зависимости. 2022-08-28 babolo И еще дата. 2022-08-28 babolo Исправлены *_COMPAT макросы. Даты в копилефтах. 2022-08-27 babolo Документогенерация. 2022-08-21 babolo Улучшение вывода отладки. Новая ошибка. 2022-08-20 babolo Версия 4.11 Не распространялась ошибка через #eval. 2022-08-18 babolo Версия 4.10 Почищен TODO. Добавлен CTL в #fork. 2022-08-17 babolo Отметка ошибок. 2022-08-16 babolo Зачистка. 2022-08-16 babolo Версия 4.09 Использование транслированной программы из CTL. Добавлены отладочные сообщения. Исправлена ошибка в описании eval - IN на место. Уровень сообщений reg masked увеличен. Комментарии. Стиль. 2022-08-14 babolo Команда #eval использует IN Pq. Тесты на это. Подготовка к использованию rio->stymd и для транслированной программы. 2022-08-14 babolo Версия 4.08 Форматы для 64/32 архитектуры. Добавлен флаг -=L для задания уровней выводимых команд в трассировке. 2022-08-01 babolo Пометки к следующему мажору. Поправлен состав регистров к #echo, #binselect, #strselect. Обновлены комментарии, транслиркемые в документацию. Поправлена генерация документации. 2022-05-01 babolo Версия 4.07 Неправильно работал пустой ответ при CTL Pq и IN Pq. 2022-04-10 babolo Полнее диагностика. 2022-03-27 babolo Пропущенный timeout - не ошибка. 2022-03-27 babolo Версия 4.06 При PGOBLIN_TRAPDEF 2 сообщения об ошибке на регистр. 2022-03-27 babolo Вывод через pgoblin_wr() вместо rou->wri(rou->onu, ...). 2022-03-20 babolo Версия 4.05 Уточнено поведение tarry. Заработал флаг PGOBLIN_PURGE. 2022-02-09 cuhegh Версия 4.04 Критически важные зависимости. 2022-01-30 babolo Версия 4.03 Дублирование pgoblin_default. 2022-01-30 babolo Обход неспособности последних версий clang к --oformat=binary. 2022-01-23 babolo Версия 4.02 Осовременен README. Из exenv убран sequen. 2022-01-23 babolo Переключение #exec на использование cortege. 2022-01-23 babolo Подготовка инфраструктуры к использованию cortege. 2022-01-23 babolo Управление установкой всех CONN по 0му флагом -N. В трассировку добавлен cortege. Изменение интерфейса putnum() и putext(). Стиль. 2022-01-22 babolo Поправлен и пополнен README. Возможность вывода N в трассировке - кеш имени файлов. Исправлен вывод C в трассировке. Стиль. 2022-01-16 babolo Защита от coredump при отсутствии имени процедуры. 2022-01-15 babolo Версия 4.01 Вывод pgoblin_decond() в публичное. Исправлена работа #end. Возврат -N флага. Улучшен отладочный вывод. 2022-01-09 babolo Версия 4.00 Возможность ограниченного сосуществования разных мажоров. Осовременено REQUIRED. 2022-01-09 babolo Замена типов *_style на pgoblin_realsty. Изменение интерфейса pgoblin_db0_create(). Замена макроса IND() на INDX() с удалением предыдущего значения INDX(). Тип pgoblin_mode стал pgoblin_realpq. Зачистка переменных rsv в модулях БД. Зачистка переменных st в модулях стией. 2022-01-08 babolo Оформление CONN интерфейса erconn(). Исправлено описание CONN интерфейса clear(). К CONN интерфейсу добавлено место dummy2. Перестановка процедур в CONN 0 интерфейсе согласно месту в структуре. 2022-01-08 babolo Изменение интерфейса CONN erinfo(). 2022-01-08 babolo Изменение интерфейса CONN subinfo() и valinfo(). Изменение интерфейса STY table(). Комментарии. Стиль. 2022-01-08 babolo Изменение интерфейса CONN resinfo(). 2022-01-08 babolo Изменение интерфейса CONN getvalue(). 2022-01-07 babolo Изменился интерфейс CONN finish() и из него выделен denote(). 2022-01-07 babolo В интерфейсе CONN ликвидирован finish(, PGOBLIN_FrCOPY, ). 2022-01-07 babolo Изменение интерфейсов CONN getstream() и clear(). Изменился интерфейс cleareg(). Определение blin_internal_flags через exenv->options. 2022-01-07 babolo Даты в копилефтах. 2022-01-07 babolo Изменение интерфейсов CONN prepare(), execute() и выделение из execute() prexec(). Улучшен отладочный вывод. Из интерфейса удален бит PGOBLIN_ALTERQ, используется внутри плагинов. Комментарий. 2022-01-06 babolo Разделение pgoblin_up*() на pgoblin_me*() и pgoblin_up*() с сокращенным числом параметров. Новые функции pgoblin_push*() и pgoblin_pop*(). Изменился интерфейс pgoblin_go(). Использоввание 63го регистра. Использование правильного флага в style_0. Комментарии. Стиль. 2022-01-03 babolo Изменение интерфейса CONN query(). Команды #begin, #end, #rollback могут иметь литералы. Описание #rollback. 2022-01-02 babolo Переименование вида pgoblin_io в pgoblin_rio. 2022-01-02 babolo Переименование вида pgoblin_conn в pgoblin_rdb. 2022-01-02 babolo Переименование вида pgoblin_jobreg в pgoblin_rjb. 2022-01-02 babolo Переименование вида pgoblin_styreg в pgoblin_rst. 2022-01-02 babolo Вторая часть стандартизующих переименований идентификаторов. 2022-01-02 babolo Изменение интерфейса get() в стилях. Первая часть стандартизующих переименований. 2022-01-02 babolo Все MARK_* теперь с номерами регистров. 2022-01-02 babolo Перевод интерфейса БД с указателей на номера регистров. 2022-01-01 babolo Перевод интерфейса стилей с указателей на номера регистров. 2021-12-26 babolo Трассировка парсеров переведена с 4го на 5й уровень. Изменился интерфейс init() и fini() плагинов. Изменился интерфейс jest() плагинов JOB. Удалена pgoblin_getr(). Переименование в pgoblin_load() i в slot. Исправлен выбор трейс файла. Не делаются free() литералам команд. Стиль. 2021-12-19 babolo Неправильный уровень ссылочности. Частичная зачистка распределенной памяти. 2021-12-19 babolo Не инициализировалось поле command->linum в main(). Стиль. 2021-12-18 babolo Не освобоэждалась память. 2021-12-12 babolo Тест 5pgo0 отлажен. 2021-12-12 babolo Новый файл trace, в основном перенос из func. 2021-12-12 babolo Переход на динамическое выделение регистров. 2021-11-28 babolo Переименования. Перетипирования. Стиль. 2021-11-28 babolo Переименования. 2021-11-28 babolo Неправильная инициализация временного Pq в cmd_select. Неинициализированная переменная в style_0. Пополнен отладочный вывод. Переименования. Стиль. 2021-11-27 babolo Обслуживание cortege. Изменение прототипа pgoblin_db_getvalue(). Замена pgoblin.dbasetable[] на DBASE(). Исправлен тип pgoblin_io. Переименования reg_out в out, reg_in в rin, in в srcstyle. В style_0 проверки результата pgoblin_db_resinfo(). 2021-11-20 babolo Работает #copyin. 2021-11-20 babolo Пополнен отладочный вывод. 2021-11-20 babolo Не выполнялась программа. Отладка #getarg и #getopt. 2021-11-14 babolo Убрана неработающая проверка PGOBLIN_Nfields в #copyin. Исправлен диагноз в #info. Перевод options->stack на options->deargs. В pgoblin_traceat() передается имя файла. Не нужна popin(), все делается на месте. Контроль в цикле флагов в main(). Стиль. 2021-11-13 babolo Неправильное использование кода возврата. Диагностика. 2021-11-07 babolo Отработка ошибок. 2021-11-07 babolo Отработка ошибок. 2021-11-06 babolo Отслеживается номер строки при исполнении первого файла. Предусмотрено отслеживание имени файла. Перенос bos в options->bos. Лучше диагностика в #exec. Частично убран options->stack. Теперь popin() открывает заданный по имени файл. Улучшено сопровождение ошибок. Изменились интерфейсы pgoblin_traceat() и pgoblin_parser(). Стиль. 2021-11-05 babolo Можно не задавать параметры после имени коннектора в #job. Стиль. 2021-11-05 babolo Защита dump_ioreg() от устаревших ссылок. 2021-11-04 babolo Исправлен новый #perform с результатом. cvs: ---------------------------------------------------------------------- 2021-10-31 babolo Отладка. 2021-10-31 babolo Стал подробнее результат tarry(). В интерфейс БД введена новая функция ->erconn(). Реорганизация pgoblin_listen(). 2021-10-30 babolo Теперь dump_ioreg() печатает как минимум номер регистра. Исправлена неполнота вывода в dump_ioreg(). Дайджест состояния регистров в iorassert() выводился в stderr. 2021-10-30 babolo Отработка изменения формата dump_ioreg(). Стиль. 2021-10-24 babolo И еще. 2021-10-24 babolo Преобразование dump_ioreg(). 2021-10-24 babolo Улучшен отладочный вывод. Улучшено общение с BLIN. Стиль. 2021-10-24 babolo Поправлен уровень отладки. 2021-10-24 babolo Аккуратнее отладочный вывод. 2021-10-24 babolo Пополнение отладки. Инициализация неинициализированного. Исправление *_COMPAT. Стиль. 2021-10-17 babolo Убрано поле offset из IO, теперь используется offset из mife. 2021-10-17 babolo Стиль. 2021-10-16 babolo Подробнее отладка. Стиль. 2021-10-16 babolo Множественность -L флагов. 2021-10-16 babolo Стиль. 2021-10-10 babolo Неопределенная переменная. Уточнение предполагаемого имени команды. Стиль. 2021-10-10 babolo Пополнен README. Почикан TODO. В #begin и #end можно употреблять CTL. Новая команда #rollback. Стиль. 2021-10-10 babolo Перевод с фикса на multilar. Уточнено освобождение памяти в #eval. Стал обязательным multilar.h. 2021-10-09 babolo Новая команда #info. Теперь при CTL Pm и IN Pm в #select всегда 2 цикла, тесты. Теперь и у #perform есть OUT. Улучшена отработка и диагностика ошибок. Стал длиннее resinfo(). Не использован JOB у #getmeta. Исправлен pgoblin_db0_create(). Убран флаг -N. Поправлен TODO. Перестал пропадать пустой параметр после исправления babolo-parcer. Стиль. 2021-09-26 babolo Версия 3.22 повторно Защита pgoblin_perform() при CTL NULL. 2021-09-26 babolo Версия 3.22 Отлажен LONGNOTIFY. 2021-09-26 babolo Отлажен #listen без CTL. Пополнено описание #listen. 2021-09-26 babolo Даты в копилефтах. 2021-09-26 babolo Отметка в IO при LONGNOTIFY. 2021-09-26 babolo Перевод строки при dump_ioreg() пустого. 2021-09-19 babolo Версия 3.21 Подготовка к PGOBLIN_LONGNOTIFY. 2021-09-19 babolo Пожготовка к longnotify. 2021-09-18 babolo Стиль. Даты в копилефтах. 2021-09-18 babolo Тесты на несовпадающие размеры параметров. Улучшение диагностики. 2021-09-05 babolo Версия 3.20 2021-09-05 babolo Исправление ошибок и предупреждений. 2021-08-22 babolo Переработка usage(). 2021-08-21 babolo Стиль. 2021-08-15 babolo Автогенерируемое описание вычищено. 2021-08-15 babolo Пропущена отметка выделения. 2021-08-15 babolo Стиль автогенеренного. 2021-08-08 babolo Версия 3.19 В mife-5.14 исправлен mife_ctlpipe(). Научен форкаться #display. Для лучшей совместимости если на 0ом IN регистре есть Pm с 0 == fd, то он отдается прямо без mife_ctlpipe(); тесты добавлены. Изменения отладочного вывода. Комментарии. Стиль. 2021-08-08 babolo Зависимость от mife-5.13. Стиль. 2021-08-08 babolo Стиль. 2021-08-01 babolo Начало внедрения mife_ctlpipe(). 2021-08-01 babolo Тесты под обязательность stdin. 2021-08-01 babolo Перенос из execute.c и func.c в новый файл ini.c функций pgoblin_fini(), pgoblin_init(), pgoblin_load(). Оформление скобками конструкций if (...) ifBLIN_*; else ...; В тесте #getmeta pgsql замена unknown на text - соответствует PostgreSQL 10 и дальше. 2021-07-31 babolo Даты в копилефтах. 2021-07-31 babolo Перенос pgoblin_init() и pgoblin_fini() в func.c. Возможность BLIN трассировки по -=T. 2021-06-19 babolo Удаление ошибок из README. 2021-06-13 babolo Исправален формат сообщения об ошибке при -t. Исправлен формат для 32 разрядной архитектуры. 2021-06-06 babolo Версия 3.18 Файл стилей режется на отдельные стили при первом проходе. Недоставало MULAR_COMPAT. Даты копилефтов. 2021-02-13 babolo Версия 3.17 Параметр скрипта нарушал работу #getdir. Нарушение синтаксиса. Стиль. 2020-10-24 babolo Версия 3.16 Исправление #getmeta. Зачистка лишнего в описании. 2020-10-23 babolo Версия 3.15 Исправлены флаги в описании команд #getjob и #getmeta. 2020-10-17 babolo Документация. 2020-10-17 babolo Версия 3.14 Команда #getarg теперь может взаимодействовать с #getopt. Исправлен конец потока в #getopt. 2020-10-15 babolo Версия 3.13 Новая команда #getopt. Уточнение работы с флагами BLIN_MASK. Новая функция pgoblin_onecsym(). Перенумерация тестов. 2020-10-15 babolo Переформатированы описания. 2020-10-15 babolo Проптимизирован pgoblin_onecopy(). Изменен тест pgsql #getmeta соответственно дополнениям. Отладочный вывод в db. Копилефты. 2020-10-13 babolo Даты копилефтов. 2020-10-11 babolo Тест pgsql. 2020-10-11 babolo Версия 3.12 Новый вид оценки результата PGOBLIN_ColSize. В #getmeta добавлены колонки TypeMod и ColSize. Оценка размера числа вынесена в отдельную процедуру. 2020-09-12 babolo Добавлен тест на instr() для SQLite2. 2020-08-18 babolo Версия 3.11 Исправлены определения blin_internal_flags в db.c. Явный прием оконченных детей. Ускорение sqlite3. Стиль. 2020-05-08 babolo Версия 3.10 Новая команда #getmeta. Служебная процедура pgoblin_onecopy() для реализации COPY. Увеличен размер скрипта на pgoblin. Стиль. 2020-03-24 babolo Пополнена справка. Флаг -=B принимает не только номер, но и имя команды. Исправлено самодокументирование. 2020-03-22 babolo Предотвращение разыменований NULL; Установка DEFAULDB для -=K. Пополнен список sqlkeywords. Стиль. 2020-03-03 babolo Описька. 2020-02-27 babolo Заметка на полях. 2020-02-23 babolo Версия 3.09 Реакция на babolo-libmake:3.20. Даты в копилефтах. 2020-02-22 babolo Зачистка вторичных значений в IO при любой зачистке. Зачистка IO->stymd только при отсутствии IO->text. Стиль. 2020-02-01 babolo Улучшена реакция на NULL параметры. Недоставало заNULLения результатов при неудаче. В тесты добавлен -L флаг для своих плугинов к СУБД. Тесты на многострочную подстановку и NULL резудьтаты. 2019-10-19 babolo Описка. 2019-10-09 babolo Добавлены blin_internal_flags. 2019-10-09 babolo В #echo ctr может быть NULL. 2019-09-26 babolo Игнорирую SIGPIPE. 2019-09-16 babolo Копилефты. 2019-09-14 babolo Версия 3.08 Была утечка памяти на bos, exenv и in. Лишние прогоны строк. Стиль. 2019-09-14 babolo Была потеря памяти на libname. Стиль. 2019-09-13 babolo Перевод на mife-5. Команды класса SELECT могут принимать Pq CTL, было не отмечено. Теперь в флагах отмечается OUT. Стиль. 2019-09-03 babolo Версия 3.07 Наблюдение за всеми детьми JOB регистра впараллель. Пополнение TODO. 2019-08-11 babolo Оптимизация #listen. 2019-03-25 babolo Версия 3.06 Не выполнялось условие незакрытия БД. 2019-03-25 babolo Неверно пропихивался DEBUG в CFLAGS. 2019-03-25 babolo Зависимось. Попонен TODO. 2019-02-08 babolo Пополнение TODO. 2019-01-22 babolo Версия 3.05 Неправильное поведение при пустом ненулевом IN в #select. Диагностика. Неинициализированная переменная в диагностике. 2018-12-04 babolo Версия 3.04 Улучшена диагностика. 2018-11-14 babolo Версия 3.03 2018-11-14 babolo Из getcopy() ошибка не передавалась наружу. 2018-10-15 babolo Исправлен отладочный вывод. 2018-09-21 babolo Описана цель дополнений к DB 0. Переделка cmd_selec() под эти будущие дополнения. Прооптимизирован resinfo() в db_0. 2018-09-19 babolo Стиль. 2018-09-13 babolo Версия 3.02 Расширились pgoblin_conn и pgoblin_main. Не работал пароль. Добавлено задание приоритетного каталога для модулей. Зачистка от старого. 2018-09-13 babolo Версия 3.01 2018-09-13 babolo В тесте в LD_PRELOAD описаны абсолютные пути. Тест продублирован в общем корне pgoblin и модулей. 2018-09-13 babolo Ошибка LD_PRELOAD в make test. 2018-09-13 babolo Ошибка в библиотеке мешяла тестировать с LD_PRELOAD. Тесты с LD_PRELOAD. 2018-09-12 babolo Теперь в параметрах можно задавать пароль. 2018-09-11 babolo Добавлена возможность загрузки JOB модулей. Удаление следов вынесенных модулей. 2018-09-10 babolo Версия 3.00 Модули отделены. 2018-09-10 babolo Результат erinfo() прикрепляется к res и удаляется вместе с ним. Теперь PGOBLIN_FrMess не нужен. Механизм PGOBLIN_ARGVSTACK решен быть постоянным, управление убрано. 2018-09-10 babolo Теперь JOB local прописывается при старте только в 0ом регистре. 2018-09-10 babolo Теперь pgsql не база по умолчанию. 2018-09-10 babolo Удаление следов флага -T. Замена флагов -r и R на -z и -Z. 2018-09-09 babolo Убран PGOBLIN_OLDSTYLE и флаг -T. 2018-09-09 babolo Изменен интерфейс DB execute(). В DB 0 вместо pgoblin_db_0.execute() используется глобальная pgoblin_db0_create(). 2018-09-09 babolo Рефакторинг presel(). Заготовка для pgoblin_perform() через presel(). 2018-09-09 babolo Рефакторинг presel() без принципиальных изменений. Подготовка presel() к выполнению pgoblin_perform(). 2018-09-08 babolo Из pgoblin_perform() убран неверный комментарий. Из presel() убраны глобальные переменные i и j в локальное циклов. Полная ортогональность IN и CTL в presel(). 2018-09-08 babolo В предыдущем комменте ошибка - порядок обработки #binsel не менялся. Изменение порядка обработки многострочных IN Pq в #binpresel. Подготовка к обработке pgoblin_perform() при помощи presel(). Стиль. 2018-09-08 babolo Изменение прядка обработки многострочных IN Pq в #select и #binsel. Пополнение TODO. 2018-09-07 babolo Стиль. 2018-08-31 babolo Исправлен вывод M - убраны \0. 2018-08-30 babolo Исправлена ошибка при записи трассировки. Проверяется номер команды при выводе трассировки. Диагностический вызов для вывода binreg заданной команды. 2018-08-30 babolo Исправление README по поводу удаления cond. 2018-08-29 babolo В db_sqlite2 и db_sqlite3 отмечена неработоспособность PGOBLIN_CR_BTUPL. 2018-08-29 babolo Моделирование #binpresel теперь в модулях (где уместно). Поставлены пометки на обработку. 2018-08-29 babolo Из regres4 убраны лишние #begin .. #end. Пополнен TODO. 2018-08-29 babolo Убран параметр cond в интерфейсе DB модулей. Обновление TODO. Стиль. 2018-08-27 babolo Удалена константа PGOBLIN_ResMess. Стиль. 2018-08-24 babolo Загрузка модулей есть, работать они не очень. Зачистка зависимостей. Исправление TODO. Трансляция устойчива к исключению pgsql. Неудачная загрузка трактовалась как удачная. 2018-08-22 babolo Синхронизация внешних модулей с внутренними. 2018-08-21 babolo Начало выделения модулей из pgoblin. 2018-08-21 babolo Версия 2.65 Сдвиг модулей теперь флагом MODSHIFT при трансляции. Из IO регистров удалено поле flagc. 2018-08-21 babolo Удалено использование flagc. 2018-08-21 babolo Восстановлено форматирование после изменения уровня вложенности с предыдущем коммите. 2018-08-21 babolo В #getstr Pt был в ch[], но не помечен в флагах. Исправлены ошибки управления стилями при смещении модулей. При записи трассировки порядок регистров отличался от порядка при выводе. 2018-08-20 babolo Подготовлена структура для тестирования со смещенными номерами модулей. Сделана независимая от набора модулей fini(). Наличие модуля в регистре в конце execute() не предполагается. Нулевые модули теперь могут загружаться со смещением. Но не работать пока. 2018-08-19 babolo Загрузка работ при init прекращена. Помечены пропущенные изменения регистров. Удалены константы, определяющие индексы СУБД. 2018-08-18 babolo Загрузка СУБД при init прекращена. Исправлена ошибка при загрузке 0ых модулей. Исправлено несколько ошибок трассировки. 2018-08-17 babolo Загрузка стилей при init прекращена. 2018-08-17 babolo Сделана часть инфраструктуры для загрузки модулей. Но первичная инициализация модулей пока не убрана. В #connect, #job и #style используется поиск модулей от новой инфраструктуры загрузки модулей. Стиль. 2018-08-16 babolo Процедура pgoblin_connown() ликвидирована, ее тело вставлено на место вызова. 2018-08-16 babolo В R записях трассировки теперь отмечается и выводится имя файла и строка исходника, откуда слелана отметка R. Небольшая зачистка. 2018-08-15 babolo Исправлен размер элемента в io->stymd. Добавлен сбор имен файлов. В описания добавлен const по потребности. Сокращен размер чисел в трассировке, показывающих уровень вложенности. 2018-08-15 babolo Версия 2.64 повторно Забыл включить ветку, используюжую размеченные стили. 2018-08-15 babolo Версия 2.64 Не принимались псевдостили-комментарии. Исправлено и тесты на это. Опечатка в тексте вывода. 2018-08-15 babolo Версия 2.63 Теперь стили могут использоваться в любом порядке. К зачистке io регистра добавлено удаление stymd. Тесты на порядок обращения к стилям. 2018-08-15 babolo Введено смещене блока текста для уменьшения шума в следующем диффе. Коррекция комментариев для документации. 2018-08-15 babolo В pgoblin_io добавлено поле mular_descriptor*stymd для разметки стилей. Теперь Pt со стилем сначала полностью размечается, а потом обрабатывается заказанный стиль. Форматирование. 2018-08-14 babolo Поправлен комментарий. 2018-08-14 babolo Расширение количества модулей. Номер модуля помещается в трассировку вместе с идентификаторами. 2018-08-13 babolo Выравнивание структур. Стиль. 2018-08-13 babolo Предпринята попытка трассировать подключение модулей. Но подключаются они раньше включения трассировки. Оформление. 2018-08-10 babolo Исправления к описаниям. 2018-08-07 babolo Исправлена ошибка с неправильной блокировкой файла трассировки. 2018-08-06 babolo Вывод E в трейс целиком оформлен процедурой, вынесенной в func. Вывод идентификации модуля в трейс вынесен в func. Перестал быть глобальным pgoblin_xwrt(). 2018-08-05 babolo В начале трейс файла добавлена запись о всех модулях. Обеспечен вывод этой записи. Уменьшено количество использований pgoblin_options. Использование pgoblin_xwrt() с проверкой внутри вместо mife_writ(). Некоторые идентификаторы по ошибке были глобальными. 2018-07-31 babolo Версия 2.62 В выводе трейса можно задавать диапазоны и варианты вывода - классы в дополнение к диапазонам или диапазоны, попадающие в классы. 2018-07-30 babolo При трансляции теперь можно задавать невывод регистров. Можно задавать номера записей к выводу. Удален мертвый код. Добавлен fflush(stdout) в цикле вывода трейса. Оформление. 2018-07-30 babolo Версия 2.61 Убран txtout(), использован txtprt(). 2018-07-30 babolo Добавлена трассировка Pq. 2018-07-29 babolo Вывод числа в рейс сделан отдельной процедурой putnum(). Уменьшено использование pgoblin_options. Поменялся порядок вывода регистров в трейс и из. Процедуры cload() и txtprt() на будущее. Убран старый комментарий. Стиль. 2018-07-28 babolo Выкинут древний лишний отладочный вывод. 2018-07-27 babolo В трейс C добавлены стат- и динуровень, номер команды. Поменялся формат вывода. 2018-07-27 babolo Поменялись типы ppoint и ctrap в struct pgoblin_exenv. Добавлен тип E трейса. Часть работы трейса вынесена из под лока, группировка записей в трейс. Доки, стиль. 2018-07-26 babolo Исправлена ошибка с выводом параметров команды после NULL. В выводе добавлена отметка Po на регистре, если есть. Компактнее текст. 2018-07-25 babolo Версия 2.60 2018-07-25 babolo Трассировка регистров поменялась. Появилась трассировка команд. В командах трассируются Pt и Pf. Сделан вывод трассировки, совместимый с текущим форматом. Стиль. 2018-07-23 babolo Версия 2.59 2018-07-23 babolo Ошибка в pgoblin_getdir(). Сообщение об ошибке в pgoblin_getdir(). В db_0 добавлена возможность именования колонок. В db_0:execute() в результат теперь отправляется копия строки. Стиль, комментарии. 2018-07-22 babolo Стиль. 2018-07-22 babolo Стиль. 2018-07-20 babolo Изменен уровень ошибки. 2018-07-18 babolo Перенумерация колонок наботает над sqlite3. Активированы тесты на перенумерацию. 2018-07-17 babolo В db_sqlite2 не было проверки результата malloc(). В db_sqlite3 добавлены имена полей, но проверку не проходит. 2018-07-17 babolo Оформление приватных и публичных процедур. 2018-07-15 babolo При пустом цикле подстановки параметров не отмечался результат. В iorassert() добавлен вывод названия команды. 2018-07-15 babolo Оформление приватных и публичных процедур. 2018-07-15 babolo Инкапсуляция DBASE()->finish() в pgoblin_db_finish(). Замена цикла вывода константной таблицы на вывод константы. Оформление приванных и публичных процедур. 2018-07-15 babolo Теперь при пустом цикле подстановки параметров в #select создается пустой результат. В db_0 макрос INDX() стал легче читаться. В pgoblin_execute() на 2ом уровне добавились сообщения о предстоящем неявном форке. 2018-07-10 babolo Частичное приведение db_sqlite3 к db_sqlite2. 2018-07-09 babolo Тип collect() стал static int. В collect() отрабатывается ситуация с именем == NULL. В collect() проверяется неизменность количества полей в пределах одного результата запроса, перенесено из мест после вызова collect(). Вызов collect() перенесен в get() из getstream(), параметры get() из-за переноса несколько поменялись. Стиль. 2018-07-07 babolo Сохранение pgoblin_mode между проходами. Зачиска хвостов от сохранения pgoblin_mode. Теперь db_sqlite2:get() создает serv (но е работает правильно с ex, потому collect() не работает и имена колонок не соханяются. Добавлены проверки входных указателей. Включена проверка перенумерации в db_sqlite2 #strsel, пока fail. Стиль. 2018-07-06 babolo Стиль. 2018-07-06 babolo Небольшая оптимизация db_sqlite2. 2018-07-06 babolo В db_sqlite2:get() замена идентификатора n на ncol. 2018-07-05 babolo Имена и типы результата пришлось запоминать. Стиль. 2018-07-03 babolo Стиль. 2018-07-01 babolo В pgoblin_mode изменение имени поля с m на md. 2018-06-30 babolo Добавлены тесты на перестановку и выделены в отдельную группу. 2018-06-30 babolo Замена subinfo(PGOBLIN_ResMess, ...) на erinfo(...). В непотоковых select в db_sqlite2 работает перенумерация по именам. Исправлен конечный автомат в style_pgo0 и обозначения в нём. Тесты на перестановку в db_pgsql, тесты и заготовки тестов на перестановку в db_sqlite2 и db_sqlite3. 2018-06-28 babolo В db_sqlite* замена n на ncol. В db_sqlite* замены u_char на char. В db_sqlite* resv() второй параметр не нужен и там напрасно расходовалась память. Любопытный способ гасить варнинги по const**. Стиль. 2018-06-28 babolo В db_sqlite* query() замена переменной n на ncol и idx. # db_sqlite* query() переменные p и q стали char вместо u_char. Комментарии. Стиль. 2018-06-27 babolo Уточнены места для имен колонок. 2018-06-24 babolo Выравнивание db_sqlite2 и db_sqlite3. Замена if(!ex){} на ERROUT() в предыдущем блоке в db_sqlite2. Стиль. 2018-06-24 babolo Осовременен TODO. Отметки в процедурах для имен колонок. Стиль. 2018-06-23 babolo Добавлены тесты на N в pgo0. 2018-06-21 babolo Добавлена обработка N (не проверено). Переименования идентификаторов на более значащие. 2018-06-20 babolo Версия 2.58 Тесты на перенумерацию. Стиль тестов. 2018-06-18 babolo Вставлен dump(). Исправлен makerenum(). 2018-06-18 babolo Погашены варнинги по поводу pgoblin_styles.name, pgoblin_jobs.name, pgoblin_dbases.name всегда true. Погашены варнинги по поводу пустых операторов под if. Погашен варнинг по поводу сдвига отрицательного числа. Исправлена процедура makerenum(). Использование перенумерации. 2018-06-17 babolo Убран core dump при отсутствии необходимого литерала. Построение перенумерации (пока не используется). Продолжается замена ssize_t на int32_t в индексах. Добавлены параметры в макрос VOUT вместо использования внешних имен. Стиль. 2018-06-16 babolo Зачистка TODO. Замена goto на цикл. 2018-06-16 babolo Компактифицирована таблица переходов конечного автомата. 2018-06-16 babolo Перетасованы действия в конечном автомате. Возможно, перенумерация собирается. 2018-06-16 babolo Проедуры перенесены после типов и переменных. Предполагаемое значение entity F поменялось. Индексы в pgo0_style.str стали u_int32_t. Перетасованы и перегруппированы действия в конечном автомате. Комментарии, стиль. 2018-06-14 babolo Замена u_int32_t с масками на u_int32_t структуру. Соответствующая замена идентификаторов. Исправлена ошибка в regress. 2018-06-13 babolo Переименование переменных для большей внятности. Тесты на #echo из стиля. Стиль, комментарии. 2018-06-12 babolo Убраны варнинги по поводу приедения к void*. 2018-06-12 babolo Замена static const char copyright[] и static const char rcsid[] на #ident. 2018-06-11 babolo В db_0 вместо приводимой на всё p_no() сделаны отдельные процедуры. Используемая затычкой к notifies процедура db_0:p_none() переименована в notifies(). Типы pgoblin_dbases, pgoblin_jobs и pgoblin_styles расширены на 2 ссылки на будущее. В тип pgoblin_styles добавлены процедуры load и store, пока не реализованные. Разрешен описатель S в style_pgo0, пока не реализован. В парсере style_pgo0 действие Cl слито с Cb из-за полного совпадения условий выполнения. В парсере style_pgo0 устранен один вариант core dump. В regress помещен вариант распознавания описателей. Комментарии, стиль. 2018-06-08 babolo Предупреждение об отсутствии PGOBLIN_COMPAT. Переменный размер в pgoblin_prog теперь 0. 2018-06-05 babolo Стиль. Комментарии. 2018-06-05 babolo Файлы pgoblin_*.h влиты в pgoblin.h. 2018-06-04 babolo Стиль pgoblin_*.h перед вливанием в pgoblin.h. 2018-06-04 babolo Стиль pgoblin.h перед вливанием туда pgoblin_*.h. 2018-06-03 babolo Удален pgob.h, его содержимое в pgoblin.h под PGOBLIN_INTERNAL. Комментарии. 2018-05-27 babolo При неправильном определении регистра пишем вид регистра и номер 0F. 2018-05-27 babolo Пополнен usage(). 2018-05-27 babolo Отлажено прерывание make test по ошибке. 2018-05-20 babolo В Makefile добавлена цель test. Введены в работу макросы MARK_*_GO (и добавлены MARK_IO_*_NGO и MARK_*_NWENT()). Разрежены ;; в for(), что бы не путались с MARK_*. Введен файл трейса по опции -X. В tools/regres, tools/regres4, tools/regres8 добавлен exit 1 при ненулевом количестве ошибок. Стиль. 2018-05-15 babolo Вывод регистров перед командой стал аккуратнее. 2018-05-13 babolo Теперь регистр работ всегда установлен, если командой не заявлен, то 0й. Улучшена читаемость вывода регистров. 2018-05-11 babolo Расширен дешифратор кодов ошибок. 2018-03-10 babolo Версия 2.57 В #copyout не был прописан неявный Pj регистр 0. Для неявного Pj pgoblin_breg() возвращает -2. Замена pgoblin_htman() на htman(), удаление 2го параметра за ненадобностью. Замена pgoblin_keycodes() на keycodes(). Из явного списка флагов flar удалены неявные флаги -E, -R, -r. Новый флаг -=R показывает трансляцию симрегистров в бинрегистры. Исправлен invoking.pgoblin. Комментарии, форматироание. 2018-02-24 babolo Версия 2.56 Зависимость babolo-parser:4.00 изза ошибки в babolo-parser:3. Добавлены коды ошибок sqlite3. Отслеживание временности литералов в программе. 2017-08-02 babolo Неиициализирована babolo_opts *bos для выхода по ошибке. Неправильно освобождалась память из *bos. 2017-07-25 babolo Форматирование для сокращения длинны строчек. 2017-07-21 babolo Исправлены параметры MARK_IO_*(). Освобождение структуры параметров. Стиль. 2017-07-21 babolo Перенос extatus() с потрохами без изменений. Дополнен README. 2017-07-05 babolo Пополнен TODO. 2017-07-05 babolo Поправлено README. Изменены интерфейсные имена процедур в модуле job. В db_pgsql, db_sqlite2 и db_sqlite3 убраны комментарии к интерфейсным именам процедур. Во всех модулях fini() стал без параметра. В db_sqlite2 и db_sqlite3 отсутствие tarry() и notifies() нтерфейсных процедур опеделяется в db.c диспетчере. Сокращение локальных имен в модулях job_local, style_0 и style_pgo0. 2017-07-04 babolo Подготовка pgoblin_execute() к сокращению количества параметров. Рассчет уровней вложенности (статического и динамического) вернулся взад. 2017-07-04 babolo Переименование u_int32_t pgoblin_exenv.exeflags в BLIN_flagpgoblin_exenv.flags. Рассчет уровней вложенности (статического и динамического) дает результат на 1 меньше. 2017-07-03 babolo В pgoblin_tuple union стал анонимным. 2017-07-03 babolo Из pgoblin_prog удалено поле BLIN_flag flags. 2017-07-03 babolo Пополнение TODO. Замена статики и malloc()bzero() на calloc(). В pgoblin_keycodes() включение pgm в exenv. 2017-07-02 babolo Запущен notifies() через переключатель. 2017-07-02 babolo Удаление поля errmsg из pgoblin_db_conn и pgoblin_mode в db_sqlite2.c. 2017-07-02 babolo В db_sqlite2.c вынесена в отдельную процедуру reset() обращения к sqlite_reset() со всеми проверками и диагностикой. Удален макрос ERRMSX() как неточный. Оформление ошибок sqlite_bind(). 2017-07-02 babolo Убраны const из параметров qry в *query() и *prepare() dbms модулей. В диспетчере db введена проверка параметров rsv. В db_sqlite2.c вынесены в отдельные процедуры finalize() и compile() обращения к sqlite_finalize() и sqlite_compile() со всеми проверками и диагностикой. Оформление ошибок sqlite_bind() и sqlite_reset(). В макросе ERROUT() был неправильный порядок присвоения. Оформление программы. 2017-06-28 babolo Поскольку макросы PGOBLIN_SQLITE_* локальны в db_sqlite2, заменены на SQLITE_*. Порядок полей в pgoblin_db_conn и pgoblin_mode в db_sqlite2 выровнен до errmsg включительно. Включение поля errmsg в pgoblin_db_conn и pgoblin_mode в db_sqlite2. Правильная обработка ошибок от sqlite_create_function(). 2017-06-27 babolo Исправлены освобождения ресурсов. 2017-06-27 babolo Замена вызовов clear(), tarry(), endstream(), putcopy(), getcopy(), getstream(), getvalue() из pgoblin_dbases на pgoblin_db_*() из db.c диспетчера. 2017-06-26 babolo Прописаны все pgoblin_db_*() в pgoblin_dbms.h. Исправлены проверки наличия процедур в db.c. Добавлены еще несколько процедур pgoblin_db_*() в db.c. 2017-06-25 babolo Замена вызовов resinfo(), subinfo() и valinfo() из pgoblin_dbases на pgoblin_db_resinfo(), pgoblin_db_subinfo() и pgoblin_db_valinfo() соответственно. 2017-06-25 babolo Замена вызовов execute() из pgoblin_dbases на pgoblin_db_execute(). Преобразование t=>q в coercion() уточнено. Еще выверены ошибки. 2017-06-25 babolo Выверены ошибки и сообщения. В db_sqlite3 из типа pgoblin_mode удалено поле a. 2017-06-24 babolo В subinfo() BLIN_flag берется из 2го параметра вместо 3го. Если не нужен pq результат, то у execute() в качестве параметра res ставится NULL. Продолжена замена u_int32_t на BLIN_flag где соответствует. 2017-06-24 babolo Проведена инициализация flags у всех модулей базы. У всех баз можно execute() давать параметр rsv==NULL. В db_pgsql pgoblin_mode содержал лишнее поле db, удалено. Офрмление. 2017-06-22 babolo Процедуры диспетчера выписаны аккуратнее. Замена u_int32_t flags на BLIN_flag flags. Аккуратно выписаны ошибки в db_0. Выписаны, но не сверены ошибки в db_sqlite2. В db_sqlite2 pgoblin_mode ликвидировано поле a[]. Все значения теперь однозначно в mular. 2017-06-21 babolo В db_0 pgoblin_mode res переименован в rsv. В db_0 и db_pgsql новая процедура resv() для создания объектов типа pgoblin_mode. Удалено поле prepar из pgoblin_mode в db_pgsql. 2017-06-21 babolo Обращения к query() и prepare() из pgoblin_dbases сделаны через db.c диспетчер. Интерфейс shurecon() из pgoblin_dbases возвращен взад. Переименование нескольких параметров pgoblin_mode* из res в rsv. В db_pgsql флаг PGOBLIN_DB_PREPARE мог быть установлен незаконно. 2017-06-20 babolo Форматирование. 2017-06-19 babolo Замена malloc();bzero() на calloc() везде, где приемлемо. 2017-06-19 babolo Замена finish(..., PGOBLIN_CleaRes, ...) и finish(..., PGOBLIN_PFormed, ...) на clear(...). Вместо void* введен тип pgoblin_mode*, который есть void* в общем контексте и обозначает конкретный вид результата в модулях базы. Управляет контекстом макрос PGOBLIN_MODULE. Раньше эту роль пытался выполнять pgoblin_moded. Флаги PGOBLIN_STREAM* в db_sqlite2.c и db_sqlite3.c сдвинуты, что бы освободить место для становяимися стандартом флагов BLIN_MASK и PGOBLIN_DB_TYPE. В pgoblin_db_data типе в db_sqlite2.c и db_sqlite3.c убрано имя поля cell и в union добавлен sqlite_vm и sqlite3_stmt соответственно. Для обозначения наличия vm добавлен флаг PGOBLIN_VM. В db_sqlite2.c и db_sqlite3.c новая процедура resv() для создания объектов типа pgoblin_mode. Замена нескольких malloc();bzero() на calloc(). Пополнена отладочная выдача в style_0.c. 2017-06-15 babolo Замена в conn void* на pgoblin_moded, где оно указывало на типозависимый Pq. Во всех типозависимых структурах flags поставлен в начало. Биты в этих флагах переставлены, что бы освободить младшие 16 битов. Ликвидирован тип pgoblin_r. Форматирование. 2017-06-14 babolo Форматирование и переименование. 2017-06-13 babolo Новый файл db.c с заготовками обращений к DB. Перевод shurecon на обращение через db.c. В func.c не было *_COMPAT констант. 2017-06-12 babolo Изменение интерфейса (*shurecon)(). Ликвидированы макросы CC и RC, возврат к R_CONN и DBASE(). Ликвидирован неиспользющийся макрос OFFSETOF(). Описание struct pgoblin_jobs перемещено в pgoblin_job.h. Исправлены типы в printf() в pgoblin_VVdump(). 2017-06-12 babolo Во всех файлах, кроме style_0.c, выставлены возможно правильные параметры у макросов MARK_*. У команды #binselect помечено неявное использование Ij. Интерфейс coercion() поменялся - замена pgoblin_io* на pgoblin_nr. Интерфейс waitjob() поменялся - замена pgoblin_jobreg* на pgoblin_main и pgoblin_nr. Добавлены dump_ioreg(options, 0) где 0й регистр используется неявно. Замена в pgoblin_execute() rn[] на макросы RNOUT, RNCTL, RNIN, RNCON, RNJOB, RNSTY, которые проверяют неявное использование регистров. Сообщение об ошибке, если fork() происходит для команды, не заказавшей Ij. Форматирование. 2017-06-12 babolo Удален макрос PREG(), замена на pgoblin_breg() в pgoblin_htman(), этим описание #strselect стало правильным. Добавлено описание языка описания команд в descript.c. 2017-06-12 babolo Замена в основных ветках макросов PGOBLIN_REGSIZE, PGOBLIN_SYMREGS, PGOBLIN_BINREGS, PGOBLIN_ARG1S на их значения из структуры pgoblin. Добавлено в структуру pgoblin поле regsize. Замена типа нескольких полей структуры pgoblin на int16_t, u_int16_t. В pgoblin_verify() добавлены проверки и пополнены диагностики. 2017-06-12 babolo Проставлен бывший неявным PGOBLIN_JOB в flags описания команды #strselect. Удален макрос PGO_MAXR. В pgoblin_r регистр помещается только если используется. Из parser.c удалено использование макроса PREG(), замена на pgoblin_breg(). Форматирование. 2017-06-12 babolo Проставлены бывшие неявными PGOBLIN_JOB в flags описания команд. Проставлены Pj в ch описания команд со ставшим явным использованием регистра работ. Команда #strselect использует регистр работ неявно, но пока не отмечено. Выбор вида регистра заменен на процедуру pgoblin_getr() - выбор в ней. Упрощен выбор вида регистра из pgoblin_r - теперь можно v. Подробная отладочная выдача регистра из pgoblin_r только при наличии. Форматирование. 2017-06-10 babolo Начат файл func.c для вспомогательных функций. Туда перенесены pgoblin_breg(), pgoblin_cmdexe(). Из структуры pgoblin_syntax исключены поля clasnames и class, для использования за пределами определения новая процедура pgoblin_ctonr(), соответствующие clasnames и class перенесены в parser.c, исключен макрос _PGOBLIN_CHAR_CLASSES_. Перенос pgoblin_verify() в vdump.c. Новые битовые маски demask* в составе структуры pgoblin_main для отметки трейсинга регистров, и отметка. Изменение тип pgoblin_r со struct на union. Поправлены даты копилефтов. 2017-06-09 babolo Из pgoblin_r удалено поле r. Уточнена установка ch[] и ссылок на регистры pgoblin_r в начале pgoblin_execute(). 2017-06-09 babolo Из pgoblin_r удалено поле ch. Вместо него массив ch[] в pgoblin_execute(). Удалены макросы CH_OUT..CH_STY. Комментарии и форматирование. 2017-06-04 babolo В интерфейсе pgoblin_jobs переключена с pgoblin_r на pgoblin_nr wait(). Команды #wait, #eval, #close, #clear, #exit, #return, #begin, #end, #connect, #listen, #style, #copyin, #copyout, #echo, #file, #cat, #getstr, #getdir, #getcsv, #getarg, #getenv, #getget, #getpost, #getproc, #getspq, #perform, #binpresel, #select, #binselect, #strselect, #display, #pipe переключены с pgoblin_r на pgoblin_nr. Убрана вариативность обработки команд в зависимости от её интерфейса. Убрана вариативность описания команд. 2017-06-04 babolo Только форматирование. 2017-06-04 babolo Команда #job переключена с pgoblin_r на pgoblin_nr. В интерфейсе pgoblin_jobs переключена с pgoblin_r на pgoblin_nr open(). 2017-06-03 babolo Команда #fork переведена с pgoblin_r на pgoblin_nr. В интерфейсе pgoblin_jobs переключены с pgoblin_r на pgoblin_nr fork() и close(). 2017-06-03 babolo Команда #exec переключена с pgoblin_r на pgoblin_nr. В интерфейсе pgoblin_jobs переключена с pgoblin_r на pgoblin_nr exec(). 2017-06-03 babolo Поставлен забытый флаг TMP у listen и getdir. В pgoblin_cmdexe() исправлен выбор по TMP. Перевод #getjob с pgoblin_r на pgoblin_nr. 2017-06-03 babolo В pgoblin_r union оставлен без названия. 2017-06-03 babolo Переименование компонента pgoblin_r.c в pgoblin_r.ch. Найдена единственная команда, использующая pgoblin_r.ch - pgoblin_eval(), но используется только в отладочной выдаче. 2017-06-03 babolo Зачистка мусора в pgoblin_cmdexe(). Теперь непрописанные регистры pgoblin_r не ссылаются на [0]. 2017-06-03 babolo Только форматирование. 2017-06-03 babolo Добавлено описание флагов в описании команд. Перевод pgoblin_cmdexe() на использование pgoblin_nr*. Теперь dump_ioreg() неинициализированные регистры не показывает. 2017-06-03 babolo Подготовка к переключению команд с pgoblin_r на pgoblin_nr. 2017-06-01 babolo Передача в shurecon() options и номера регистра. Частичная замена доступа через pgoblin_r на доступ по номеру регистра. 2017-06-01 babolo Замена типа имени типа u_nreg_t на pgoblin_nr. 2017-06-01 babolo Все init() и fini() збавились от второго параметра. Специальный тип для номера регистра. 2017-05-31 babolo Теперь при заданной DBMS по умолчанию всем conn регистрам устанавливаются отладочные флаги. 2017-05-29 babolo Еще немного избавления от типа pgoblin_r. 2017-05-29 babolo Замена в cleareg() и propush() pgoblin_io параметра на номер регистра. 2017-05-28 babolo Удалён неиспользуемый макрос IO_CPY. 2017-05-27 babolo Исправлены неопределенные MARK_R_CONN_*. Часть функционала перенесена из -T в новый флаг -=. В том же флаге -= намечен будущий способ отладки. Пополнен и исправлен sqlkeywords в соответствии с PostgreSQL 9.6. 2017-05-23 babolo Полнее дамп регистров. 2016-06-15 babolo Версия 2.55 Расширен список ошибок SQLite3 соответственно версии SQLite 3.13. Использование sqlite3_close_v2() вместо sqlite3_close(). Проверка на NULL текст в coercion(). Не вызывался finish() для регистров базы. 2016-06-14 babolo Версия 2.54 Добавлен тест в pgsql версию, аналогичный добавленным тестам SQLite версий. 2016-06-13 babolo Неправильно вводилась единственная колонка NULL в #copyin SQLite*. Тесты на ошибку выше. Комменты. 2016-06-13 babolo Ошибочно использовалось все слово pgoblin_cmd вместо только кода команды из него. 2016-02-22 babolo Подготовка к перенумерации полей. Замена malloc() + bzero() на calloc(). Форматирование. Комментарии. 2015-08-01 babolo Действие Cb поделено на Cl и Cb с тем, что бы впоследствии исполбзовать Cb в состоянии id в стиле pgo0. 2015-08-01 babolo Использование ifBLIN_QX вместо fprintf( stderr, ... Форматирование. 2015-07-26 babolo Исправлен pn[][] в style_pgo0 после изменений в предыдущем коммите. Добавлено новое состояние id для будущей перенумераци в pgo0. Ликвидировано сокращение Cl. Заметка в TODO. 2015-07-23 babolo Использование offset в вызове blin_statebody() для смещения по выводимому тексту при отладке автомата. Вывод s_num в blin_statebody() стиля pgo0. Подготовка к введению перенумерации полей в стиле pgo0 - символ =. 2015-07-22 babolo Исправлены тесты для лучшего обнаружения ошибок. Добавлены тесты на определения областей стиля pgo0 без пробела. 2015-07-22 babolo Теперь пробел перед обозначением области в стиле pgo0 не обязятелен. 2015-07-22 babolo Для будущей возможности использовать без пробела обозначения областей в стиле pgo0 переставлен порядок выполнения действий из синтаксической таблицы automa[][]. В стиле pgo0 не было предусмотрено окончание с синтаксической ошибкой. 2015-07-22 babolo Исправлено продвижение по выводимому тексту в blin_state*. Форматирование, комментарии. 2015-07-13 babolo Созданы новые файлы pgoblin_dbms.h, pgoblin_job.h, pgoblin_style.h. Туда перенесены соответствующие определения из pgoblin.h без изменений. В style_0 сделан контроль длинны создаваемого вывода. Поправлены даты в копилефтах. Комментарии. 2015-07-13 babolo Наличие обоих макросов: ALIGN8() и ALIGN16() сочтено избыточным. 2015-07-12 babolo В shurecon() могут быть строки NULL. В README закомментировано описание ошибки старых версий PostgreSQL. 2015-07-12 babolo Добавлены новые ключевые слова из PostgreSQL 9.4.4. Усилен тип CONCURRENTLY согласно PostgreSQL 9.4.4. Исправлено сравнение типов. К макросам типов ключевых слов добавлены в комментарии обозначения от PostgreSQL. 2014-09-26 babolo Сообщения программ о себе приведены к единому виду. 2014-09-08 babolo Версия 2.53 Перекомпонован Makefile. Обновлены зависимости. В pgoblin_getarg() было лишнее разыменование. Удален лишний конец строки в дебаге. 2014-09-07 babolo Неправильно вводился самостоятельный аргумент как аргумент флага. Соглаование типов. 2014-09-07 babolo Согласование типов. Комментарии. Форматирование. 2014-09-07 babolo На некоторых путях были неинициализированные переменные. 2014-09-07 babolo Исправлены коды команд в коммнтариях. Форматирование. 2014-09-04 babolo Пополнен Makefile для отладки. Перенос pgoblin_default к месту присваивания. 2014-09-03 babolo Переход на babolo-parser:3.03. Пополнен TODO. Согласование типов. Исправлен текст к манам. Форматирование. 2014-09-03 babolo Переход на babolo-libmake:3.09, mife:4.05. Старые правки на тему getopt в pgoblin.c. Правка текстов. Немного форматирования. 2013-10-16 babolo Версия 2.52 Замечания перенесены из Makefile в TODO. Поправлены зависимости. Убраны дублирующие babolo-libmake команды из Makefile. Замена идентификаторов flag на flags. Переход на mife.4 без совместимости с mife.3. 2013-08-03 babolo Версия 2.51 Был лишний запрос kevent() про детей. 2013-04-07 babolo Версия 2.50 Текстом для #eval не мог быть NULL. Тесты на это. 2013-04-06 babolo Версия 2.49 Изменение в 2.48 признано неправильным, не влияющим сколько нибудь заметно, и удалено, но тесты на тему #wait без детей, которые, видимо, и без того удовлетворялись, оставлены. Стиль 0 теперь может возвращать NULL результат, и это правильно и занесено в тесты и в документацию. Команды #file и #cat теперь позволяют NULL имя файла, что бы отложить ошибку до (возможного) использования (не)открытого файла, добавлено в тесты. Команды #file и #cat в отладочный вывод теперь сообщают код ошибки на выходе. 2013-04-06 babolo Версия 2.48 Теперь отсутствие детей для #wait не ошибка. 2013-03-02 babolo Версия 2.47 Радикально переработана waitjob() из-за возможности бесконечного ожидания окончившегося ребенка. Удален 1 ворнинг в cmd_select. Удалены 2 ворнинга в style_pgo0. При закрытии регистра работ не закрывался дескриптор kqueue. Изменения в R_JOB->pids в execute помечены как изменения R_JOB. 2013-02-24 babolo Версия 2.46 Обработка ошибок waitpid() - err() вместо errx(). 2013-02-24 babolo Версия 2.45 Обработка каждого неудачного exec(). Обработка ошибок babolo_openopt() - err() вместо errx(). Форматирование. 2013-02-05 babolo Порядок инклудов в тексте согласован с семантическим порядком. 2011-12-10 babolo Версия 2.44 Изменения в babolo-libmake - добавлен -lbabolo-libmake для сборки. Поправлены копилефты. Добавлены и поправлены заметки и комментарии. 2010-05-06 babolo Версия 2.43 Результат от pgsql select представлял NULL как ''. Тесты на это у всех 3х баз. Обработка ошибки от pgsql prepare() была неправильной. 2010-04-12 babolo Версия 2.42 В regexp() обоих sqlite была ошибка в размере выделяемой под preg памяти. В getcopy() обоих sqlite была ошибка в вычислении размера буфера под очередную строку COPY. Флаг DEBUG ни на что не влиял, теперь он убран из трансляции и под него помещена замена mallocов на memcheck (и dmalloc под комментарием). В putcopy() sqlite2 BLIN_STATEBODY() теперь отслеживается p. Теперь пропажа conn->vm в обоих sqlite сопровождается сообщением на уровне 5. В finish() sqlite3 в варианте PGOBLIN_PFormed добавлена диагностика на уровне 5. Переименован pgoblin_styles.free в pgoblin_styles.clear для исключения интерференции с dmalloc. В группе тестов 13 всех баз для исключения гонок на результат переставлены действия под /bin/sh -c. В sqlite3 были недостоверные тексты сообщений об ощибках в shurecon(). Форматирование. 2010-01-23 babolo Версия 2.41 Наконец отловлена ошибка в style_pgo0 - не проверялись границы массива оформлений. Проверка результата mular_getix() на NULL со слабым сообщением. Такого быть не может, если pgoblin без ошибок :-)) Но было. 2010-01-20 babolo Версия 2.40 Опция -b от прошлого релиза не работала. Опция -T0 в прошлом релизе не работала. Варнингом меньше. Мелкая опечатка в описании. 2010-01-19 babolo Версия 2.39 Новая команда #getcsv. В tools/regress тесты новой команды. Новый флаг PGOBLIN_COPEND_NOGEN и опция -b. Попытка уменьшить warningи в FreeBSD 8. В README описание ошибки в реализации DELETE ... RETURNING ... в PostgreSQL. Теперь diff из tools/regress не пропадает в /dev/null. 2009-11-17 babolo Версия 2.38 Несовместимость #echo с PGOBLIN_BINPARM в CTL оказалась сложнее, чем представлялось в прошлом релизе. Исправлено, добавлены тесты на это. Слегка сокращен макрос DUMPIOREGS. 2009-11-17 babolo Версия 2.37 У #echo была несовместимость с PGOBLIN_BINPARM в CTL. В cmd_select массовое уточнение сообщений об ошибках. Не собирался с PostgreSQL 7.4. Для сс 2.9X был неприемлемый синтаксис в execute. Ошибка из parser не распространялась. Исправлен комментарий к #clear. 2009-11-05 babolo Версия 2.36 Решение об использовании только первой строки параметров в #select было ошибочным. Исправлено, тесты исправлены и добавлены. В 20й секции тестов был лишний #select с #display - не давал он ничего. Автодокументатор не понимал варианты входного вида данных. Служебные процедуры pgoblin_verify() и pgoblin_htman() стали приватными. Тесты, где SELECT без ORDER BY, зачастую некорректны. В 20й секции тестов расставлены ORDER BY. 2009-11-04 babolo Версия 2.35 В descript поменялось только форматирование и комментарий к #perform. Форматирование поменялось из-за вариаций CTL в #perform. Поиск table() от style_0 стал проще. Теперь при установке флагов в IO, относящихся к Pq, сначала проверяется наличие ->pq, поскольку не все интерфейсы возвращают указатель на результат пустого #select, может, и в других ситуациях. Теперь get() от style_0 возвращает NULL вместо "". Если не удается открыть mife в coercion(), протираются соответствующие флаги. Уточнена диагностика по лишним флагам отсутствующих видов в IO регистрах. 2009-11-04 babolo Команда #perform - первая, воспользовавшаяся давно сделанным механизмом выбора цели в приведении вида данных, принимает Pt или Pq в CTL, если Pq, то исполняет построчно (вместо всего сразу, когда в Pt). Приведение вида Pq в Pt теперь делается процедурой table интерфейса style_0 вместо собственной копии в coercion(). Так же используется table в #perform. В style_0 процедура table приспособлена для приведения вида Pq в Pt в IO. Для одного из использований в #perform добавлена возможность построчного приведения. Изменились интерфейсы pgoblin_jobs и pgoblin_styles - добавлены флаги. Изменился интерфейс pgoblin_dbases - флаги переставлены в самое начало типа. На варианты исполнения #perform добавлены тесты. Комментарии, форматирование, описания, сообщения об ошибках. 2009-11-04 babolo Версия 2.34 Добавлены запросы PGOBLIN_ResMess, PGOBLIN_CleaRes, PGOBLIN_FrMess. PGOBLIN_ResMess используется в #perform. В интерфейсе db изменился первый параметр у notifies() и tarry(), теперь там регистр R_CONN целиком. В интерфейсе db_pgsql изменился тип res с PGconn* на специальный тип pgoblin_res*, там кроме PGconn* ссылка на R_CONN, имя PREPAREd оператора и флаги. При ENOMEM возвращается EX_OSERR вместо EX_UNAVAILABLE. Проверка, что db не NULL в db_pgsql интерфейсе. Форматирование, комментарии, описание в README. 2009-10-28 babolo Версия 2.33 #perform и #select с параметрами в Pq за параметрами лезли в базу из CONN вместо базы от Pq. Новые тесты на эту ситуацию. В #perform и #select не проверялись результаты mallocов val и len. Мелкие исправления в диагностике. 2009-10-27 babolo Версия 2.32 В execute Pq из CTL0 Pt строится теперь при помощи db_0 execute(), в связи с этим pgoblin_db_0_ctl(), делавшая это ранее, изничтожена. Более нет нужды светить pgoblin_db_0_data снаружи от db_0, спрятано. Ошибки в db_0 execute(): ссылка db0->llen занулялась после malloc() и и элементы массива считались с 1 вместо 0. 2009-10-27 babolo Добавлены README и TODO. Изменение интерфейса db: вместо многочисленных free* & clear работает finish() с переключателем. Все (cond, kind) переключатели интерфейса внесены в один enum pgoblin_cmdres. У getcopy() слегка поменялся интерфейс, теперь результат <0 всегда обозначает ошибку, в pgoblin_copyout теперь при ошибке выдается диагноз. Внутримодульные функции db_0 попереименованы покороче, что бы не перекрывались с внешними именами pgoblin_*. За счет приведения типа интерфейсных функций намного аккуратнее стали интерфейсные блоки db модулей. Аккуратнее сделано освобождение памяти в *->finish(). У db_0 появилась новая интерфейсная функция execute(), создает Pq с одной строкой из входных параметров, использована в coercion() для сокрытия внутренностей db_0. db_sqlite2 зацикливалась при execute #selectа с более, чем одной строкой параметров. В db_sqlite3 длинны параметров считаются по иному, чем в db_sqlite2. В db_sqlite2 и db_sqlite3 перенесен наверх finish() из-за использования функций из него выше. Тесты на исполнение с параметрами. Комментарии, форматирование, сообщения. 2009-10-26 babolo Изменение интерфейса db: exec() стал query(), добавлены prepare() и execute(), finish() стал с переключателем и флагами, туда вольются разные *free*() и подобное. Внутримодульные функции попереименованы покороче, что бы не перекрывались с внешними именами pgoblin_*. Теперь #perform и #select понимают Pq на IN, умеют и по отдельности готовить, а потом выполнять, или готовить при выполнении, в зависимости от наличия prepare() в интерфейсе. Отметки MARK_* теперь снабжены ;;, так же там, где по синтаксису не полагалось ;;, поставлены в комментариях. Сообщения, комментарии, форматирование. 2009-10-25 babolo Техническая, но очень массовая замена структурных комментариев, выделяющих операции изменения регистров, на макросы (пока пустые). В cmd_select текстовые константы для эмуляции #binselect вынесены в #define. В db_sqlite2 окончательно изничтожен вариант с использованием собственного оператора COPY. В pgoblin_keycodes() косметические изменения - номер регистра, на который извлекается список keywords, задан константой IOREGFOR вместо числа и отправляестя в команду методом из pgoblin.h вместо pgob.h. Комментарии, форматирование. 2009-10-24 babolo Версия 2.31 Изменился интерфейс db, вместо nfields(), ntuples(), getisnull(), getlength() и последующих всего 3 интерфейсных функции *info() с первым аргументом, выбирающим конкретную функцию. В db_pgsql запихнуто несколько функций через интерфейс с переключателем. Коредампил #job, если за именем job не следовали параметры. В pgoblin_syntax теперь включены массивы перекодировки символов для parser и строки с названиями классов символов (используется при отладке). В pgoblin_syntax теперь включены cmds.lexor и sqlkeywords.lexor. Теперь coercomp() не тормозит преобразование, если нет требования на приведение к виду (когда требование ch пусто). Теперь execute() пользуется pgm->flags вместо options->flags. Теперь требование Pq в 0м IO регистре игнорируется. Теперь execute() при выходе протирает регистры только при установленном в pgm->flags бите PGOBLIN_CLEAR_ONEXIT. Это вновь введенный бит. pgoblin_verify() и pgoblin_htman() перенесены в pgoblin.c, что бы не попали в библиотеку. Из публичных объявнений обе процедуры убраны. Почему то парсер не обнулял созданную pgm перед заполнением. Константа PGO_MAXR теперь определяется из PGOBLIN_SYMREGS. Новая процедура pgoblin_keycodes() вызывается по -T2, сверяет список зарезервированных слов с СУБД. Теперь процедуры, вызываемые по -T возвращают целое, 0 при успехе. В sqlkeywords отсутствовала буква _. Откорректирован список зарезервированных слов с PostgreSQL 8.4. Форматирование. 2009-10-23 babolo Версия 2.30 Определение pgoblin_db_0_data перенесено из db_0 в pgob.h. Появились преобразования ... -> Pt -> Pq в db_0 с 1x1 результатом Pq. Тесты на это. Константа Cc для PGOBLIN_MIFEDES стала Cm. pgoblin_db_0_ctl() умеет сам работать с NULL, потому эта проверка перед вызовом выброшена, теперь IO_CTL при приведении к Pq может быть с 0 колонок. Комментарии, форматирование, мелкое вылизывание. 2009-10-21 babolo Версия 2.29 В pgoblin_echo() была путаница в signedness. В db_sqlite2 и db_sqlite3 унифицированы флаги, управляюющие pgoblin_sqlite*_quote(). Добавлены функции quote_html() и gettimeofday() к sqlite2 и sqlite3. 2009-10-03 babolo Версия 2.28 Теперь #close может также закрывать стиль. Добавлены тесты на очистку стиля #close и #clear. В тесте tools/regress убрана лишняя пустая команда, поскольку в 2.24 была исправлена ошибка "конец текста до конца литерала". 2009-09-28 babolo Версия 2.27 Теперь в команде #clear можно указать OUT регистр, если не 0 и там нет Pm, то будет очищен. Рядом с номером команды на 3м уровне отладки показаны статический и динамический уровни вложенности. Не воспринимались команды в конце текста без разделителя. На это добавлены тесты. Для крайнего случая - команда без параметра впритык к концу в автомате Ci отдублировано в Cj, что бы они были по разную сторону от Cl. 2009-08-03 babolo Версия 2.26 В #copyin в обоих SQLite не вводился \N в последней колонке. Добавлены тесты на это. В SQLite3 не было отмечено действие Cu для отладочной печати. 2009-08-02 babolo Версия 2.25 Повышена толерантность pgoblin к реакции PostgreSQL на пустой запрос в #perform, #select, #copyin и #copyout. Проверка пустых #perform и #select на всех СУБД. #copyin и #copyout надо подумать, сейчас проверки нет. 2009-08-02 babolo Версия 2.24 Долго жившая проблема, когда встречался физический конец текста до логического конца литерала, решена созданием любого количества концов литерала на логическом конце текста - важно для вложенных литералов. Добавлены тесты на это. Время собирать камни - начата унификация тестов для разных СУБД. С этой целью определен макрос REGEX(), который порождает нужные конструкции для регулярных выражений, и макрос DBMS, который им управляет. В тестах для pgsql использовался тот факт, что в #copy{in|out} можно поместить команды, которые в SQLite надо помещать перед этой командой в #perform. В рамках унификации приведено в соответствие с SQLite, осталось по прежнему в тестах, которые только для pgsql. 2009-07-31 babolo Версия 2.23 У обоих SQLite преобразование COPY плохо проверяло входное выражение и не работало на имени таблицы в двойных кавычках. Добавлены тесты на это в интерфейсы всех баз. 2009-07-14 babolo Версия 2.22 Новый тест на pgo0: tools/regress. В pgoblin_echo() аккуратнее отмечен диапазон строк, меняющий регистры. Теперь db_0 создает Pq заданной размерности, в CTL количество строк и количество колонок. PGOBLIN_PROGSIZE увеличен вдвое. В style_pgo0 работают правильно флаги UU и DD. Комментарии и копилефты. 2009-07-11 babolo Теперь db_0 может в #select создавать полноценные Pq (полностью нулевые). При освобождении Pq в db_0 теперь все указатели после free() зануляются. У db_0 появилась процедура finish(). В style_pgo0 PGOBLIN_NTBSZMK теперь автоматически согласована с PGOBLIN_NTBSIZE. В style_pgo0:pgoblin_style_tbl() m == 0 заменен на 0. В db_0:pgoblin_shurecon() излишне велика была отметка об изменении R_CONN. Добавлена отладочная и диагностическая печать. В descript.c только поправлено форматирование без значимых изменений. Добавлены комментарии. 2009-07-09 babolo Версия 2.21 В db_sqlite2 и db_sqlite3 была ошибка в приеме \\ COPY in. В tools/regres* добавлена проверка на эту тему. Символы SYMREGS и BINREGS переименованы в PGOBLIN_SYMREGS и PGOBLIN_BINREGS. В pgoblin_syntax.p[] добавлено поле val. В pgoblin_VVdump() добавлена распечатка этого поля. descript.c наполнен комментариями для автоматической обработки. Новый файл tools/commands.pgoblin для сбора этих комментариев в страницу описания команд. pgoblin.c наполнен комментариями для автоматической обработки. Новый файл tools/invoking.pgoblin для сбора этих комментариев в страницу описания флагов. В tools/Makefile комментарием включено описание формата комментариев для автоматического сбора документации. Макросы DBASE(), JOBE() и STYLS() перенесены из pgoblin.h назад в pgob.h, в связи с чем pgoblin.c перестал быть чистым клиентом - включает pgob.h. Надо будет подумать, как спрятать внутренности. Новый флаг -T для выдачи внутренних структур для документации и процедура pgoblin_htman() для реализации этого. 2009-07-07 babolo Версия 2.20 Интерфейс с SQLite3 был неправильный, что проявилось с SQLite3.6. Ко всем init() и fini() добавлен параметр flags. В декодер ошибок добавлена ошибка SQLITE_LOCKED_SHAREDCACHE. Теперь при открытии SQLite3 базы включается выдача расширенных кодов ошибок. Не проверялись результаты init(), теперь при неудаче выдается сообщение и соответствующий модуль деинициализируется. Результаты fini() не проверяются, как и не проверялись. В FreeBSD 4 нет кода ошибки EDOOFUS, в качестве обхода используется EINVAL. tools/regres для 3х тестов использует режимы standard_conforming_strings=on и backslash_quote=off, с PostgreSQL 7.4 тест не проходит. 2009-07-07 babolo Версия 2.19 В db_sqlite2 добавлены функции quote_literal(), quote_ident(), quote_ident_always(), как и в db_sqlite3. В tools/regres4 тесты добавлены. В db_sqlite3 в строке 874 ex = sqlite3_step(conn->vm); ошибка, похже, в sqlite3 библиотеке. Происходит exit(1) вместо возврата на определенном задании. Надежно. В descript для "job" был помечен IN Pm, зачем, не помню. До выяснения убрал. В job_local:local_exec() были устаревшие следы в ex от бывшего форка там. parser теперь устанавливает errno, где раньше не устанавливал. 2009-05-07 babolo Версия 2.18 #exit не брал код возврата из литерала. Не транслировалось без какой либо из баз. Неправильный комментарий у макроса CATfl. В макрос ifTEST внесен последующий восклицательный знак. В тесты для PosgreSQL добавлена 19 секция по аналогии с тестами для SQLite3. нумерация остальных секций у теста для PosgreSQL сдвинулась и соответствует тестам для SQLite3. Во все тесты добавлена 21 секция с тестами на #exit с ненулевым кодом возврата. 2009-05-06 babolo Версия 2.17 Не вводился литерал пустая строка. Теперь синтаксически допустим литерал NULL. Все команды, кому неприемлемо, ругаются самостоятельно. Теперь #exit понимает код возврата из необязательного литерала, без литерала ведет себя по прежнему (EX_OK). Код команды поменялся. В интерфейс модулей добавлены init() и fini(). Старый init() из JOBS стал open(). В db_sqlite3 добавлены нововведения из 3.6 в случае наличия. Форматирование. 2009-01-09 babolo Версия 2.16 Возможность собирать без db_pgsql, db_sqlite2, db_sqlite3. Вместе с babolo-libmake-2.05 возможность транслировать на amd64. Приспособлена к трансляции в FreeBSD 7. Теперь pgoblin_strsel() и pgoblin_binsel() правильно себя идентифицируют при уровне отладки 4. Подробная диагностика в pgoblin_eval() о состоянии после pgoblin_execute() при ошибке. В pgoblin_eval() не освобождалась память из под программы для pgoblin_execute(). В db_0:pgoblin_shurecon() проверяется наличие ссылки на базу перед использованием. В db_0:pgoblin_query(), db_0:pgoblin_ntuples(), db_0:pgoblin_nfields() проверяется наличи ссылки на результат перед использованием. Для правильной сборки теперь _pgoblin_sqlite3_quote() и __pgoblin_sqlite3_regexp() теперь публичные. Используется инициализация от SQLite 3.6, если есть. В style_pgo0:pgoblin_style_parse() убрано внутреннее определение i, экранирующее внешнее, в обработке Cm в автомате. В style_pgo0 константой ENTITY_LETTERS заменено число, в pgoblin_style_parse(), pgoblin_style_dump() и pgoblin_style_tbl() исправленя связанная с этой константой ошибка off by one. В gcc 3.4.6 (FreeBSD 6, может, и другие) обнаружена ошибка, из-за которой в style_pgo0 в pgoblin_style_dump(), pgoblin_style_get() и dsig() пришлось делать обход. В тестах не хватало команды #wait, из-за чего были гонки и непредсказуемые результаты тестов. 2008-06-25 babolo Версия 2.15 Не использовался регистр базы у #exit и #return. Скорее всего потерялся при больбе с "unexpected EOF on client connection", сейчас это предупреждение опять есть. Скорее всего, полностью его извести, учитывая регистр базы, невозможно, но можно подумать над аккуратным уменьшением. В #begin и #end неправильно при отладке выводился код завершения. У pgsql.exec теперь более подробная диагностика при неработе PQexec(). У квотера sqlite3 добавлены новые возможности, пока не используемые. К диагностическому выводу регистров добавлены флаги, кроме регистров ввода- вывода, где они были и раньше. При установке нового коннекта к базе на него не распространялись отладочные флаги. Форматирование, комментарии. 2008-06-05 babolo Версия 2.14 Несоблюдение области значимости pgoblin_jobreg.host и pgoblin_conn.dbname. В рассчете на будущую библиотеку добавлено по одному подчеркиванию в начало названий к реализациям дополнительных функций SQLite*. Возврат значений флагов PGOBLIN_INT64TIME..PGOBLIN_CLOSECONN на прежнее (как в позапрошлом издании) место и выбор для PGOBLIN_ERROR_SENS* нового. Оформление и прочая вкусовщина. 2008-05-31 babolo Возможность распространения ошибок от детей (управляется PGOBLIN_ERROR_SENSOR) и немедленной реакции на обнаружение ошибки ребенка (управляется PGOBLIN_ERROR_SENSIB). Теперь управляющий текст команды #job после идентификатора модуля разбирается пословно (argc, argv) и обрабатываются аналогично getopt(). В интерфейс модуля работ добавлена процедура init(). Новый флаг PGOBLIN_INITED для отметки процедурой init() модуля работ. В cmds был ненужный инклуд. В интерфейсы sqlite2 и sqlite3 добавлена weak реализация SQL процедуры regexp(). В интерфейс sqlite3 добавлена weak процедура для реализации SQL процедур quote_literal(), quote_ident(), quote_ident_always(). quote_ident() сделана максимально точно по PostgreSQL (для чего из 8.3.1 извлечен полный список токенов, см. sqlkeywords), quote_literal() соответствует стандарту, потому отличается от вариантов PostgreSQL всех сейчас существующих версий, но соответствует sqlite3, в рамках которой и должна применяться. quote_ident_always() отличается от quote_ident() тем, что результат всегда в двойных кавычках, даже если quote_ident() не кавычит. Тесты на добавленное в двух предыдущих пунктах. pgoblin_init() избавился от одного параметра и не инициализирует IO_RG0.mife. Изменилась отладочная распечатка при подготовке номеров регистров команде. По опции -V теперь выдается расшифровка кодов заполнения регистров. Ошибка синтаксиса - если первая строка программы была пустая, то вторая отправлялась в мусор. Добавлены тесты на эту ошибку. Теперь пустая программа считается правильной и не вызывает ошибки. Предупреждение на уровне отладки 2 выдается, однако. Зарезервированы флаги -z и -Z для управления реакциями на ошибку. В запутанном порядке подготовки входных файлов была ошибка - не оформлялся конец списка. Значения флагов PGOBLIN_INT64TIME, PGOBLIN_FLOATTIME, PGOBLIN_NEEDINTIME и PGOBLIN_CLOSECONN променялись в пользу PGOBLIN_ERROR_SENSOR и PGOBLIN_ERROR_SENSIB, которые будут едины по всем видам регистров, как и BLINflagи. Названия видов регистров теперь одной длинны - короткие дополнены пробелами. Форматирование. 2008-05-28 babolo Версия 2.13 Удален за ненадобностью def.m4. Отлажен #getdir с заданием в Pm. Тип pgoblin_job стал pgoblin_jobl. Новая команда #job. Задействовано ограничение параллельности в регистре работ. Тесты на ограничение параллельности и на #getdir с заданием в Pm. Комментарии. Форматирование. 2008-05-26 babolo Из сборки убран флаг -pthread. Немного комментариев к структуре pgoblin_dir. Новые макросы DBASE(), JOBE() и STYLS(), за счет них ликвидированы макросы STYLESET, GLOBALDBSET, LOCALDBSET() и присвояния D(), S(), DBSET. Появился другой вариант #getdir с заданием файлов из IN->pq, не проверено. 2008-05-25 babolo Версия 2.12 Отлажено для FreeBSD 7. 2008-05-25 babolo wait4() менял содержимое status несмотря на то, что запрошенный процесс не имел что отдать в status (FreeBSD 7). Ликвидированы жалобы компилятора на разнознаковость. В первые тесты 13го раздела тестов введена небольшая задержка, что бы увеличить вероятность прохождения теста, рассчитывающего на то, что дети сделают execve() до опроса procfs. Начало 17й группы тестов перестроено таким образом, что бы формальное прохождение теста не зависело от размара каталога. Там же было неправильное имя у тестового каталога, совпадало с именем базы для sqlite*. 2008-05-24 babolo Замена getopt() на аналогичный комплект из babolo-parser. Добавлены флаги -r и -R для парсенья слов среди аргументов. Добавлен бит PGOBLIN_ARGVSTACK, управляющий совместимостью #getarg с предыдущей версией. В usage() теперь изображаются подключенные модули. Отсутсвие break в caseах switch откомментировано в дружественном lint стиле. Из pgoblin_init() удалены закоментаренные ранее куски (ненужние куски инициализации регистров ввода/вывода, работ, стиля. В тестах первым аргументом поставлен -r для парсенья недопарсенных ядром (изменения с FreeBSD 6) параметров. 2008-05-15 babolo Не транслировался на FreeBSD 4 из-за изменений в инклудах. 2008-05-14 babolo Согласована знаковость/беззнаковость у переменных и параметров. Поправлен порядок и состав инклудов. В style_pgo0 несколько левых частей присваивания не понравились GNU C 4. НЕ отработана подлянка по обработке первого параметра из #! скрипта. Уверенности в работоспособности всего вместе на FreeBSD 7 немного - тесты не проходят из-за изменения ожидаемых размеров каталогов и из-за подлянки. 2008-05-13 babolo Версия 2.11 Изменились идентификаторы модулей. Сейчас в id и name одинаковые версии, со временем во внешних модулях разойдутся. Запущена команда #getdir. В pgoblin_connect() изменился разбор строки параметра. В db_pgsql проверяется наличие параметров к pgoblin_connect() и если их нет, то используется PQsetdbLogin() вместо PQconnectdb(). В main() проверяется единственность и правильность параметра -B. Тесты #getdir в regres, regres4, regres8. 2008-05-11 babolo Подключена sqlite3. Сделана пустышка #getdir. В db_sqlite2 убран макрос ERRMSG() и упрощен ERRMSX(). В db_sqlite2 sqle[] был внешним. В db_sqlite2 добавлено множество недостающих проверок. В db_sqlite2 неправильно обрабатывалась conn->semi - мог нахватать мусора. Теперь pgoblin.h может использоваться в C++. Новый тест regres8 для sqlite3, почти полностью повторяет тест для sqlite2. В regres4 добавлено несколько #begin #end для ускорения. Небольшие изменения в сообщениях. Форматирование. 2008-04-26 babolo Версия 2,10 повторно. Была ссылка на удаленный файл README.ru 2008-04-26 babolo Версия 2,10 Просто издание, никаких изменений. 2008-04-21 babolo job_local неправомерно использовал флаг PGOBLIN_FORKED вместо PGOBLIN_TOFORK, они имеют одинаковое значение. Добавлен флаг PGOBLIN_TVFORK на будущее использование vfork(). В execute.c раздумья по поводу vfork(), существенных изменений пока нет. Теперь COPY out принимается и переписывается, используя инструментарий для переписи COPY in, соответственно, при выборе другого варианта COPY in инструменты переписи запроса не прячутся. В regres4 возвратились оригинальные COPY out. В regres убрано несколько пробелов в конце строк - наследие давних времен. 2008-04-21 babolo Танцы вокруг db_sqlite2. Сделаны варианты COPY in с переписыванием, с fork()ом и с rfork()ом. Переписывание рабоотает надежно (возможны ошибки в парсере), но медленно. С rfork()ом работает быстро, но ненадежно, полность разворачивать все thread хозяйство не хочется, а управления потреблением памяти с обоих концов нет, иногда оба процесса мешают друг другу. С fork() надежно, но не работает :-).Не видно содержимое заполненной таблицы там, откуда заполнение вызвано. Управляется трансляция флагами PGOBLIN_SQLITE2_COPYIN_REWRITE и PGOBLIN_SQLITE2_COPYIN_THREAD в начале db_sqlite2.c. Оставлено в состоянии "надежно работает, то есть с переписью. 2008-04-20 babolo Манипуляции с db_sqlite2 в попытках запустить COPY, замена полноценного форка на rfork_thread() для сохранения памяти. Неудачно. 2008-04-19 babolo Про ширину последней, пустофй записи я погорячился, есть она. Обход через pgoblin_db_conn.ncol ликвидировал. Эксперимент с _exit() вместо exit() в COPY шт, похоже, неудачный. 2008-04-19 babolo В cmd_select добавлен вывод возвращенного числа записей при отладке. В regres4 возвращены тесты на #strselect. Все остальные изменения только в db_sqlite2: В флагах pgoblin_db_conn поменялись названия битов, ранее определявших состояние при COPY out, сейчас онри так же управляют потоковым SELECT. В pgoblin_db_conn добавлен ncol для помнить ширину предыдущей записи, поскольку при получении последней пустой записи sqlite2 ширину не предоставляет. Но если ни одной записи в потоке получено не будет, то увы, ширина будет 0 - брать негде. Логика получения следующей записи вынесена из pgoblin_getcopy() в отдельную get() с тем, что бы ее же использовать в новой pgoblin_getstream(). Теперь флаги pgoblin_db_conn очищаются по окончании управляемых ими операций. pgoblin_ntuples(), pgoblin_nfields(), pgoblin_isnull() теперь правильно работают с NULLевым результатом, pgoblin_length() и pgoblin_value() правильны были и до того (но не работали из-за ошибки в pgoblin_isnull(). Исправлен объявленный тип параметра pgoblin_finish(), из-за чего избавились от приведений внутри. В результате db_sqlite2 ПОЧТИ работает. Почти - из-за дурацкого COPY. 2008-04-19 babolo #strselect и #binselect используют интерфейс потокового запроса. #strselect и #binselect стали одной процедурой в cmd_select. В db_pgsql интерфейс потокового запроса реализован. Теперь к pgoblin_dbases.exec можно обращаться с NULLевым res, реализовано в db_pgsql и db_sqlite2. В db_sqlite2 поменялась pgoblin_db_data, теперь там возможен как вариант с mular_descriptor, так и с простым массивом. Теперь все знания о том, где какой интерфейс СУБД, есть ли база по по умолчанию и распространение базы по всем регистрам делаются только в pgoblin.c, до некоторой степени библиотеке все равно, только pgoblin_init() должен знать про размещение интерфейса db_pgsql. Флаги СУБД теперь при очистре регистра базы не распространяются, за исключением выбора СУБД, если задано в флагах. По этому поводу новый флаг в pgoblin_main - PGOBLIN_DEFAULDB. Определения номеров интерфейсов СУБД перенесено из pgob.h в pgoblin.h из-за использования в pgoblin.c - там не должно быть внутренностей. 2008-04-18 babolo Регистрация транзакции в pgoblin_begin() и pgoblin_end() сделана точнее. pgoblin_strsel() и pgoblin_binsel() используют запуск и остановку потока от будущего потокового интерфейса. В db_pgsql реализована используемая часть потокового интерфейса. На прохождении тестов не отразилось. 2008-04-17 babolo В интерфейсе db_ перестановки и объединение outcopy() и endcopy() в общую процедуру endstream(). freewarn() ликвидирована за ненадобностью. Константы PGOBLIN_CR_SSEL и PGOBLIN_CR_BSEL к универсализации интерфейса. В db_pgsql pgoblin_query() была ошибка с использованием miss[][]. 2008-04-17 babolo Тесты sqlite2 в отдельном файле tools/regres4. Новый флаг -B, которым можно заменить СУБД по умолчанию. Из интерфейса db_ выброшена процедура warn. Из pgoblin_init() убрано присвоение нулей тому, что и так 0 после bzero(). pgoblin_init() теперь не определяет СУБД по умолчанию, она прописывается в main(). Завершен COPY интерфейс, db_pgsql и db_sqlite2 с ним работают. В db_sqlite2 поменялся тип pgoblin_db_data, теперь в нем для cell используется mular_descriptor вместо массива ссылок. pgoblin_shurecon() теперь открывает db :memory:, исли имя не задано. В процедуры db_sqlite2 добавлены проверки наличия оттранслированной виртуальной машины. В процедуры db_sqlite2 добавлены закрытия виртуальной машины при ошибках. sqlite_get_table() оказалась крайне неудобной в использовании, вместо нее цикл sqlite_compile()+sqlite_step()+sqlite_finalize() в pgoblin_query() при cond==PGOBLIN_CR_TUPL. Была ошибка в использовании pipe[] после форка в pgoblin_query() при cond==PGOBLIN_CR_IN. Была ошибка в продвижении по запросу в pgoblin_query() при cond==PGOBLIN_CR_IN. Единая точка выхода у форкнутого в pgoblin_query() при cond==PGOBLIN_CR_IN процесса. pgoblin_query() при cond==PGOBLIN_CR_IN ставил неправильный флаг в conn. В pgoblin_getcopy() проверяются условия досрочного окончания COPY. В выводе COPY значений не было замены NULL на \N. Завершена pgoblin_putcopy() в db_sqlite2. pgoblin_endcopy() начата и окончена. Тесты с pgsql проходят, с sqlite2 еще не все. 2008-04-16 babolo Поменялись типы первых параметров putcopy() и endcopy() DB интерфейса, вместо pgoblin_conn.conn теперь pgoblin_conn. В cmd_copy.c форматирование и визуальная оптимизация pgoblin_copyin(). В db_0.c вместо нереализованных функций стоит процедура, выдающая ошибку. В db_pgsql.c в связи со сменой интерфейса новая процедура pgoblin_putcopy(). В db_sqlite2.c форматирование и визуальная оптимизация, новые макросы ERRMSG() и ERRMSX(). В db_sqlite2.c в pgoblin_query() дописана, но не проверена веточка PGOBLIN_CR_IN. Ошибка вида !X&Y -> !(X&Y). В db_sqlite2.c в pgoblin_getcopy() появилась проверка флага PGOBLIN_COPYOUT. Начата pgoblin_putcopy() в db_sqlite2.c. Форматирование. 2008-04-16 babolo COPY out в sqlite2 выглядит работающим. Форматирование. 2008-04-16 babolo Добавлены тесты на !PGOBLIN_OLDSTYLE. Убраны варианты из определения pgoblin_io.pq. В pgoblin_dbases добавлен outcopy и изменен тип первого параметра getcopy, вместо pgoblin_conn.conn теперь pgoblin_conn. В pgoblin.c возвращено обнуление pgm. В pgoblin.c теперь инициализируются BLIN флаги регистров согласно флагам pgoblin_main.flags. Из pgoblin_init() инициализация предварительным значением BLIN флагов убрана. pgoblin_copyout() возможно стал базонезависимым, пока проверена работа только с pgsql. В db_pgsql.c pgoblin_query() стал правильнее реагировать на грубые ошибки в PQexec(). В db_pgsql.c добавлена процедура pgoblin_outcopy() для реализации независимого COPY интерфейса. В db_sqlite2.c добавлены перекодировки ошибок SQLITE_* в errno.h ошибки. В db_sqlite2.c добавлена процедура перекодировки SQLITE_* ошибок в текст. Продолжена, но не окончена реализация COPY машины sqlite2. 2008-04-15 babolo В shurecon() и exec() вместо первых двух параметров - один регистр базы. Отмечены пропущенные ранее изменения регистров базы. Для реализации COPY изменен pgoblin_conn.conn - теперь он содержит не sqlite*, а pgoblin_db_conn*, в котором есть sqlite* и еще информация для связи отдельных вызовов виртуальной машины. В sqlite2 переделана pgoblin_query() так, что в зависимости от cond исполняются разные ветви. В sqlite2 не используется таблица miss[][]. Начата реализация pgoblin_getcopy() в sqlite2. 2008-04-15 babolo Подключена библиотека sqlite2, некоторые команды выглядят работающими, #copyin и #copyout не реализованы. Реализована нулевая DBMS. Хак в #exec с Pq в CTL убран, теперь Pq из CTL системно конвертируется в нулевую DBMS. Отмаркированы изменения регистров job и style. Долгожданная команда #connect. Макрос PQEXEC перенесен из pgob.h в db_pgsql.c, поскольку нигде более он не нужен. В db_pgsql.c переименование pgsql_* в pgoblin_* для унификации. Теперь для PostgreSQL соединений, определенных в #connect, используется PQconnectdb(). Теперь BLIN флаги распространяются по всем производным флагам. Изменен макрос DUMPIOREGS, теперь он не повторяет регистры и немножко выдает про R_CONN. Немного оптимизирован основной цикл интерпретатора, теперь он не интерпретирует то, что отправлено в Pq из CTL. Теперь pgoblin_conn.conn void* без вариантов. Из интерфейса с DBMS убраны qexec(), mess(), freemess() за ненадобностью. Форматирование и прочие мелочи. 2008-04-08 babolo Формально зависимость всего, кроме модуля db_pgsql, от PostgreSQL устранена. фактически надо будет еще удалить макрос PQEXEC и текущая реализация #copyin и #copyout не полезет в другие СУБД. Под изоляцию от PostgreSQL существенно расширен состав интерфейсных функций. Введены собственные коды результатов. В execute теперь не переключается макрос DBSET, а используется LOCALDBSET в дополнение. Вместо макроса PQEXEC везде, кроме модуля db_pgsql, используется интерфейсная функция. В db_pgsql tarry() переименована в pgsql_tarry(), а pgoblin_shurecon() в pgsql_shurecon(). Стала аккуратнее обработка SQL ошибок, теперь каждая ошибка должна быть заметной (кроме пока #copy*). В cmd_trans теперь не переключается макрос DBSET, а используется LOCALDBSET в дополнение. 2008-04-08 babolo В тесте #listen были гонки, из-за чего мог теряться NOTIFY. Дополнен интерфейс job, бинарная несовместимость. Теперь необходимость форкаться отдается интерфейсом по запросу, появилась возможность реализации #fork модулем, в интерфейсе появилась процедура close. Дополнен интерфейс db, бинарная несовместимость. Туда унесено ожидание события на соединении с базой и notify. Теперь pgoblin_shurecon() не используется иначе, чем через интерфейс с модулем, для чего теперь при очистке регистров баз туда вносится принудительно тип модуля интерфейса pgsql. pgoblin_listen() реализован базонезависимо, используя измение в интерфейсе базы. Форкнутые ветви неаккуратно обращались со своим каналом к базе, не не закрывали его перед завершением. Заполнение регистров баз стилистически выделено. В pgoblin_listen() добавлены недостающие сообщения об ошибках. В pgoblin_listen() перед ожиданием notify теперь вначале проверяется, нет ли готового сообщения, побогает при небольших нарушениях в порядке следования операций с базой по отсылке и проверке сообщений. 2008-04-06 babolo Начато введение нового вида плагина и начат job_local. Логика управления процессами и трубами из реализаторов команд #exec и #fork убрана и теперь делается в общем цикле execute. Флаг PGOBLIN_FORKED теперь применяется и для описания команд в pgoblin_syntax.a[].flags. Бинарная несовместимость (а никто и не обещал пока) - некоторые флаги в pgoblin_conn.flags смещены влево. Есть и д ругие бинарные несовместимости (ниже). В связи с тем, что регистр работ теперь - это не только mular_descriptor, введен отдельный тип для регистров работ - pgoblin_jobreg. В pgoblin_exenv добавлен sequen, который считает проходы по пока единственной мультилицируемой команды #exec. Удален PGO_CCPY и уменьшен PGO_MAXR. Поскольку сильная связь исполнителей команд #exec и #fork с общим циклом execute утеряна, процедуры вынесены в cmd_trans. Из pgoblin_wait() и pgoblin_exec() начат вынос модулезависимого содержимого в модуль job_local. Процедура internal_fork() более не нужна. Теперь заполняются все регистры, если в команде не указан явно, то ставится 0й регистр. Что бы обойти факт одновременного использования командой #getjob двух регистров работ, регистр, откуда происходит вывод, в descript отмечен в pgoblin_syntax.a[].flags, но не отмечен в pgoblin_syntax.a[].ch. Регистры теперь заполняются так: ссылки в соответствии с описанием, а номера регистров в соответствии с командой, если соответствующий регистр разрешен в pgoblin_syntax.a[].flags. Тесты не менялись, pgoblin тестам соответствует. 2008-03-30 babolo Версия 2.09 Команда #style могла найти стиль с коротким именем, если оно совпадало с началом заданного в команде имени стиля. В tools/regres тест на этот случай. 2008-03-30 babolo Версия 2.08 При употреблении последовательностей констант на один текстовый литерал в стиле pgo0 парсер укладывал результат куда ни попадя. В парсере pgo0 добавлена отладочная печать на детали операций Cr, Cm, Ck. Операция Ck переписана для лучше выглядеть. 2008-03-30 babolo Версия 2.07 Стиль pgo0 неправильно обрабатывал таблицы из-под #strselect и #binselect. В частности, пытался обратиться за пределы предоставленного pq и не обрабатывал -H0. Поправлены мелкие ошибки парсера стиля pgo0, поведение стало много более устойчивым и предсказуемым. В выводе таблиц flow теперь собирается сразу сдвинутым вместо сдвига собранного. В выводе таблиц на 3ем уровне отладки добавился вывод параметров каждого захода на вывод таблицы или поданной части ее. В tools/regres масса новых скучных тестов на обнаруженные несоответствия. 2008-03-29 babolo Версия 2.06 Забыл номер версии поменять в Makefile. 2008-03-29 babolo Версия 2.06 Была потеряна нулевая (пустая) команда. Восстановлена, добавлены тесты на эту тему. Нумерация строк изменилась, поскольку ошибка обнаруживается на следующей строке. 2008-03-29 babolo Версия 2.05 В стиле pgo0 отлажены свободные константы - ввод, выдача, дамп. В дампе стиля pgo0 добавлен multilar дамп компонентов стиля. Команды #echo, #file и #cat теперь могут пользоваться идентификаторами констант через стиль. Добавлен тест для #echo, #file и #cat со стилем. В тест добавлен copyleft. 2008-03-28 babolo Версия 2.04 В позапредыдущем логе ошибочно указано, что static int sout() удалена. На самом деле она осталась с некоторым упрощением, но без изменения функционирования. Не все проверено, но тут уже много проверенного нужного, потому издается. Стили без флагов работают, из флагов проверены U и D, но не UU или DD. Реализацию флагов конечным автоматом делать не стал. Выделены варианты с 0ым количеством строк и колонок и выписаны отдельно от случая с непустой таблицей. Вариант количеством колонок 0 не проверен. Тесты на флаги U и D. 2008-03-28 babolo Теперь процедуре вывода таблицы стиля на вход подается регистр ввода целиком вместо pq и флагов базы в розницу. 2008-03-27 babolo Вспомнить бы... Желание ликвидировать #cat отпало. Далее все по pgo0 стилю. Автомат вводит флаги стиля - Cf. Теперь правильно обрабатывается пустой литерал - важно при наложении стилей. В связи с уточнением сообщения "Repeat ... in line ..." вся логика спрятана под условие отладки. Система флагов стала изощреннее. Стала ненужной static int sout(). dsig() теперь учитывает флаги P_T и P_C. Готовимся к реализации оформления нулевых таблиц конечным автоматом из-за его сложности. Тест на вышеперечисленное - нулевое оформление еще не работает правильно! 2008-02-17 babolo Команда #style дополняет стиль, а не заменяет. Новая команда #clear для обнуления регистров работ и стиля. Описания команд, работающих с регистрами работ и стиля, поменялись вместе с изменением семантики описания относительно этих регистров. Номер команды #untrap изменился, что бы освободить номер для #clear. В execute использован макрос ERROUT(). Теперь не рассчитываем, что в wri IO регистра будет что-то типа mife_writ(), считающего длинну самостоятельно, когда задан 0 и в стиле 0 (предыдущее такое изменение относилось только к стилю pgo0). Проверки функциями стиля подаваемого на вход стиля. Парсер pgo0 теперь обрабатывает и устанавливает флаги стиля. 2008-02-17 babolo Теперь U и D выводятся только при наличии хоть чего либо ненулевого в строке. Теперь не рассчитываем, что в wri IO регистра будет что-то типа mife_writ(), считающего длинну самостоятельно, когда задан 0. 2008-02-17 babolo Все то же самое, но style_pgo0 pgoblin_style_tbl() слегка раскрыты макросы с тем, что бы внедрить очередное изменение следующим коммитом. 2008-02-16 babolo Поменялся приоритет записей литералов в стиле - из нескольких с одинаковыми именами теперь приоритетнее последний литерал. Литералы L и R теперь выводятся только если содержимое ячейки, оформленной этими литералами , не NULL. 2008-02-16 babolo Продолжение изоляции СУБД. Интерфейс с СУБД модулями расширен на функции shurecon, exec, finish, freemem. pgoblin_shurecon() перенесен целиком в СУБД модуль pgsql. Для обращения к СУБД интерфейсу используется макрос DBSET, в разных контекстах разный. Есть нерешенные проблемы, но тест, как обычно, проходит. 2008-02-14 babolo Теперь #eval берет программу из CTL. На эту возможность - новые тесты. Недоделанное выделение изменений IO регистров. 2008-02-14 babolo Выделены все места изменений IO регистров для удобства контроля за правильностью ведения регистров. В процессе поправлены мелкие ошибки. Принято четкое решение о ведении text и binary text, описание на сайте. Для pgoblin_parser() входом теперь текст вместо mife. pgoblin_style() теперь отмечает для себя неудаляемость текста, из которого парстися стиль. Место корявое, утечки памяти. pgoblin_eval() теперь берет Pt вместо Pm, это позволит его перенести в CTL. В dump_ioreg() сделана менее экономичная, но более безошибочнаяя печать флагов регистра. В dump_ioreg() исправлен формат вывода бинарного текста. В propush() исправлен вывод наличия path на входе. В coercion() преобразование pq в текст сделано через подключаемый интерфейс. В coercion() преобразование Pt в Pm сделано понятнее. В pgoblin_parser() на входной проверке исправлена кучка взаимно маскирующих ошибок. В pgoblin.c popin() сделан прозрачнее для проверок. 2008-02-13 babolo Стиль таблиц тест прошел. Парсер pgo0 не принимал последнюю область перед следующим стилем. В pgoblin_style_dump() добавлена распечатка отметок об используемых областях - по 76 первых. В pgoblin_style_tbl() добавлена отладочная печать, детализирующая выбор литерала для области. Установлен признак комментария -- для m4 в тесте. В тесте исправлено название области +l1 -> +L1. В тесте пришлось аккуратно подобрать расстановку кавычек. 2008-02-13 babolo В style_pgo0 изменения косм етические - убрал лишние скобки. Тест стиля, пока не удовлетворяет. 2008-02-13 babolo Стиль готов к тестированию. Только форматирование поменялось в cmd_select. Сразу забыл добавить style в cmds.lexor. Теперь интерфейсные функции стилей принимают стиль, упакованный в pgoblin_styreg * вместо собственной структуры (была описана void *). В интерфейс со стилями добавлена функция dump. В интерфейсе со стилями у функции table выброшен параметр options. Заполняется NULLями dbasetable и styletable. В execute: - распространяются BLIN флаги на 0й регистр стиля - закрывается стиль, если он был на выходном регистре стиля - в разгрузке pq самописные циклы заменены на обращение к 0му стилю - была ошибка в освобождении регистра стиля на выходе из execute. В parser ошибка при сдвиге с расширением с 32 до 64 битов в сборке регистров команды и косметическая замена идентификатора r_pp на rs. В pgoblin_style() - косметическая замена идентификатора ilen на rs - неправильный список состояний для отладчика - вспомогательная переменная d (используется в сравнении имени стиля) была ссылкой, стала индексом. - запрещено менять 0й регистр стиля - чуть информативнее отладчик - было неаккуратное сравнение строк при поиске интерпретатора стиля по имени - оканчивался с ошибкой "неправильное имя интерпретатора" даже когда имя находилось - поиск по имени стиля всегда оканчивался неуспехом В стиле pgo0 отлажен парсер табличных оформлений. В стиле pgo0 затычка интерфейсной функции free дописана. В стиле pgo0 отлажена функция table. 2008-02-12 babolo Переопределена структура pgo0_style таким образом, что бы H, U, ... были не отдельными сущностями, а элементами массива, для удобства передачи. В dsig была ошибка - не применялся вариант по умолчанию. 2008-02-12 babolo Полуфабрикат нового, но все старые тесты проходит. Добавлена новая команда #style, не отлажена. Название структуры pgoblin_style заменено на pgoblin_styreg из-за пересечения имен с реализующей #style В struct pgoblin_styles поменялся тип функции parser. Заготовка для этой функции в стиле pgo0, трансляции не мешает. В parser символ Lp заменен на Ls - украшательств (унификация?). Там же применен макрос ERROUT и выравнены комментарии. Замена литерала 0 на константу L0 в классивикаторе parser. Значимых изменений в parser нет. 2008-02-11 babolo Переведены на использование стилей #strselect и #binselect. В #display, #strselect и #binselect используется ex вместо e для результата функции (унификация). В #strselect и #binselect используется макрос ERROUT вместо выхода в середине функции по ошибке. Дополнена еще одной функцией pgoblin_styles. Регистр стиля 0 инициализируется 0ым стилем - для общности подхода. Обработка flagc в io регистре. Новый макрос R_STY0. В style_pgo0 введены флаги HFIRST .. VLAST для управления обработкой нулевых размеров таблиц. Команды #strselect и #binselect стали в результате похожими до смешения, возможно, к объединению. Форматирование и комментарии. 2008-02-11 babolo Для удобства навигации по pgoblin.h расставил комментарии. 2008-02-11 babolo Сделан нулевой стиль, он используется при выдаче с нулевым регистром стиля вместо отдельной логики на этот случай. В io регистр добавлен flagc - копия flags от conn регистра. Ошибка в описании типа pgoblin_styles.parser. Ошибка в определении R_STYLE. Определен фиксированный номер типа DB для PostgreSQL, может, только на время перехода. Теперь pgoblin_styles.table возвращает размер выданного текста при успехе и отрицательное число при ошибке. Теперь #display берет тип базы из io регистра из flagc. 2008-02-10 babolo Начата поддержка стилей и множественности баз, инфраструктура стилей более-менее сформирована, базы придется еще переделывать из единственной. Поддержка престилей отовсюду ликвидирована, поддержка стилей есть пока только в #display. Новые макросы R_STYLE и STYLESET. В pgoblin.h теперь введена блокировка повторного включения. 2008-02-10 babolo Модифицирован pgoblin.h таким образом, что бы для более-менее корректной работы multilar.h и libpq-fe.h включать перед ним было необязательно. Эти инклуды убраны из тех файлов, где они не необходимы. Перенесена pgoblin_getjob() из cmd_file в cmd_trans для оптимизации инклудов. В структуру pgoblin_syntax сключены указатели на массивы методов доступа к базам и стилей. Константы SYMREGS, BINREGS и PGOBLIN_max заменены на обращения к описанию синтаксиса, где уместно. 2008-02-09 babolo Неправильный тип у pgoblin_io.offset. Вместо эвфемизмов напрямую используются mife_descriptor и смещение из регистров, где разумно. 2008-02-09 babolo Теперь #eval берет программу из входного регистра. Из регистра управления Pm брать так, что бы можно было задавать программу для #eval в тексте программы, сложно очень и запутанно получается, поскольку в 0 IO регистре Pm уже присутствует независимо. Добавлен дамп по -V программы, странслированной #eval. Тесты на #eval. 2008-02-09 babolo В связи с тем, что состояний больше, чем классов символов, таблица автомата парсера перевернута. Была ошибка парсера - не хватало состояний из-за ввода ##. Добавлен тест на обнаруженную ошибку. Добавлено сообщений и комментариев на нехватку сообщений. Есть еще неработающий pgoblin_eval(). 2008-02-09 babolo Команда #include признана неперспективной, вместо нее будет #eval. Программы, реализующие #return и #exit, из-за предыдущих преобразований потеряли связь с внутренней кухней pgoblin_execute() и вынесены в cmd_trans. 2008-02-09 babolo Новая команда #untrap. Возможность распечатки по флагу -VV структуры pgoblin, описывающей команды. Уточнена диагностика в парсере. Ликвидированы ставшие ненужными после предыдущего коммита флаг PGOBLIN_INTRAP и поле rtrap в struct pgoblin_exenv. 2008-02-09 babolo Теперь trap делается через новую среду исполнения, в связи с чем команда pgoblin_return() отдала очистку в непосредственно pgoblin_execute(). Для аккуратного отслеживания вложенных трапов кроме динамической цепочки вызовов отслеживается цепочка поиска трапов (названа "статической", что не совсем точно). В парсере ошибочно инициализировалась программа, если была передана. В pgoblin_prog добавлена ссылка на отладочную информации, пока не используется, для будущих расширений с сохранением бинарной совместимости. 2008-02-09 babolo В связи с отсутствием бинарной совместимости shared библиотека лишняя. Разделена среда исполнения и среда интерпретатора :-), последствия будут позже в виде произвольной глубины вложения программ. Пока только предварительные преобразования. Исправлены комментарии по поводу битов exeflags. 2008-02-08 babolo Удален каталог doc за ненадобностью. Устарел очень и есть http://www.babolo.ru/pgoblin/ Уточнена идентификация версии программы. 2008-02-08 babolo Теперь ## в начале строки не оканчивает литерал. Из литерала в таких строках отрезается первый # в строке - это способ помещать в литерал # в первой позиции строки. Теперь пустые команды после игнорируемых тоже игнорируются. Счет строк для сообщений об ошибках был с 0, сейчас с 1. Команда в парсере проверялась на соответствие диапазону команд после использования ее в качестве индекса к описанию команд. Новый тест на синтаксический разбор. 2008-01-22 babolo Версия 2.03 У #close добавлена возможность закрывать соединение с базой на ненулевом соединении с базой, при этом сбрасывается флаг "не закрывать при выходе", что дает возможность выбирать регистры у детей, которые будут закрываться при выходе автоматом. Команды #return и #exit имеют новый параметр - регистр соединения с базой, Если не 0, то закрывается только указанное соединение, а не все. Добавлен новый флаг -w для указания паузы ребенку перед началом выполнения, сделано для удобства отладки. При ошибке открытия выходного файла в propush теперь сообщается ошибка. Не соблюдена бинарная совместимость (она пока и не объявлялась) в struct pgoblin_main.flags. Форматирование, чуть добавлено сообщений. 2007-12-14 babolo Версия 2.02 Таблица score[][] теперь учитывает mife, поскольку его надо иногда закрывать, когда появляется другой пероисточник. Остальное - мелкие вылизывания. cleareg() теперь допускает пустое обращение, используется в propush(), что бы убрать логику из вызова cleareg(). Таблица score[][] пересортирована соответственно порядку битов, обозначающих соответствующие сущности в регистре ввода-вывода. Может, со временем использую для упрощения procomp(). Диагностика в propush() называла text path. Диагностика в propush() отправляла в coercion(). В propush() при Cf в r->flags ставился PGOBLIN_OUTSET. Явно специально, но зачем? Убрал. В 0й регистр ввода вывода иногда ставится text из литерала, который не удаляется в конце цикла интерпретатора. Несущественно, но некрасиво. Поставил уборку. 2007-12-11 babolo Версия 2.01 Предыдущий коммит сегодня сорвался без комментариев, потому здесь описаны оба коммита. У команды getstr отмечено использование управляющего регистра ввода-вывода, пока не используется, на будущее. dump_ioreg() теперь пытается показать text, помеченный binary. Теперь ошибка в основном цикле интерпретатора не только завершает интерпретацию, но и отмечается в результате у pgoblin_execute(). В pgoblin_parser() добавлена еще одна ошибка - "неизвестная команда". В pgoblin_parser() некоторые ошибки вызывали досрочное завершение процесса вместо return() с ошибкой. 2007-12-05 babolo Версия 2.00 Некоторые #get* необоснованно оканчивались exit() вместо return(). Введен новый флаг PGOBLIN_CLOSECONN для pgoblin_conn.flags. Процесс, получивший открытые соединения к базе по наследству, очищает у всех полученных PGOBLIN_CLOSECONN, и устанавливает этот флаг только у самостоятельно установленных соединений. При exit соединения с этим флагом прекращаются. Дети, если пользуются, должны ко времени окончания предка окончить использование унаследованных соединений. В dump_ioreg() не изображался последний флаг. Слегка поменялся порядок вывода флагов. iorassert() теперь на первом уровне отладки не сообщает о неотмеченных сущностях в регистрах ввода/вывода, поскольку появление их там нормально. Теперь основной цикл интерпретатора всегда, в том числе по ошибкам, освобождает по окончанию регистры. На втором уровне отладки появилось предупреждение об использовании одного регистра для ввода и вывода в одной команде. Изменилось условие включения образца в макрорасширение SELECTEST(). Добавлены тесты на #file вывод, #cat вывод и несколько комплексных тестов. Совместимость с pgoblin 0 лучше, чем была у pgoblin 1 (#select без #display), совместимость с pgoblin 1 должна быть практически полная (на текстах для pgoblin 1), разница в #fork возникает только от другого использования, не существующего в pgoblin 1. Впрочем, тестов для pgoblin 1 нет, совместимость предположительная. 2007-12-04 babolo В dump_ioreg() усовершенствована выдача флагов регистра. В iorassert() вывод итогов по регистрам стал устойчивее при параллельном выполнении нескольких процессов. pgoblin_inx() теперь выдает только отрицательные коды ошибки. pgoblin_outx() теперь готов выдавать коды ошибок. internal_fork() теперь выдает результат форка или отрицательный код ошибки. Обработка execve() из него вынесена в pgoblin_exec(), так как теперь он может отличить экземпляры себя форкнутый и форкнувший. Реакция на ошибки в pgoblin_fork() изменилась с учетом того, что internal_fork() выдает кроме ошибок результат форка. Новые тесты на #fork с нулевыми и не нулевыми регистрами, #listen, #pipe, #close. Мелкое вылизывание. 2007-12-03 babolo Не обрабатывался exec из нулевого регистра из-за того, что в схеме приведения типов параметров пропущен этот вариант и из-за того, что интерпретатор не пропускал параметры свлед за #exec. Новые тесты на #exec из нулевого регистра, #wait и #getjob из нулевого регистра и на #display (из ненулевого :-). 2007-12-02 babolo Все таки #include будет обязательным перед pgoblin.h при использовании библиотеки pgoblin - так надежнее, меньше ошибок согласования типов. В pgoblin_r теперь вместо ссылки на mular_descriptor, который содержится в регистре job, и ссылки на pgoblin_style, который содержится в регистре style содержатся ссылки на сами регистры со ссылками на соответствующие типы. pgoblin_pipe(), pgoblin_fork(), pgoblin_exec() вместе с соответствующей internal_fork() перенесены в файл execute.c из cmd_trans.c. По менялаяь концепция #fork, точнее, унифицировалась с неявным форком и #pipe. Или, может быть, унификация с #exec стала пониматься несколько иначе. Теперь связь ребенка с родителем происходит ровно через те регистры, которые указаны при вызове, без копирования их ребенку в 0й регистр ффода/вывода. Новые небольшие процедуры pgoblin_inx() и pgoblin_outx() для обработки потоков, в основном после форка, для унификации и сокращения. Из-за них были перенесены использующие их команды в execute.c. Из internal_fork() была убрана обработка pgoblin_inx() и pgoblin_outx(), для #exec множества (более 1) программ это была ошибка. Так же и lexlevel, но это не ошибка, только оптимизация. В pgoblin_copyin() приподнят уровень отладочного копирования потока. В pgoblin_getjob() для вывода открывался неправильный регистр вывода. В pgoblin_getjob() были несогласованы уровни, на которых открывался и закрывался выходной файл, из-за чего он мог остаться незакрытым. В pgoblin_getjob() прощаются некоторые ошибки waitpid(). pgoblin_wait() теперь не ждет процессы, не порожденные интерпретатором, например, процессы интерпретатора и его родителя. Теперь номера процессов интерпретатора и его родителя помещаются в 0й регистр job при инициализации. Несколько компактнее записан cleareg(), добавлены недостающие сообщения об ошибках. В main() теперь проверяется отсутствие входного файла. Изменилась команда #listen, теперь IN ей нужен Pt (но все так же бинарный, строго то же самое, что было в Pq. pgoblin_listen() стала компактнее. В тестах появились #exit, #getjob, #wait, #exec из ненулевого регистра, передачи через один и тот же регистр ввода/вывода и через разные регистры через несколько команд. 2007-11-30 babolo В составе пакета добавлены тесты для #trap, #return, #getstri, #binpresel и на использование регистров ввода/вывода для обмена. В pgoblin_verify() добавлена проверка соответствия имен и номеров регистров. Сделана команда #getstr (раньше была затычка). Теперь подготовка к тестам (DROP TABLE ... в начале) делается молча. В pgoblin_select() был неправильный возврат по ошибке без передачи ошибки. Добавлено правильное оформление потоков в регистрах ввода/вывода при неявном форке. Разрешена (не проверена) команда #close. Дополнена и слегка поправлена iorassert(). Новый макрос DUMPIOREGS для выдачи информации об используемых регистрах в основном цикле интерпретатора. Дополнена и переименована dump_reg() в dump_ioreg(). Исправлена работа пары #trap и #return. Добавлено правильное оформление потоков в регистрах ввода/вывода при явном форке. Разгрузка IO_OUT регистра портила невыгружаемое содержимое регистра. 2007-11-29 babolo В общую кучу мегафлагоопределений добавлены еще и флаги для pgoblin_main.exeflags. Имя скопища флагов PGOBLIN_ANYIOVL стало PGOBLIN_ANYIVL, возможно, когда нибудь будет PGOBLIN_ANYOVL. Имена регистров вынесены во внешнюю строку pgoblin_regn[], подумаю, может обойдусь еще без. Новый макрос ERROUT для выхода с ошибкой. Новый регистр IO - PGO_CCPY для копии, пока не используется. Макросы PROCDIR, CMDLINE, PIDLENG, TOTALEN тут не используются, удалил. Подстройка уровня отладки у pgoblin_Vdump(). Остальные изменения в execute.c, но очень много. readyreg() переименован в cleareg(), у него отобраны излишки интеллекта. Теперь аккуратно прочищает строго то, что задано, в том числе и вывод из IO регистра. Новая процедура propush(), аналог coercion(), но для выходного регистра. Макросы CICLEWARN() и CICLEERR() для поднобного сообщения об ошибке в основном цикле интерпретатора. В options->exeflags выделен 1 байт для флагов, сохраняющихся между циклами, остальные флаги протираются в начале каждого цикла интерпретатора. Переделана обработка выходного регистра ввода/вывода, теперь она вполне основательная и универсальная. Добавлены сообщения об ошибках в основном цикле интерпретатора. Теперь автоматически разгружаются все регистры вывода, если к тому есть условия, а именно добавленное содержимое не является прямым следствием из первоисточника и уже есть первоисточник, который может служить транспортом. Немного форматирование. В принципе это уже похоже на pgoblin-2. 2007-11-28 babolo Перестроена отладочная печать. Сделана команда #getjob (была заглушка). Переход от передачи процедурам номеров регистров к передаче ссылок на регистры. Сделаны команды #trap и #return (были заглушки). Возвращена pgoblin_fork() и pgoblin_exit(), теперь основной цикл автомата их вызывает вместо самостоятельного выполнения. Коды pgoblin_fork() и pgoblin_exec() по большей части объединены в процедуре internal_fork(). В pgoblin_syntax.p[] добавлено поле name для хранения имен регистров. Идентификационная строка программы на pgoblin стала длинной 16 вместо 8. Из coercion() и readyreg() убраны лишние варианты, соответствующие решения теперь надо принимать снаружи. Процедура pgoblin_exit() использует большую часть от pgoblin_return(). Не сохранялись биты состояния options->exeflags между циклами. Что бы не таскать пары труб для форка параметрами, они стали частью структуры pgoblin_main. Структура pgoblin_p переименована в pgoblin_prog, pgoblin_t в pgoblin_tuple. Исправлены коды команд #pipe и #close. В связи с выносом констант PG_* во внешний интерфейс они переименованы в PGOBLIN_*. Было ошибкой pgoblin_main.job описывать как pgoblin_job*, поскольку это mular_descriptor *. Форматирование, немножко комментарии. 2007-11-27 babolo Перетасовка файлов. Содержимое cmd_perform было влито в cmd_select, cmd_get - в cmd_file, отдельная команда pgoblin_fork() ликвидирована, т.к. исполняется непосредственно автоматом. Поскольку тип pgoblin_job стал публичным, именно он и поставлен вместо void* в pgoblin_main. Теперь в стек файлов не помещаются аргументы, кроме первого. 2007-11-27 babolo Полностью пересортирован список флагов для pgoblin_io.flags, pgoblin_c.ch[], pgoblin_c.a[].flags, многие флаги поменяли имена и/или значения. Сделана попытка вынести флаги для mife в отдельный макрос. Добавлены и перенумерованы команды. pgoblin_style унесен в приватный .h Тип pgoblin_con стал pgoblin_main. Флаг PGOBLIN_DUMP_PARSED расширил свое значение и стал именоваться PGOBLIN_VERIFY. Переменные lexlevel и exeflags теперь в pgoblin_main. Структура pgoblin_job стала публичной. Новая структура pgoblin_r для регистров команды, их значений и флагов. Тип pgoblin_c стал pgoblin_syntax. В pgoblin_syntax sym и mask стали беззнаковыми. Исправлена длинна массива pgoblin_syntax.a Шире применяются константы BINREGS и Новая процедура pgoblin_verify() для верификации семантического анализатора. pgoblin_init() теперь может принимать потоки для установки in/out программе. Вместо 4х регистров упакованных в исполняющем автомате используются 6 распакованных регистров в pgoblin_r. Интерфейс исполняющих программ поменялся на использование pgoblin_r вместо a[4] (или a[5] позднее). pgoblin_echo() теперь правильно отрабатывает флаги при копировании и не копирует при совпадении регистров. Сделана попытка отрабатывать флаги и совпадения в pgoblin_file() и pgoblin_cat(), еще есть работа. В макрос PQEXEC добавлен параметр - используемое соединение с СУБД. Сделана (была только заготовка) команда pgoblin_wait(). Сделана новая команда pgoblin_pipe(). pgoblin_fork() пока осталась, но не используется, как как fork() теперь реализован в самом исполняющем автомате. Массив аргументов в pgoblin_exec() теперь не ограничен, а выделяется по потребности. Теперь pgoblin_exec() аккуратно отмечается в регистре JOB. Новые заготовки для команд pipe, close и getstr. Тесты на тесктах pgoblin-0 проходит, для pgoblin-1 тестов нет и не прошел бы, т.к. поменялась семантика команды #fork. Впрочем, новая семантика еще не реализована. 2007-11-21 babolo Реорганизованы коды команд, выделены расширенные коды. Поменялась структура pgoblin_c. Замены чисел на символьные константы или обращения в pgoblin_c. Команды #cat и #file разделены, #file пока не готова. Теперь в 0й регистр работ помещается собственный PID. 2007-11-21 babolo Содержимое файла shurecon.c практически целиком перенесено в execute.c, shurecon.c удален. Из execute.c выделено заполнение pgoblin_c pgoblin в отдельный файл descript.c. В pgoblin_c добавлен еще и размер массива команд. extern pgoblin перенесен из pgob.h в pgoblin.h. 2007-11-20 babolo Смена мажора из-за серьезных ошибок: формат времени для #listen зафиксирован, управление процессами надо делать, надо уметь назначать выходные файлы. Команда #cat стала #file, #cat пока сохраняется как синоним. Добавлены недостающие (пока пустые) команды. Для #listen теперь нужно UNIX время в микросекундах. Создан отдельный набор (пока не задействован) набор регистров для управления процессами. Описание команд (для трансляции и исполнения) собрано в отдельную структуру. Изменился состав параметров для pgoblin_parser() и pgoblin_init(). В связи с увеличением количества регистров в записи команды увеличена назрадность сборщика регистров r_parm в parser. Из pgob.h удалены неиспользуемые PGO_C*. В оттранслированную программу добавлен идентификатор. Теперь формат времени DB по умолчанию не определяется, но это определение можно затребовать, если выставить одновременно флаги -F и -I. pgoblin_init() теперь может принимать готовую программу, но не может принимать готовую структуру pgoblin_con, всегда создает ее сам. 2007-11-11 babolo Версия 1.01 Не был продуман вариант, когда у exec параметром pq с несколькими выражениями. Теперь запускаются, но потеря PIDов еще больше стала. 2007-11-11 babolo Версия 1.00 Добавлено слово флагов в транслированную программу, пока не используется. В будущем для возможности незапроса формата датывремени. В флаги регистра ввода/вывода добавлен бит PGOBLIN_FILENAME, возможности пока не реализованы. Во внутренних инклудах PGO_PSTY возвращено его первоначальное значение, cmd_select исправлен соответственно. Массив pgoblin_a стал const. pgoblin_exec() теперь закрывает дубли дескрипторов входного и выходного потоков. pgoblin_shurecon() тот же, но более компактными макросами. pgoblin_Vdump() выделяет свой вывод и вывод номера оператора более от уровня отладки не зависит. Радикальные изменения в execute. Вывод трассировки freereg() и pgoblin_io_c() теперь на более высоком уровне отладки. С нуля написана coercion(), которая занимается приведением типов регистров ввода/вывода на IN и CTL каналах. Из pgoblin_execute() убран мусор, занимавший место приведения типов. Правильно отрабатывается (молча пропускается) команда продолжения. Непосредственно перед запуском команд (или fork()) на 4м уровне отладки выводятся подробности о команде к запуску. На выводе появилась 3я ветка - для обработки #exec на нулевой регистр вывода. Условие выбора выходной ветки переписано. Не сделано использование очереди входных файлов в нулевом регистре ввода/вывода. Нет стилей, и следы интерфейса к ним не должны использоваться, поскольку поменяется полностью. Нет тестов, а очень не помешали бы. Нет отслеживания pidов на ненулевом регистре ввода/вывода. Не выверена вся цепочка распространения и использования errno. Не выверена установка флагов присутствия данных в регистрах ввода/вывода, что может привести к лишним операциям и утечке памяти. Другие пути утечки памяти не вылизаны. Точность диагностики ниже плинтуса. Но в основном работает, как ожидается. 2007-11-10 babolo Массовая замена интерфейсов исполняющих процедур. Макросы для доступа к регистрам. 2007-11-09 babolo Образован файл с приватными определениями pgob.h, туда перенесены некоторые неинтерфейсные определения. Новые команды: продолжение (cont), listen, fork, exec, binpresel. Определения битов в флагах перенесены поближе к определениям своих флагов. Программа и указатель команды теперь стали частью pgoblin_con. Новые флаги -I и -F для целого и плавающего времени в базе, -t для максимального (в мс) таймаута у listen. Новые макросы PGO_P* и PGO_C* для определения регистров. В execute новая процедура freereg() постепенно заменит pgoblin_io_c(). Новые макросы {CH,IO}_* для упрощения обращения к регистрам и описаниям регистров, заодно найдено несколько ошибок в обращениях. За счет предперекодировки символов для лексора запись токенов стала много компактнее. В pgoblin_shurecon() теперь определение, в каком формате даты в СУБД. В pgoblin_select() ошибочно использовался reg_out вместо reg_ctl. Имеющиеся и несколько тестов вручную проходит, ошибок еще много. Нужно писать детальные тесты на новые возможности. Должно быть много утечек памяти, не занимался еще. 2007-11-07 babolo Замена идентификаторов в структуре pgoblin_io и перестановка элементов в структурах pgoblin_io и pgoblin_con. 2007-11-07 babolo Можно рассматривать как заявку о намерениях, но, однако, тест проходит. В Makefile добавлен текст о копирайте и указана зависимость от babolo-parser. Унифицирован интерфейс процедур, выполняющих команды. Централизован pgoblin_shurecon(). Стали едиными регистрами ввода/вывода бывшие раздельными pgoblin_conn.{in,out}. Почти косметические правки структуры транслированной программы. Заметно поменялась основная структура - pgoblin_con. Новая интерфейсная процедура pgoblin_init() в shurecon.c. Усовершенствован pgoblin_Vdump(). Теперь все виды выводов в 0 регистр вывода автоматом перенаправляются в mife, из-за этого #select в 0 регистр вывода не должен сопровождаться соответствующим оператором #display. Ликвидирован давно неиспользуемый флаг -B. В тесте многие команды #get* не были снабжены номером регистра вывода. Начата организация стека входных файлов. Новые флаги -N/-O для управления совместимостью с предыдущей версией. Практически полностью переписан парсер. Практически полностью переписан интерпретатор, сейчас он основывается на универсальном формате команд и общем описании команд. Многие команды существенно переписаны. Из всех команд fork() вынесен в центральный цикл интерпретатора. Много-много чего только слегка намечено и сильно не дописано. 2007-11-06 babolo Замена flag -> flags. 2007-11-04 babolo Удален cmd_fetselect, его содержимое перелито практически без изменений в cmd_select. 2007-11-04 babolo Готовимся к смене мажора. Появились регистры in, out, conn, res. Интерфейс к библиотеке поменялся и еще будет меняться. Программа изменилась только в части #select, который раньше использовать не рекомендовалось - теперь #select выводит готовый результат, полученный #prepare. Параметр интерфейсных библиотек - дескриптор выходного файла заменен на номер out регистра. Процедуры, которые могут работать с коннектом к БД, теперь получили параметр conn регистр. Компактнее записан вывод оформления таблиц. Новая команда #getproc. Добавлено освобождение регистров в конце pgoblin_execute(). Стиль вывода таблицы теперь целиком в pgoblin_con вместо ссылки. Большинство интерфейсных символов теперь начинается с PGOBLIN_ или pgoblin_. Поменялся порядок в enum pgoblin_cmd. Теперь к многим typedef зразу определяется struct. Для проверки #getproc изменен макрос SELECTEST() так, что бы можно было использовать средства исполняющего тест шелла для подстановки внутри тестов. 2007-07-16 gd Версия: 0.18 Собирается под FreeBSD6 2007-05-24 babolo Версия 0.17 Реакция на смену мажора у mife. В cmd_copy убраны неиспользуемые переменные. Явно инициализирована q в cmd_copy, транслятор успокоился. Подчищены варнинги на тему несовместимости типов указателей. Описания функций в pgoblin.h дополнены названиями параметров. 2006-11-18 babolo Версия 0.16 Мелкое, но важное изменение - используется getCGIparm-3.00. Добавлен CVS Id в regres. 2006-11-09 babolo Версия 0.15 В copyin исправлена ошибка при вводе нулевого файла. В copyout и copyin используются более современные процедуры libpq: PQgetCopyData() вместо PQgetline(), PQputCopyData() вместо PQputnbytes(), PQputCopyEnd() вместо PQendcopy(). В copyout и copyin теперь используется PQclear() на всех путях, где определен результат запроса. Из copyout и copyin теперь единые выходы. Флаг DUMP_PARSED переименован в PGOBLIN_DUMP_PARSED. В pgoblin добавлены флаги -a и -A для новых флагов PGOBLIN_COPEND_PASS и PGOBLIN_COPEND_APND. Дополнена подсказка. В shurecon добавлена обширная отладочная печать на уровне 4. Номер теста теперь в regres не считается sh, а уже задан в нем, считается m4, облегчает поиск и рассмотрение нужного теста. Тесты дополнены вариантами исполнения программ через -e. Среди тестов появились проверки COPY FROM при пустом входном файле. Комментарии чуть подправлены. 2006-07-20 babolo Версия 0.14 Правки в документации. Теперь в #strselect и #binselect курсор после вывода закрывается. 2006-02-21 babolo Версия 0.13 Добавлены операторы #begin и #end, проверка их. В README.ru поправлены планы. 2005-10-24 babolo Версия 0.12 - переиздание При составлении теста не учел, что меняется CVS Id внутри теста, потому использую теперь для проверки cat новый файл LISENCE. 2005-10-24 babolo Версия 0.12 Определение MAX_PACKT заменено на RAWIOBUFL. В cmd_file буфер для копирование файла определяется через RAWIOBUFL. Переменная ex в pgoblin_cat не нужна. Цикл копирования файла теперь проверяет конец файла. При mife_read() теперь обрабатываются ошибки. Убрана ошибка из tools/regres, внесенная в предыдущей версии. Добавлено тестирование команды #cat Добавлены комментарии для разметки групп тестов. В tools/def.m4 добавлено краткое описание по использованию. Не было конца строки в конце файла tools/regres.m4. 2005-10-24 gd С тестами не разобрался Как разберусь - нужно включить в тесты cat 2005-10-24 gd Версия: 0.11 Добавлена команда cat - аналог "include virtual" из Apache SSI 2005-03-15 babolo Версия 0.10 Интерфейс библиотеки еще не готов. Срочное издание из-за несогласованного использования pgoblinом интерфейса mife: mife_close нельзя давать пока NULL параметр. Появилась документация. Новый отладочный флаг -V - распечатка разобранной программы. pgoblin_strsel неправильно настраивался на оптимальную длинну FETCH. Переименование внешних для возможности выставить интерфейсом библиотеки. 2004-11-29 babolo Исключен старый файл tools/test.sh. 2004-11-29 babolo Версия 0.09 Все еще нет стабильной библиотеки. Типы и внешние имена приведены к виду pgoblin_* Теперь pgoblin аккуратно возвращает код возврата. Учтены приемник и процессор ошибок из libpq. Еще есть там работа. В strsel используются tdl, как и в select. Количество tdlей увеличилось. Формализован перебор входных источников. Предусмотрено косвенное задание аргументов через переменные окружения. Остался один executor, одиночные команды выполняются через тот же, что и программы. Существенно поменялось тестовое хозяйство. 2004-11-21 babolo Версия 0.08 execute при ошибке пытается дать значащий код возврата вместо -1. Новые команды get*, echo, strselect. Роль старой strselect стала выполнять команда select. Парсер терпимо относится к наличию/отсутствию символов после команды. Команды для парсера собраны в структуры. Уменьшился объем распечатываемой отладки в парсере. Расширился тест. 2004-11-07 babolo Версия 0.07 Тотальная BLINизация. Разрешен неожиданный PGRES_TUPLES_OK вместо PGRES_COMMAND_OK. Добавлен README.ru 2004-11-05 babolo Версия 0.06 Использует libmife 1. Уточнена проверка правильности соединения с базой. В uuencode какие-то изменения выходного текста, не вызванные изменениями во входном бинарнике. 2003-11-26 babolo Версия 0.05 Смена интерфейса pgoblin Использована babolo-libmake Использована библиотека mife Преобразовано в библиотеку, поменялись внешние имена. И вообще, полная реорганизация 2002-12-23 babolo test.sh добавлен в дистрибутив test.sh расширен программный тест copyin делается из stdin 2002-12-23 babolo Версия 0.04 Зачатки программирования Унифицирован интерфейс cmd_* Вообще, переработка кардинальная 2002-12-17 babolo Версия 0.03 Теперь выполняются текстовый SELECT, COPY out, команды без вывода. pgobin -> pgoblin в идентификаторах В реализаторах предусмотрена подмена команды по умолчанию на явно заданную. Предусмотрены строки для оформления текстовых таблиц 2002-12-17 babolo Переименован в pgoblin Версия 0.02 Существенно изменена структура - разбит на файлы по функциям, подготовка к преобразованию в язык программирования. В cmd_binselect размер FETCH подстраивается по размеру буфера. 2002-12-10 babolo Версия 0.01 - после переноса, работает