diff options
Diffstat (limited to 'tests/functional/streq.c')
-rw-r--r-- | tests/functional/streq.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/functional/streq.c b/tests/functional/streq.c new file mode 100644 index 0000000..bbf3763 --- /dev/null +++ b/tests/functional/streq.c @@ -0,0 +1,36 @@ +#include <assert.h> +#include <stdbool.h> +#include <string.h> +#include <sqlite3ext.h> + + + +SQLITE_EXTENSION_INIT1 +static void +streq(sqlite3_context *const ctx, const int argc, sqlite3_value **const argv) { + assert(argc == 2); + const char *const str1 = (const char *)sqlite3_value_text(argv[0]); + const char *const str2 = (const char *)sqlite3_value_text(argv[1]); + const bool equal = strcmp(str1, str2) == 0; + const int result = equal ? 1 : 0; + sqlite3_result_int(ctx, result); +} + +int +sqlite3_extension_init( + sqlite3 *const db, + const char *const *const errmsg, + const sqlite3_api_routines *const api +) { + SQLITE_EXTENSION_INIT2(api); + return sqlite3_create_function( + db, + "streq", + 2, + SQLITE_UTF8, + (void *)db, + streq, + NULL, + NULL + ); +} |