Когда я пытаюсь использовать библиотеку EA iffw.c для записи файла IFF, я не могу пройти вызов StartWGroup (). Сбой в IFFWriteBytes (), потому что context-> ckHdr.ckSize равен нулю. Внутри IFFWriteBytes () есть if (), который проверяет, что (размер)! = SzNotYetKnown. (szNotYetKnown является константой.) пример , кажется, указывает, что это должно работать, но я не вижу, как.
IFFWriteBytes () возвращает CLIENT_ERROR, потому что nBytes равно 4 - я пытаюсь сохранить 32-битное целое число.
Мой ошибочный код:
outfp = fopen(outfile, "wb");
ifferr = OpenWIFF(outfp, &filec, szNotYetKnown);
if (ifferr) {
return 2;
}
ifferr = StartWGroup(&filec, LIST, sizeof (ID_NATAMI_FLASH), ID_NATAMI_FLASH, &listc);
if (ifferr) {
printf("ifferr: %d\n", ifferr);
return 3;
}
Последний сбой, StartWGroup ().
IFF, как и XML, достаточно прост, чтобы я мог просто сгенерировать его без библиотеки, но было бы неплохо использовать некогда распространенную и хорошо протестированную библиотеку.
Вопрос не совсем об Амиге, но этот формат файлов был популярен на Амиге. Кстати, знаете ли вы DjVU , RMFF , AIFF, RIFF и многие другие форматы IFF или небольшие вариации ?
Обновление : Легко читаемое описание IFF .