前回はレコードの大きさなどの情報を取得しただけでした。今回は実際にメモリに読み込みましょう。
#include <sample.h>
VOID main(W argc, TC ** argv)
{
LINK SrcLink;
WERR WErr, SrcFD, Type;
W SearchMode = F_FWD, Number, Size;
UH Subtype;
B * Record;
WErr = get_lnk(L"test", &SrcLink, F_NORM);
SrcFD = opn_fil(&SrcLink, F_READ, NULL);
while( 0 <= (Type = fnd_rec(SrcFD, SearchMode, 0xffff, 0, &Number)) ) {
if ( SearchMode == F_FWD ) SearchMode = F_NFWD;
WErr = rea_rec(SrcFD, 0, NULL, 0, &Size, &Subtype);
printf("number: %d, type: %d, size: %d, subtype: %d\n",
Number, Type, Size, Subtype);
Record = malloc( sizeof( B ) * Size );
WErr = rea_rec(SrcFD, 0, Record, Size, NULL, NULL);
free( Record );
}
cls_fil( SrcFD );
}
プログラムを置いておきます。
読み込むべきレコードの大きさが分かったら、その分の領域をmallocして再びrea_recするだけです。もちろんfreeするのを忘れずに。ただ、このままでは本当に実身から主記憶に読み込んだのかどうか分かりません。そこで今度は別の実身に書き戻すことで確認してみましょう。