diff options
-rw-r--r-- | libpam/include/pam_inline.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libpam/include/pam_inline.h b/libpam/include/pam_inline.h index 2e3a8d6a..ec05fe43 100644 --- a/libpam/include/pam_inline.h +++ b/libpam/include/pam_inline.h @@ -49,4 +49,19 @@ pam_str_skip_prefix_len(const char *str, const char *prefix, size_t prefix_len) #define pam_str_skip_prefix(str_, prefix_) \ pam_str_skip_prefix_len((str_), (prefix_), sizeof(prefix_) - 1 + PAM_MUST_BE_ARRAY(prefix_)) +/* + * Returns NULL if STR does not start with PREFIX + * (ignoring the case of the characters), + * or a pointer to the first char in STR after PREFIX. + * The length of PREFIX is specified by PREFIX_LEN. + */ +static inline const char * +pam_str_skip_icase_prefix_len(const char *str, const char *prefix, size_t prefix_len) +{ + return strncasecmp(str, prefix, prefix_len) ? NULL : str + prefix_len; +} + +#define pam_str_skip_icase_prefix(str_, prefix_) \ + pam_str_skip_icase_prefix_len((str_), (prefix_), sizeof(prefix_) - 1 + PAM_MUST_BE_ARRAY(prefix_)) + #endif /* PAM_INLINE_H */ |