 /*
 * Copyright(C) 2000 Проект ИОК
 *
 * Этот файл содержит информацию, являющуюся
 * собственностью компании Крипто Про.
 *
 * Любая часть этого файла не может быть скопирована,
 * исправлена, переведена на другие языки,
 * локализована или модифицирована любым способом,
 * откомпилирована, передана по сети с или на
 * любую компьютерную систему без предварительного
 * заключения соглашения с компанией Крипто Про.
 */

#include "ric_prj.h"
#include "limits.h" 

DWORD ric_file_open( 
    TSupSysContext *context, 
    TSupSysInfo *info )
{
    TReaderInfoOpen *inf = (TReaderInfoOpen*)info;
    DWORD code;
    TRICContext *ctx = (TRICContext*)context;

    SUPSYS_PRE_CONTEXT( context, TRICContext );
    SUPSYS_PRE_INFO( info, TReaderInfoOpen );
    SUPSYS_PRE( inf->mode_bits >= READER_MODEFLAG_BITS );

    code = ric_select_file( ctx, (unsigned char)inf->num, 
	&( ctx->file_length ) );
    if (code == ERROR_FILE_NOT_FOUND && ctx->folder_exist && !inf->mode.o_create && inf->num < 7)
	code = CPR_ERR_RDR_NEED_OPEN_FOLDER;

    if( code ) {
	ctx->file_length = 0;
	return code;
    }
    ctx->file = (unsigned char ) inf->num;
    ctx->status |= RIC_STATUS_FILE_SELECTED;
    return ERROR_SUCCESS;
}
