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

#include "fat12prj.h"
#include <unistd.h>

/*++++
 * Lock function
 ++++*/
DWORD fat12_lock( 
    TSupSysContext *context, 
    TSupSysInfo *info )
{
  TFat12Context *ctx = (TFat12Context*)context;
  UNUSED(info);

  SUPSYS_PRE_CONTEXT( context, TFat12Context );

  if (!ctx->locked)
  {
    if(support_mutex_lock(ctx->lock))
	return (DWORD)SCARD_W_CANCELLED_BY_USER;
    ctx->locked = TRUE;
  }
  return ERROR_SUCCESS;
}

/*++++
 * Unlock function
 ++++*/
DWORD fat12_unlock( 
    TSupSysContext *context, 
    TSupSysInfo *info )
{
  TFat12Context *ctx = (TFat12Context*)context;

  UNUSED(info);
  SUPSYS_PRE_CONTEXT( context, TFat12Context );
  
  if (ctx->locked)
  {
    ctx->locked = FALSE;
    support_mutex_unlock(ctx->lock);
  }
  return ERROR_SUCCESS;
}
