#1
|
|||
|
|||
sqpack will reset BaseMsgNum to 1
Nil Alexandrov написал(а) к All в Mar 21 00:34:12 по местному времени:
* Originally in ru.husky * Crossposted in ru.ftn.develop Нello, All! Чем обычно пользователи Нusky пуржат (JAM) базы, sqpack? А чем ещё можно пуржить под линуксом? Под капотом sqpack, пользуясь smapi, открывает оригинальные файлы базы на чтение, временные на запись, копирует сообщения до лимита по времени и/или количество сообщений, и в конце замещает временные файлы на оригинальные файлы базы. API smapi при создании базы JAM не позволяет указать BaseMsgNum (Lowest message number in index file) и всегда ставит там единицу. Я считаю, что поведение sqpack, когда упакованная база начинает нумерацию BaseMsgNum снова с 1цы не корректное. Приведу пример, когда сброс BaseMsgNum в единицу ломает логигу других программ. jamnntpd/smapinntpd для отображения по NNTP количества сообщений всего/первое/последнее использует логику, что JAM .jdx файл - это записи по 8 байт на сообщение, соответственно можно сразу сказать сколько всего сообщений, а из заголовка в .jhr, сколько активных. Для NNTP клиентов важно, чтобы нумерация сообщений бала сквозной, тогда в следующий раз при соединении, клиент может понять, что появились новые сообщения. В случае с jamnntpd/smapinntpd всё работает до тех пор, пока базы не будут упакованы и тогда нумерация "съедет". Если бы в заголовке .jhr поле BaseMsgNum было минимальное значение сообщения, ещё из предыдущей базы, тогда, складывая BaseMsgNum со смещением по 8 байт в .jdx файле, можно было бы сохранить сквозную нумерацию. Best Regards, Nil --- GoldED+/LNX 1.1.5 |