|
|
|
@ -368,14 +368,14 @@ namespace pcsc { |
|
|
|
|
Strings res; |
|
|
|
|
std::string grp(join(groups)); |
|
|
|
|
DWORD num(0); |
|
|
|
|
if (!check(SCardListReaders(_id, grp.size()?strconv(grp).data():0, 0, |
|
|
|
|
if (!check(SCardListReaders(_id, groups.size()?strconv(grp).data():0, 0, |
|
|
|
|
&num), |
|
|
|
|
"(1) smartcard list readers of groups "+grp)) |
|
|
|
|
"smartcard get size of readers of groups "+grp)) |
|
|
|
|
return res; |
|
|
|
|
std::auto_ptr<char_t> nm(new char_t[num]); |
|
|
|
|
if (!check(SCardListReaders(_id, grp.size()?strconv(grp).data():0, |
|
|
|
|
if (!check(SCardListReaders(_id, groups.size()?strconv(grp).data():0, |
|
|
|
|
nm.get(), &num), |
|
|
|
|
"(2) smartcard list readers of groups "+grp)) |
|
|
|
|
"smartcard list reader names of groups "+grp)) |
|
|
|
|
return res; |
|
|
|
|
return res = split(strconv(string(nm.get(), num-1))); |
|
|
|
|
} |
|
|
|
@ -667,7 +667,7 @@ namespace pcsc { |
|
|
|
|
//! Splits a buffer with 0 separators into a vector of strings.
|
|
|
|
|
Strings split(const std::string& in) { |
|
|
|
|
Strings res; |
|
|
|
|
for (std::string::size_type pos(0); pos<in.size(); |
|
|
|
|
for (std::string::size_type pos(0); pos<in.size() && in[pos]!=0; |
|
|
|
|
pos+=res.rbegin()->size()+1) |
|
|
|
|
res.push_back(in.substr(pos).c_str()); |
|
|
|
|
return res; |
|
|
|
@ -676,9 +676,12 @@ namespace pcsc { |
|
|
|
|
//! Joins a vector of strings into a buffer with 0 separators.
|
|
|
|
|
std::string join(const Strings& in) { |
|
|
|
|
std::string res; |
|
|
|
|
for (Strings::const_iterator it(in.begin()); |
|
|
|
|
it!=in.end(); ++it) |
|
|
|
|
res+=*it+'\0'; |
|
|
|
|
if (in.size()) { |
|
|
|
|
for (Strings::const_iterator it(in.begin()); |
|
|
|
|
it!=in.end(); ++it) |
|
|
|
|
res+=*it+'\0'; |
|
|
|
|
res+='\0'; |
|
|
|
|
} |
|
|
|
|
return res; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|