-C Avoid\sa\sresource\sleak\sin\san\serror\spath\sin\sthe\sicu\sextension.
-D 2026-05-28T11:29:05.704
+C The\s-csv\soption\sto\sthe\sCLI\salso\ssets\s"-limits\soff",\sfor\slegacy\ncompatibility,\sand\sbecause\sthat\sseems\sto\smake\ssense.\n[forum:/info/2026-05-28T16:23:36Z|Forum\sthread\s2026-05-28T16:23:36Z].
+D 2026-05-29T12:23:38.019
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F src/resolve.c 7e936a09405cb59e2b3e51a3ad23753e4803afc5269c5171a54c9bdd70f4fc50
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
F src/select.c 4c05cde130f26991b7411d8c6809e0630625e18078742c963a047b4b9cc01d49
-F src/shell.c.in 691fac6a7f6f6fc72836aa2779d81b8cf67c896a15699c65e810cd1e8c6270f4
+F src/shell.c.in 6104d39c2416ce235c01134cd79c5be5fdd71323d58be4ace6910b2c3f89253c
F src/sqlite.h.in 749454ec71c875bc130d399ff9a7e47191d143d1b9d8b4af3839b6028df9eda9
F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
F src/sqlite3ext.h 9788c301f95370fa30e808861f1d2e6f022a816ddbe2a4f67486784c1b31db2e
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 646e9b49153ebd7e09e3ef72cc4f64fb685d0cfd8b158ef7d11d37c50c3f0b7e
-R 81bf729d8c4142161698f7ae0f57bcc2
-U dan
-Z a8503d1e8f8b2786c97fea82e248cce7
+P 87c37dab7e53d1bd891f3fed624963b35ab15a785706d0964b5d07ab70421c10
+R 8367c73dbaaca89b3d19653c5b15b836
+U drh
+Z 434986435224008c0a9c313fa9bac32b
# Remove this line to create a well-formed Fossil manifest.
}
}
+/* Forward reference */
+static int pickStr(const char *zArg, char **pzErr, ...);
+
+/*
+** Change the limits on the display mode. Return 0 on
+** success. Return non-zero if zArg is mis-formatted.
+**
+** Valid arguments:
+**
+** "on" Default limits
+** "off" All limits turned off
+** L,C Line and Characters limits set
+** L,C,T Line, Character, and Title limits set
+**
+** Anything else returns non-zero
+*/
+static int modeSetLimit(ShellState *p, const char *zArg){
+ int k = zArg==0 ? 1 : pickStr(zArg,0,"on","off","");
+ if( k==0 ){
+ p->mode.spec.nLineLimit = DFLT_LINE_LIMIT;
+ p->mode.spec.nCharLimit = DFLT_CHAR_LIMIT;
+ p->mode.spec.nTitleLimit = DFLT_TITLE_LIMIT;
+ }else if( k==1 ){
+ p->mode.spec.nLineLimit = 0;
+ p->mode.spec.nCharLimit = 0;
+ p->mode.spec.nTitleLimit = 0;
+ }else{
+ int L, C, T = 0;
+ int nNum = sscanf(zArg, "%d,%d,%d", &L, &C, &T);
+ if( nNum<2 || L<0 || C<0 || T<0) return 1;
+ p->mode.spec.nLineLimit = L;
+ p->mode.spec.nCharLimit = C;
+ if( nNum==3 ) p->mode.spec.nTitleLimit = T;
+ }
+ return 0;
+}
+
/*
** Change the mode to eMode
*/
u8 mFlags = p->mode.mFlags;
modeFree(&p->mode);
modeChange(p, MODE_List);
+ modeSetLimit(p, "off");
p->mode.mFlags = mFlags;
}else if( eMode==MODE_TTY ){
u8 mFlags = p->mode.mFlags;
dotCmdError(p, i-1, "missing argument", 0);
return 1;
}
- k = pickStr(azArg[i],0,"on","off","");
- if( k==0 ){
- p->mode.spec.nLineLimit = DFLT_LINE_LIMIT;
- p->mode.spec.nCharLimit = DFLT_CHAR_LIMIT;
- p->mode.spec.nTitleLimit = DFLT_TITLE_LIMIT;
- }else if( k==1 ){
- p->mode.spec.nLineLimit = 0;
- p->mode.spec.nCharLimit = 0;
- p->mode.spec.nTitleLimit = 0;
- }else{
- int L, C, T = 0;
- int nNum = sscanf(azArg[i], "%d,%d,%d", &L, &C, &T);
- if( nNum<2 || L<0 || C<0 || T<0){
- dotCmdError(p, i, "bad argument", "Should be \"L,C,T\" where L, C"
- " and T are unsigned integers");
- return 1;
- }
- p->mode.spec.nLineLimit = L;
- p->mode.spec.nCharLimit = C;
- if( nNum==3 ) p->mode.spec.nTitleLimit = T;
+ if( modeSetLimit(p, azArg[i]) ){
+ dotCmdError(p, i, "bad argument", "Should be \"on\" or \"off\" or "
+ "\"L,C,T\" where L, C, and T are unsigned integers");
+ return 1;
}
chng = 1;
}else if( optionMatch(z,"list") ){
shell_check_oom(zSql);
modePush(p);
modeChange(p, MODE_BATCH);
- p->mode.spec.nLineLimit = 0;
- p->mode.spec.nCharLimit = 0;
- p->mode.spec.nTitleLimit = 0;
shell_exec(p, zSql, 0);
modePop(p);
sqlite3_free(zSql);
" -A ARGS... run \".archive ARGS\" and exit\n"
#endif
" -append append the database to the end of the file\n"
- " -ascii set output mode to 'ascii'\n"
+ " -ascii set '.mode ascii'\n"
" -bail stop after hitting an error\n"
" -batch force batch I/O\n"
- " -box set output mode to 'box'\n"
+ " -box set '.mode box'\n"
" -cmd COMMAND run \"COMMAND\" before reading stdin\n"
- " -column set output mode to 'column'\n"
- " -csv set output mode to 'csv'\n"
+ " -column set '.mode column'\n"
+ " -csv set '.mode csv -limits off'\n"
#if !defined(SQLITE_OMIT_DESERIALIZE)
" -deserialize open the database using sqlite3_deserialize()\n"
#endif
" -heap SIZE Size of heap for memsys3 or memsys5\n"
#endif
" -help show this message\n"
- " -html set output mode to HTML\n"
+ " -html set '.mode html'\n"
" -ifexists only open if database already exists\n"
" -interactive force interactive I/O\n"
- " -json set output mode to 'json'\n"
- " -line set output mode to 'line'\n"
- " -list set output mode to 'list'\n"
+ " -json set '.mode json'\n"
+ " -line set '.mode line'\n"
+ " -list set '.mode list'\n"
" -lookaside SIZE N use N entries of SZ bytes for lookaside memory\n"
- " -markdown set output mode to 'markdown'\n"
+ " -markdown set '.mode markdown'\n"
#if !defined(SQLITE_OMIT_DESERIALIZE)
" -maxsize N maximum size for a --deserialize database\n"
#endif
" -nullvalue TEXT set text string for NULL values. Default ''\n"
" -pagecache SIZE N use N slots of SZ bytes each for page cache memory\n"
" -pcachetrace trace all page cache operations\n"
- " -quote set output mode to 'quote'\n"
+ " -quote set '.mode quote'\n"
" -readonly open the database read-only\n"
" -safe enable safe-mode\n"
" -screenwidth N use N as the default screenwidth \n"
" -sorterref SIZE sorter references threshold size\n"
#endif
" -stats print memory stats before each finalize\n"
- " -table set output mode to 'table'\n"
- " -tabs set output mode to 'tabs'\n"
+ " -table set '.mode table'\n"
+ " -tabs set '.mode tabs'\n"
" -unsafe-testing allow unsafe commands and modes for testing\n"
" -version show SQLite version\n"
" -vfs NAME use NAME as the default VFS\n"
modeChange(&data, MODE_Box);
}else if( cli_strcmp(z,"-csv")==0 ){
modeChange(&data, MODE_Csv);
+ modeSetLimit(&data, "off");
}else if( cli_strcmp(z,"-escape")==0 && i+1<argc ){
/* See similar code at tag-20250224-1 */
const char *zEsc = argv[++i];