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

/*!
 * \file $RCSfile$
 * \version $Revision: 127051 $
 * \date $Date:: 2015-09-09 15:08:20 +0300#$
 * \author $Author: pav $
 * \brief Функция поиска следующей папки.
 */

#include "fat12prj.h"

/*! 
 * \ingroup fat12_fun_reader
 * \brief Функция поиска следующей папки.
 *
 * Функция поиска следующей директории.
 * \param context [in] контекст считывателя. Не используется.
 * \param info [in/out] структура #TReaderInfoFolderEnum
 * \sa #TReaderInfoFolderEnum, #READER_FUN_FOLDER_ENUM_NEXT,
 *  #TSupSysFunction, #fat12_info_locked_folder_enum_open, 
 *  #fat12_info_locked_folder_enum_close,
 * \return Код ошибки
 */
DWORD fat12_info_locked_folder_enum_next(
    TSupSysContext *context, 
    TSupSysInfo *info )
{
    TReaderInfoFolderEnum *inf = (TReaderInfoFolderEnum*)info;
    char * info_ptr;

    SUPSYS_PRE_INFO( info, TReaderInfoFolderEnum );
    UNUSED( context );

    if( ( inf->flags & RDR_FOLDER_ENUM_FLAG_NEW ) )
	return fat12_info_folder_enum_next (context, info);

    info_ptr = (char*)inf->add_info.info;

    if (* (size_t*) info_ptr >= inf->add_info.length)
	return (DWORD)ERROR_FILE_NOT_FOUND;
    // TODO: check, that 0 is before end;
    _tcscpy ( inf->name.text, info_ptr + * (size_t*) info_ptr );
    inf->name.length = _tcslen( inf->name.text );
    * (size_t*) info_ptr += sizeof (TCHAR) * (inf->name.length + 1);
    return ERROR_SUCCESS;
}
