ここまでで、実身を開き、読み、新たに実身を作り、書く方法が分かりました。ということで実身を複製するプログラムを作ることができるはずですね。作ってみましょう。
#include <sample.h>
VOID main(W argc, TC ** argv)
{
LINK SrcLink, DestLink;
WERR WErr, SrcFD, DestFD, Type;
W SearchMode = F_FWD, Number;
ERR Err;
WErr = get_lnk(L"test", &SrcLink, F_NORM);
SrcFD = opn_fil(&SrcLink, F_READ, NULL);
WErr = get_lnk(L"結果", &DestLink, F_NORM);
Err = cre_fil(&DestLink, L"output", NULL, 1, F_FIX);
DestFD = opn_fil(&DestLink, F_WRITE, NULL);
while( 0 <= (Type = fnd_rec(SrcFD, SearchMode, 0xffff, 0, &Number)) ) {
UH Subtype;
W Size;
B * Record;
if ( SearchMode == F_FWD ) SearchMode = F_NFWD;
WErr = rea_rec(SrcFD, 0, NULL, 0, &Size, &Subtype);
Record = malloc( sizeof( B ) * Size );
WErr = rea_rec(SrcFD, 0, Record, Size, NULL, NULL);
Err = apd_rec(DestFD, NULL, 0, Type, Subtype, 0);
Err = see_rec(DestFD, -1, -1, NULL);
Err = wri_rec(DestFD, -1, Record, Size, NULL, NULL, 0);
free( Record );
}
cls_fil( SrcFD );
cls_fil( DestFD );
}
プログラムを置いておきます。
このプログラムの解説は宿題にします。ここまでが理解できていれば、一行一行追えば何をやっているか理解できるはずです。引数は普通にargv[1]などとして使えますから、読み込む実身や作る実身の名前を引数で渡して変えられるようにするのもやってみるといいかもしれません。