diff --git a/lib/sqlite/gen-sqlite3-namespace.sh b/lib/sqlite/gen-sqlite3-namespace.sh index d6fac932a..57c1a7f74 100755 --- a/lib/sqlite/gen-sqlite3-namespace.sh +++ b/lib/sqlite/gen-sqlite3-namespace.sh @@ -1,18 +1,18 @@ #!/bin/sh # -# Generate sqlite3_namespace.h from sqlite3.c and sqlite3.h +# Generate sqlite3_namespace.h from sqlite3.c # -# This script extracts all public SQLite3 symbols and generates a header -# that renames them with a heim_ prefix to avoid symbol conflicts. +# This script extracts all public SQLite3 function and data symbols +# (marked with SQLITE_API) and generates a header that renames them +# with a heim_ prefix to avoid symbol conflicts. # -# Usage: ./gen-sqlite3-namespace.sh [sqlite3.c] [sqlite3.h] +# Usage: ./gen-sqlite3-namespace.sh [sqlite3.c] # # Run this script after importing a new version of SQLite3. set -e SQLITE3_C="${1:-sqlite3.c}" -SQLITE3_H="${2:-sqlite3.h}" OUTPUT="sqlite3_namespace.h" if [ ! -f "$SQLITE3_C" ]; then @@ -20,30 +20,16 @@ if [ ! -f "$SQLITE3_C" ]; then exit 1 fi -if [ ! -f "$SQLITE3_H" ]; then - echo "Error: $SQLITE3_H not found" >&2 - exit 1 -fi - # Extract symbols from SQLITE_API declarations in sqlite3.c -# This catches functions and variables like sqlite3_open, sqlite3_version, etc. +# This catches functions and data symbols like sqlite3_open, sqlite3_version, etc. # Also catches sqlite3session_*, sqlite3changegroup_*, sqlite3rbu_*, etc. -grep '^SQLITE_API' "$SQLITE3_C" | grep -oE 'sqlite3[a-zA-Z0-9_]*' | sort -u > /tmp/sqlite_funcs.$$ - -# Extract type names from typedef declarations in sqlite3.h -grep -E '^typedef' "$SQLITE3_H" | grep -oE 'sqlite3[a-zA-Z0-9_]*' | sort -u > /tmp/sqlite_types.$$ - -# Also get sqlite_int64 and sqlite_uint64 -grep -E '^typedef' "$SQLITE3_H" | grep -oE 'sqlite_[a-zA-Z0-9_]*' | sort -u >> /tmp/sqlite_types.$$ - -# Combine and deduplicate -cat /tmp/sqlite_funcs.$$ /tmp/sqlite_types.$$ | sort -u > /tmp/all_symbols.$$ +grep '^SQLITE_API' "$SQLITE3_C" | grep -oE 'sqlite3[a-zA-Z0-9_]*' | sort -u > /tmp/sqlite_symbols.$$ # Clean up temp files on exit -trap "rm -f /tmp/sqlite_funcs.$$ /tmp/sqlite_types.$$ /tmp/all_symbols.$$" EXIT +trap "rm -f /tmp/sqlite_symbols.$$" EXIT # Count symbols -NUM_SYMBOLS=$(wc -l < /tmp/all_symbols.$$) +NUM_SYMBOLS=$(wc -l < /tmp/sqlite_symbols.$$) echo "Found $NUM_SYMBOLS symbols to rename" # Generate the header @@ -82,9 +68,9 @@ cat > "$OUTPUT" << 'HEADER_EOF' */ /* - * This header renames all public SQLite3 symbols to use a heim_ prefix - * to avoid symbol conflicts when both libheimsqlite and libsqlite3 are - * loaded in the same process. + * This header renames all public SQLite3 function and data symbols to use + * a heim_ prefix to avoid symbol conflicts when both libheimsqlite and + * libsqlite3 are loaded in the same process. * * This file is auto-generated by gen-sqlite3-namespace.sh * Regenerate after importing a new SQLite version: @@ -100,7 +86,7 @@ HEADER_EOF # Generate the #define lines while read sym; do echo "#define $sym heim_$sym" -done < /tmp/all_symbols.$$ >> "$OUTPUT" +done < /tmp/sqlite_symbols.$$ >> "$OUTPUT" cat >> "$OUTPUT" << 'FOOTER_EOF' diff --git a/lib/sqlite/sqlite3_namespace.h b/lib/sqlite/sqlite3_namespace.h index 260adab71..ff0160cc2 100644 --- a/lib/sqlite/sqlite3_namespace.h +++ b/lib/sqlite/sqlite3_namespace.h @@ -32,9 +32,9 @@ */ /* - * This header renames all public SQLite3 symbols to use a heim_ prefix - * to avoid symbol conflicts when both libheimsqlite and libsqlite3 are - * loaded in the same process. + * This header renames all public SQLite3 function and data symbols to use + * a heim_ prefix to avoid symbol conflicts when both libheimsqlite and + * libsqlite3 are loaded in the same process. * * This file is auto-generated by gen-sqlite3-namespace.sh * Regenerate after importing a new SQLite version: @@ -49,7 +49,6 @@ #define sqlite3_activate_cerod heim_sqlite3_activate_cerod #define sqlite3_aggregate_context heim_sqlite3_aggregate_context #define sqlite3_aggregate_count heim_sqlite3_aggregate_count -#define sqlite3_api_routines heim_sqlite3_api_routines #define sqlite3_auto_extension heim_sqlite3_auto_extension #define sqlite3_backup heim_sqlite3_backup #define sqlite3_backup_finish heim_sqlite3_backup_finish @@ -82,7 +81,6 @@ #define sqlite3_blob_write heim_sqlite3_blob_write #define sqlite3_busy_handler heim_sqlite3_busy_handler #define sqlite3_busy_timeout heim_sqlite3_busy_timeout -#define sqlite3_callback heim_sqlite3_callback #define sqlite3_cancel_auto_extension heim_sqlite3_cancel_auto_extension #define sqlite3_changegroup heim_sqlite3_changegroup #define sqlite3changegroup_add heim_sqlite3changegroup_add @@ -172,7 +170,6 @@ #define sqlite3_db_status heim_sqlite3_db_status #define sqlite3_declare_vtab heim_sqlite3_declare_vtab #define sqlite3_deserialize heim_sqlite3_deserialize -#define sqlite3_destructor_type heim_sqlite3_destructor_type #define sqlite3_diskfull heim_sqlite3_diskfull #define sqlite3_diskfull_pending heim_sqlite3_diskfull_pending #define sqlite3_drop_modules heim_sqlite3_drop_modules @@ -221,7 +218,6 @@ #define sqlite3_io_error_hit heim_sqlite3_io_error_hit #define sqlite3_io_error_pending heim_sqlite3_io_error_pending #define sqlite3_io_error_persist heim_sqlite3_io_error_persist -#define sqlite3_io_methods heim_sqlite3_io_methods #define sqlite3IoTrace heim_sqlite3IoTrace #define sqlite3_json_init heim_sqlite3_json_init #define sqlite3_keyword_check heim_sqlite3_keyword_check @@ -238,11 +234,9 @@ #define sqlite3_malloc64 heim_sqlite3_malloc64 #define sqlite3_max_blobsize heim_sqlite3_max_blobsize #define sqlite3_memdebug_vfs_oom_test heim_sqlite3_memdebug_vfs_oom_test -#define sqlite3_mem_methods heim_sqlite3_mem_methods #define sqlite3_memory_alarm heim_sqlite3_memory_alarm #define sqlite3_memory_highwater heim_sqlite3_memory_highwater #define sqlite3_memory_used heim_sqlite3_memory_used -#define sqlite3_module heim_sqlite3_module #define sqlite3_mprintf heim_sqlite3_mprintf #define sqlite3_msize heim_sqlite3_msize #define sqlite3_mutex heim_sqlite3_mutex @@ -251,7 +245,6 @@ #define sqlite3_mutex_free heim_sqlite3_mutex_free #define sqlite3_mutex_held heim_sqlite3_mutex_held #define sqlite3_mutex_leave heim_sqlite3_mutex_leave -#define sqlite3_mutex_methods heim_sqlite3_mutex_methods #define sqlite3_mutex_notheld heim_sqlite3_mutex_notheld #define sqlite3_mutex_try heim_sqlite3_mutex_try #define sqlite3_next_stmt heim_sqlite3_next_stmt @@ -268,10 +261,6 @@ #define sqlite3_pager_readdb_count heim_sqlite3_pager_readdb_count #define sqlite3_pager_writedb_count heim_sqlite3_pager_writedb_count #define sqlite3_pager_writej_count heim_sqlite3_pager_writej_count -#define sqlite3_pcache heim_sqlite3_pcache -#define sqlite3_pcache_methods heim_sqlite3_pcache_methods -#define sqlite3_pcache_methods2 heim_sqlite3_pcache_methods2 -#define sqlite3_pcache_page heim_sqlite3_pcache_page #define sqlite3_prepare heim_sqlite3_prepare #define sqlite3_prepare16 heim_sqlite3_prepare16 #define sqlite3_prepare16_v2 heim_sqlite3_prepare16_v2 @@ -333,11 +322,9 @@ #define sqlite3_result_zeroblob heim_sqlite3_result_zeroblob #define sqlite3_result_zeroblob64 heim_sqlite3_result_zeroblob64 #define sqlite3_rollback_hook heim_sqlite3_rollback_hook -#define sqlite3_rtree_geometry heim_sqlite3_rtree_geometry #define sqlite3_rtree_geometry_callback heim_sqlite3_rtree_geometry_callback #define sqlite3_rtree_init heim_sqlite3_rtree_init #define sqlite3_rtree_query_callback heim_sqlite3_rtree_query_callback -#define sqlite3_rtree_query_info heim_sqlite3_rtree_query_info #define sqlite3_search_count heim_sqlite3_search_count #define sqlite3_serialize heim_sqlite3_serialize #define sqlite3_session heim_sqlite3_session @@ -399,7 +386,6 @@ #define sqlite3_str_value heim_sqlite3_str_value #define sqlite3_str_vappendf heim_sqlite3_str_vappendf #define sqlite3_sync_count heim_sqlite3_sync_count -#define sqlite3_syscall_ptr heim_sqlite3_syscall_ptr #define sqlite3_system_errno heim_sqlite3_system_errno #define sqlite3_table_column_metadata heim_sqlite3_table_column_metadata #define sqlite3_temp_directory heim_sqlite3_temp_directory @@ -446,10 +432,8 @@ #define sqlite3_vfs_unregister heim_sqlite3_vfs_unregister #define sqlite3_vmprintf heim_sqlite3_vmprintf #define sqlite3_vsnprintf heim_sqlite3_vsnprintf -#define sqlite3_vtab heim_sqlite3_vtab #define sqlite3_vtab_collation heim_sqlite3_vtab_collation #define sqlite3_vtab_config heim_sqlite3_vtab_config -#define sqlite3_vtab_cursor heim_sqlite3_vtab_cursor #define sqlite3_vtab_nochange heim_sqlite3_vtab_nochange #define sqlite3_vtab_on_conflict heim_sqlite3_vtab_on_conflict #define sqlite3_wal_autocheckpoint heim_sqlite3_wal_autocheckpoint @@ -473,7 +457,5 @@ #define sqlite3_wsd_find heim_sqlite3_wsd_find #define sqlite3_wsd_init heim_sqlite3_wsd_init #define sqlite3_xferopt_count heim_sqlite3_xferopt_count -#define sqlite_int64 heim_sqlite_int64 -#define sqlite_uint64 heim_sqlite_uint64 #endif /* SQLITE3_NAMESPACE_H */