sim: Add osim_file_find_{fid,sfid}() functions

We don't always want to look-up by name, but the latter is the only
implemented 'find' function so far.  Let's change that.
This commit is contained in:
Harald Welte 2016-03-11 09:35:07 +07:00
parent 1cc66f093f
commit c28f4cdd6d
2 changed files with 31 additions and 0 deletions

View File

@ -242,6 +242,12 @@ struct osim_file {
struct osim_file_desc *
osim_file_find_name(struct osim_file_desc *parent, const char *name);
struct osim_file_desc *
osim_file_find_fid(struct osim_file_desc *parent, uint16_t fid);
struct osim_file_desc *
osim_file_find_sfid(struct osim_file_desc *parent, uint8_t sfid);
/* STATUS WORDS */
enum osim_card_sw_type {

View File

@ -183,6 +183,31 @@ osim_file_find_name(struct osim_file_desc *parent, const char *name)
return NULL;
}
struct osim_file_desc *
osim_file_find_fid(struct osim_file_desc *parent, uint16_t fid)
{
struct osim_file_desc *ofd;
llist_for_each_entry(ofd, &parent->child_list, list) {
if (ofd->fid == fid) {
return ofd;
}
}
return NULL;
}
struct osim_file_desc *
osim_file_find_sfid(struct osim_file_desc *parent, uint8_t sfid)
{
struct osim_file_desc *ofd;
llist_for_each_entry(ofd, &parent->child_list, list) {
if (ofd->sfid == sfid) {
return ofd;
}
}
return NULL;
}
/*! \brief Generate an APDU message and initialize APDU command header
* \param[in] cla CLASS byte
* \param[in] ins INSTRUCTION byte