diff options
author | Hans de Goede <hdegoede@redhat.com> | 2013-10-16 10:31:15 +0200 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2013-10-19 20:36:05 +0200 |
commit | 78bbaa181d9baf65aba1fe88074e4156150e31b8 (patch) | |
tree | 75cd533839e0fbcd7d45fbe7e6edf05183ac0dcf | |
parent | 1b81ebc00e1ddaa5326c0d58c382194d6bb92543 (diff) |
usbredirparser: Add a usbredirparser_caps_get_cap helper function
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
-rw-r--r-- | usbredirparser/usbredirparser.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/usbredirparser/usbredirparser.c b/usbredirparser/usbredirparser.c index b50ddec..6dd9d14 100644 --- a/usbredirparser/usbredirparser.c +++ b/usbredirparser/usbredirparser.c @@ -135,6 +135,8 @@ static void serialize_test(struct usbredirparser *parser_pub) static void usbredirparser_queue(struct usbredirparser *parser, uint32_t type, uint64_t id, void *type_header_in, uint8_t *data_in, int data_len); +static int usbredirparser_caps_get_cap(struct usbredirparser_priv *parser, + uint32_t *caps, int cap); struct usbredirparser *usbredirparser_create(void) { @@ -188,6 +190,20 @@ void usbredirparser_destroy(struct usbredirparser *parser_pub) free(parser); } +static int usbredirparser_caps_get_cap(struct usbredirparser_priv *parser, + uint32_t *caps, int cap) +{ + if (cap / 32 >= USB_REDIR_CAPS_SIZE) { + ERROR("error request for out of bounds cap: %d", cap); + return 0; + } + if (caps[cap / 32] & (1 << (cap % 32))) { + return 1; + } else { + return 0; + } +} + void usbredirparser_caps_set_cap(uint32_t *caps, int cap) { caps[cap / 32] |= 1 << (cap % 32); @@ -205,26 +221,14 @@ int usbredirparser_peer_has_cap(struct usbredirparser *parser_pub, int cap) { struct usbredirparser_priv *parser = (struct usbredirparser_priv *)parser_pub; - if (cap / 32 >= USB_REDIR_CAPS_SIZE) { - ERROR("error request for out of bounds cap: %d", cap); - return 0; - } - if ((parser->peer_caps[cap / 32]) & (1 << (cap % 32))) { - return 1; - } else { - return 0; - } + return usbredirparser_caps_get_cap(parser, parser->peer_caps, cap); } int usbredirparser_have_cap(struct usbredirparser *parser_pub, int cap) { struct usbredirparser_priv *parser = (struct usbredirparser_priv *)parser_pub; - if ((parser->our_caps[cap / 32]) & (1 << (cap % 32))) { - return 1; - } else { - return 0; - } + return usbredirparser_caps_get_cap(parser, parser->our_caps, cap); } static int usbredirparser_using_32bits_ids(struct usbredirparser *parser_pub) |