mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 19:43:32 +00:00
88806b79b1
redbean lua handlers that perform sql queries can do 400k qps. We now use a separate compile-time options for SQLite, when building the SQLite shell versus building the production web serving code. It doesn't seem appropriate for something like redbean to include backups, progress callbacks, query completion, profiling, EXPLAIN, ALTER, ANALYZE, VACUUM, etc. since those tasks are better left to the sqlite3.com shell program. Lua SQLite pointer APIs have been removed since we're not using threads. The Lua APIs for installing update / commit / rollback hooks are removed due to a general sense of disagreement and an overall lack of comfort. Full-Text Search and R*Tree are as large as the rest of SQLite combined. Turning those off keeps redbean under 1mb when built for MODE=tiny which is nice for marketing purposes. If you need something that was removed, file an issue, and we'll add it.
35 lines
2.3 KiB
C
35 lines
2.3 KiB
C
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
|
|
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
|
╞══════════════════════════════════════════════════════════════════════════════╡
|
|
│ Copyright 2020 Justine Alexandra Roberts Tunney │
|
|
│ │
|
|
│ Permission to use, copy, modify, and/or distribute this software for │
|
|
│ any purpose with or without fee is hereby granted, provided that the │
|
|
│ above copyright notice and this permission notice appear in all copies. │
|
|
│ │
|
|
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
|
|
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
|
|
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
|
|
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
|
|
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
|
|
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
|
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
|
#include "libc/str/str.h"
|
|
|
|
/**
|
|
* Compares NUL-terminated UCS-2 strings case-insensitively w/ limit.
|
|
*
|
|
* @param a is first non-null NUL-terminated char16 string pointer
|
|
* @param b is second non-null NUL-terminated char16 string pointer
|
|
* @return is <0, 0, or >0 based on uint8_t comparison
|
|
* @asyncsignalsafe
|
|
*/
|
|
int strncasecmp16(const char16_t *a, const char16_t *b, size_t n) {
|
|
int x, y;
|
|
size_t i = 0;
|
|
if (!n-- || a == b) return 0;
|
|
while ((x = towlower(a[i])) == (y = towlower(b[i])) && b[i] && i < n) ++i;
|
|
return x - y;
|
|
}
|