From: stephan Date: Wed, 16 Jul 2025 09:27:55 +0000 (+0000) Subject: Teach the sqlite3 CLI shell to look in XDG_STATE_HOME for the CLI history file before... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27e13f4f3aba133b0372f4b1fa23c6b9dce33a0b;p=thirdparty%2Fsqlite.git Teach the sqlite3 CLI shell to look in XDG_STATE_HOME for the CLI history file before falling back to its historical location in the user's home directory. FossilOrigin-Name: 1e663374c3fcc20ab0b3250aa1ff9d5e5ac391c89808ad589aa30c8882d4b61e --- 27e13f4f3aba133b0372f4b1fa23c6b9dce33a0b diff --cc manifest index 304c2d4d6a,353f38b6e8..6dd5cd61af --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Avoid\sevaluating\sspecial\svtab\soperators\s(e.g.\sMATCH)\sthat\sare\spart\sof\sON\sclauses\sattached\sto\sleft\sjoins\sfrom\sbeing\sevaluated\stoo\searly.\sFix\sfor\s[forum:/forumpost/428ef7c468\s|\sforum\spost\s428ef7c468]. - D 2025-07-15T19:00:01.118 -C Squelch\sa\slegitimate\sbut\sharmless\s'discards\sconst'\swarning. -D 2025-07-16T09:20:02.408 ++C Teach\sthe\ssqlite3\sCLI\sshell\sto\slook\sin\sXDG_STATE_HOME\sfor\sthe\sCLI\shistory\sfile\sbefore\sfalling\sback\sto\sits\shistorical\slocation\sin\sthe\suser's\shome\sdirectory. ++D 2025-07-16T09:27:55.137 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@@ -718,8 -717,8 +718,8 @@@ F mptest/crash02.subtest f4ef05adcd15d6 F mptest/mptest.c aa41ace6dbc5050d76b02548d3521e6bbccae4f0 F mptest/multiwrite01.test dab5c5f8f9534971efce679152c5146da265222d F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b - F sqlite3.1 acdff36db796e2d00225b911d3047d580cd136547298435426ce9d40347973cc + F sqlite3.1 9e426a150af072be26b0661bcd54567692d979e99bc7daf55b22b952ff8e41a6 -F sqlite3.pc.in 0977c03a4da7c4204bd60e784a0efb8d51a190448aba78a4e973fe7192bdaf03 +F sqlite3.pc.in e6dee284fba59ef500092fdc1843df3be8433323a3733c91da96690a50a5b398 F src/alter.c fc7bbbeb9e89c7124bf5772ce474b333b7bdc18d6e080763211a40fde69fb1da F src/analyze.c 03bcfc083fc0cccaa9ded93604e1d4244ea245c17285d463ef6a60425fcb247d F src/attach.c 9af61b63b10ee702b1594ecd24fb8cea0839cfdb6addee52fba26fa879f5db9d @@@ -784,10 -783,10 +784,10 @@@ F src/pragma.c 30b535d0a66348df844ee36f F src/prepare.c 1832be043fce7d489959aae6f994c452d023914714c4d5457beaed51c0f3d126 F src/printf.c 71b6d3a0093bf23f473e25480ca0024e8962681506c75f4ffd3d343a3f0ab113 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c -F src/resolve.c d40fe18d7c2fd0339f5846ffcf7d6809866e380acdf14c76fb2af87e9fe13f64 +F src/resolve.c d3ee7ed308d46f4ee6d3bb6316d8d6f87158f93a7fd616732138cc953cf364f0 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97 -F src/select.c 882d739e0d5e6c7a8b46a3cca3ada37fe1a56301f1360d6b141312c666bbe482 -F src/shell.c.in 550ca8a09f8ac55203e69aae34e429b79d92cb44edf7419d8f3dd88eefab5d39 +F src/select.c fc003cad96a105765261f7b6c5f4596e505894262bb5593cb29e10b682800d12 - F src/shell.c.in 73c0eeb7c265d59b99219d5aa055f412f07842088d8036b6d259927d85dd1bbf ++F src/shell.c.in 2be7d0b2ba7221bd991f96d0c72728c06cead09bec3965e230ad703c9daf0c8a F src/sqlite.h.in 5c54f2461a1ea529bab8499148a2b238e2d4bb571d59e8ea5322d0c190abb693 F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479 F src/sqlite3ext.h 0bfd049bb2088cc44c2ad54f2079d1c6e43091a4e1ce8868779b75f6c1484f1e @@@ -2213,9 -2208,8 +2213,9 @@@ F tool/version-info.c 3b36468a90faf1bbd F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f - P 0fcc3cbdfa21adf97aed01fa76991cccf9380e2755b0182a9e2c94e3c8fb38d7 ffebbb7ae977adc6c729d30b51f2ff29d416e018d82e450d87ccd973472819c8 - R 0ec55818aae25b06d1ba2943b74e8035 - T +closed ffebbb7ae977adc6c729d30b51f2ff29d416e018d82e450d87ccd973472819c8 - U dan - Z 39542e12671ba6b0f9f551dd25869359 -P ebb346c5aa427b9e84a035278ee245d54810d9954efef12b898f2d7bc0ff630c -R debb7a97a27a2dab2543b88f76ae8cc2 ++P 9f184f8dfa5ef6d57e10376adc30e0060ceda07d283c23dfdfe3dbdd6608f839 73539fe0932494234b8f2293b0dbc1f0aac60a7d00fdaf4a59c2da654ce26f5b ++R 301553834aa3054a0cc5a0c4c21b9798 ++T +closed 73539fe0932494234b8f2293b0dbc1f0aac60a7d00fdaf4a59c2da654ce26f5b Closed\sby\sintegrate-merge. + U stephan -Z affb48d71da77c1ae112258e0a7a4bb5 ++Z f8c26aad77c21d4fab9a1de2f2326205 # Remove this line to create a well-formed Fossil manifest. diff --cc manifest.uuid index 38a5d0f0c3,d86bd127b8..abbd3fd28c --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 9f184f8dfa5ef6d57e10376adc30e0060ceda07d283c23dfdfe3dbdd6608f839 -73539fe0932494234b8f2293b0dbc1f0aac60a7d00fdaf4a59c2da654ce26f5b ++1e663374c3fcc20ab0b3250aa1ff9d5e5ac391c89808ad589aa30c8882d4b61e diff --cc src/shell.c.in index 5cda6a1a1b,7b28bf6842..a311d85c4f --- a/src/shell.c.in +++ b/src/shell.c.in @@@ -12760,16 -12759,28 +12760,30 @@@ static char *find_home_dir(int clearFla } /* - ** On non-Windows platforms, look for $XDG_CONFIG_HOME. - ** If ${XDG_CONFIG_HOME}/sqlite3/sqliterc is found, return - ** the path to it. If there is no $(XDG_CONFIG_HOME) then - ** look for $(HOME)/.config/sqlite3/sqliterc and if found - ** return that. If none of these are found, return 0. + ** On non-Windows platforms, look for: ** - ** The string returned is obtained from sqlite3_malloc() and - ** should be freed by the caller. + ** - ${zEnvVar}/${zBaseName} + ** - ${HOME}/${zSubdir}/${zBaseName} + ** + ** $zEnvVar is intended to be the name of an XDG_... environment + ** variable, e.g. XDG_CONFIG_HOME or XDG_STATE_HOME. If zEnvVar is + ** NULL or getenv(zEnvVar) is NULL then fall back to the second + ** option. If the selected option is not found in the filesystem, + ** return 0. + ** + ** zSubdir may be NULL or empty, in which case ${HOME}/${zBaseName} + ** becomes the fallback. + ** + ** Both zSubdir and zBaseName may contain subdirectory parts. zSubdir -** will conventionally be ".config" or ".local/state". ++** will conventionally be ".config" or ".local/state", which, not ++** coincidentally, is the typical subdir of the corresponding XDG_... ++** var with the XDG var's $HOME prefix. + ** + ** The returned string is obtained from sqlite3_malloc() and should be + ** sqlite3_free()'d by the caller. */ - static char *find_xdg_config(void){ + static char *find_xdg_file(const char *zEnvVar, const char *zSubdir, + const char *zBaseName){ #if defined(_WIN32) || defined(WIN32) || defined(_WIN32_WCE) \ || defined(__RTP__) || defined(_WRS_KERNEL) return 0;