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

#include "fat12prj.h"

#if defined UNIX
/*
 * Функция получения серийного номера и метки тома на UNIX.
 */
DWORD fat12_volume_name(
    const TCHAR *path, 
    TCHAR **name, 
    unsigned long *serial )
{
    UNUSED(path);

    *serial = (unsigned long)-1;
    *name = malloc(12 * sizeof(TCHAR));
    if(!*name)
	return (DWORD)NTE_NO_MEMORY;

    (*name)[0]=_TEXT('\0');
    return ERROR_SUCCESS;
}
#else // !UNIX
/*
 * Функция получения серийного номера и метки тома на Windows Desktop.
 */
DWORD fat12_volume_name(
    const TCHAR *path, 
    TCHAR **name, 
    unsigned long *serial )
{
    DWORD code = ERROR_SUCCESS;
    DWORD maximumComponentLength; /* Максимальный размер элемента пути. */
    DWORD fileSystemFlags; /* Флаги файловой системы. */

    *serial = (unsigned long)-1;
    *name = NULL;
    if( !GetVolumeInformation( path, NULL, 0, 
			       serial, &maximumComponentLength, &fileSystemFlags,
			       NULL, 0 ) ) {
	code=fat12_os_error();
	goto done;
    }
    *name = malloc( ( maximumComponentLength + 1 ) * sizeof( TCHAR ) );
    if( *name == NULL ){
	code=(DWORD)NTE_NO_MEMORY;
	goto done;
    }
    if( !GetVolumeInformation( path, *name, 
			       maximumComponentLength + 1 /*volume_name_size */, 
			       serial, &maximumComponentLength, &fileSystemFlags,
			       NULL, 0 ) ) {
	code=fat12_os_error();
	goto done;
    }

done:
    if(code!=ERROR_SUCCESS){
	*serial = (unsigned long)-1;
	free(*name);
	*name = NULL;
    }

    return code;
}
#endif // !UNIX

DWORD fat12_connect_carrier(TSupSysContext *context, TSupSysInfo *info)
{
    UNUSED(context);
    UNUSED(info);

    return ERROR_SUCCESS;
}
