{
char** p;
int count;
- p = freerdp_command_line_parse_comma_separated_values_offset(arg->Value, &count);
+ p = freerdp_command_line_parse_comma_separated_values_offset(arg->Value,
+ &count);
p[0] = "smartcard";
status = freerdp_client_add_device_channel(settings, count, p);
free(p);
}
else
{
- char* p[2];
+ char* p[1];
int count;
- count = 2;
+ count = 1;
p[0] = "smartcard";
- p[1] = "";
status = freerdp_client_add_device_channel(settings, count, p);
}
}
{
if (strcmp(name, "") == 0)
{
- return 0;
+ return 1;
}
if (strncmp(readerName, name, strlen(readerName)) == 0)
{
- return 0;
+ return 1;
}
}
+ else
+ {
+ return 2;
+ }
}
- return -1;
+ return 0;
}
char* PCSC_ConvertReaderNamesToWinSCard(const char* names, LPDWORD pcchReaders)
{
+ int ret=0;
int length;
char* p, *q;
DWORD cchReaders;
char* nameWinSCard;
char* namesWinSCard;
BOOL endReaderName = FALSE;
+ BOOL allReaders=FALSE;
p = (char*) names;
cchReaders = *pcchReaders;
namesWinSCard = (char*) malloc(cchReaders * 2);
{
length = strlen(nameWinSCard);
- if (PCSC_RedirectReader(nameWinSCard) == 0)
+ ret = PCSC_RedirectReader(nameWinSCard);
+ if ( ret == 1 )
{
CopyMemory(q, nameWinSCard, length);
endReaderName = TRUE;
}
+ else if( ret == 2 )
+ {
+ CopyMemory(q, nameWinSCard, length);
+ allReaders = TRUE;
+ }
free(nameWinSCard);
}
q++;
endReaderName = FALSE;
}
+ else if (allReaders)
+ {
+ q += length;
+ *q = '\0';
+ q++;
+ }
p += strlen(p) + 1;
}