On Mon, 29 Jan 2024 05:35 +0300, in a message to me, you wrote:
NA> Так-то можно заморочиться, в "дырки" писать.
Формат Squish очень прост. Фреймы идут друг за другом. В индексе хранится связь абсолютного номера соощения (UMSGID) с позицией фрейма (Offset), и хэш поля To. Если Offset == 0, сообщение удалено. В JAM примерно так же, просто -1 вместо 0. В обоих случаях (JAM и Squish) ты можешь высчитать количество байт между концом последнего сообщения перед удалённым и началом первого сообщения после, и если места хватит, пихнуть туда фрейм. Правда в случае с JAM нужно будет такой же фокус проделать ещё и с файлом заголовков. Довольно трудозатратно и напрочь лишено смысла, поэтому так никто не делает, насколько мне известно.
NA> Кто спеки читал, а их есть Jam в .arj архив оригинального на Си API NA> лежит, а для Сквиша - был squish sdk с squish.txt, потом его NA> переформатировали, без добавления в FSP-1037. Так вот, кто спеки NA> читал, тот прочитает сообщения в дырках.
Так ты сам бы их почитал что ли. У меня они есть и я их хорошо понимаю. :) Если в "дырку" правильно записать, то и прочитается всё оттуда без проблем.
NA> Хотя, есть проблема с Jam, там можно удалять по-разному, и даже голдед NA> имеет настройку как именно удалять.
В JAM есть аттрибут MSG_DELETED (0x80000000L), голдед может считать сообщения с этим аттрибутом удалёнными (как и задумано), а может их отображать. Никаких других настроек на эту тему в голдеде нет, и проблем никаких это не вызывает.