diff --git a/damus-c/cursor.h b/damus-c/cursor.h index 96427535..bb3cc30f 100644 --- a/damus-c/cursor.h +++ b/damus-c/cursor.h @@ -369,6 +369,20 @@ static inline int push_sized_str(struct cursor *cursor, const char *str, int len return cursor_push(cursor, (u8*)str, len); } +static inline int cursor_push_lowercase(struct cursor *cur, const char *str, int len) +{ + int i; + + if (unlikely(cur->p + len >= cur->end)) + return 0; + + for (i = 0; i < len; i++) + cur->p[i] = tolower(str[i]); + + cur->p += len; + return 1; +} + static inline int cursor_push_str(struct cursor *cursor, const char *str) { return cursor_push(cursor, (u8*)str, (int)strlen(str)); diff --git a/nostrdb/nostrdb.c b/nostrdb/nostrdb.c index 37ace98d..39167645 100644 --- a/nostrdb/nostrdb.c +++ b/nostrdb/nostrdb.c @@ -164,8 +164,8 @@ static int ndb_make_text_search_key(unsigned char *buf, int bufsize, if (!push_varint(&cur, word_len)) return 0; - // non-null terminated string - if (!cursor_push(&cur, (unsigned char*)str, word_len)) + // non-null terminated, lowercase string + if (!cursor_push_lowercase(&cur, str, word_len)) return 0; // the index of the word in the content so that we can do more accurate