Blame src/utils.c

Packit Service aee942
/*
Packit Service aee942
    utils.c:
Packit Service aee942
    Copyright (C) 2003-2008   Ludovic Rousseau
Packit Service aee942
Packit Service aee942
    This library is free software; you can redistribute it and/or
Packit Service aee942
    modify it under the terms of the GNU Lesser General Public
Packit Service aee942
    License as published by the Free Software Foundation; either
Packit Service aee942
    version 2.1 of the License, or (at your option) any later version.
Packit Service aee942
Packit Service aee942
    This library is distributed in the hope that it will be useful,
Packit Service aee942
    but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service aee942
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service aee942
    Lesser General Public License for more details.
Packit Service aee942
Packit Service aee942
	You should have received a copy of the GNU Lesser General Public License
Packit Service aee942
	along with this library; if not, write to the Free Software Foundation,
Packit Service aee942
	Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Packit Service aee942
*/
Packit Service aee942
Packit Service aee942
#include <pcsclite.h>
Packit Service aee942
Packit Service aee942
#include <config.h>
Packit Service aee942
#include "ccid.h"
Packit Service aee942
#include "defs.h"
Packit Service aee942
#include "ccid_ifdhandler.h"
Packit Service aee942
#include "utils.h"
Packit Service aee942
#include "debug.h"
Packit Service aee942
Packit Service aee942
int ReaderIndex[CCID_DRIVER_MAX_READERS];
Packit Service aee942
Packit Service aee942
void InitReaderIndex(void)
Packit Service aee942
{
Packit Service aee942
	int i;
Packit Service aee942
Packit Service aee942
	for (i=0; i
Packit Service aee942
		ReaderIndex[i] = -1;
Packit Service aee942
} /* InitReaderIndex */
Packit Service aee942
Packit Service aee942
int GetNewReaderIndex(const int Lun)
Packit Service aee942
{
Packit Service aee942
	int i;
Packit Service aee942
Packit Service aee942
	/* check that Lun is NOT already used */
Packit Service aee942
	for (i=0; i
Packit Service aee942
		if (Lun == ReaderIndex[i])
Packit Service aee942
			break;
Packit Service aee942
Packit Service aee942
	if (i < CCID_DRIVER_MAX_READERS)
Packit Service aee942
	{
Packit Service aee942
		DEBUG_CRITICAL2("Lun: %d is already used", Lun);
Packit Service aee942
		return -1;
Packit Service aee942
	}
Packit Service aee942
Packit Service aee942
	for (i=0; i
Packit Service aee942
		if (-1 == ReaderIndex[i])
Packit Service aee942
		{
Packit Service aee942
			ReaderIndex[i] = Lun;
Packit Service aee942
			return i;
Packit Service aee942
		}
Packit Service aee942
Packit Service aee942
	DEBUG_CRITICAL("ReaderIndex[] is full");
Packit Service aee942
	return -1;
Packit Service aee942
} /* GetReaderIndex */
Packit Service aee942
Packit Service aee942
int LunToReaderIndex(const int Lun)
Packit Service aee942
{
Packit Service aee942
	int i;
Packit Service aee942
Packit Service aee942
	for (i=0; i
Packit Service aee942
		if (Lun == ReaderIndex[i])
Packit Service aee942
			return i;
Packit Service aee942
Packit Service aee942
	DEBUG_CRITICAL2("Lun: %X not found", Lun);
Packit Service aee942
	return -1;
Packit Service aee942
} /* LunToReaderIndex */
Packit Service aee942
Packit Service aee942
void ReleaseReaderIndex(const int index)
Packit Service aee942
{
Packit Service aee942
	ReaderIndex[index] = -1;
Packit Service aee942
} /* ReleaseReaderIndex */
Packit Service aee942