Index: pages/cli.in ================================================================== --- pages/cli.in +++ pages/cli.in @@ -237,15 +237,28 @@ continuation prompt.
The arguments passed to dot-commands are parsed from the command tail,
-per these rules: Arguments are delimited by whitespace (excluding newline);
-Text bounded by a pair of single-quotes or double-quotes is treated as a
-single argument, with the quotes stripped.
-Within a double-quoted argument, traditional C-string literal,
-backslash escape sequence translation is done.
+per these rules:
+(1) The trailing newline and any other trailing whitespace is discarded;
+(2) Whitespace immediately following the dot-command name or an argument
+input end bound is discarded;
+(3) An argument input begins with any non-whitespace character;
+(4) An argument input end bound depends upon its leading character thusly:
+ (4.a) for a leading single-quote ('), a single-quote acts
+as the end bound;
+ (4.b) for a leading double-quote ("), a unescaped double-quote
+ acts as the end bound;
+ (4.c) for any other leading character, the end bound is
+ any whitespace; and
+ (4.d) the command tail end acts as the end bound for any argument;
+(5) Within a double-quoted argument input, a backslash-escaped double-quote
+ is part of the argument rather than its terminating quote;
+(6) Within a double-quoted argument, traditional C-string literal, backslash
+ escape sequence translation is done; and
+(7) for quote-bounded argument inputs, the bounding quotes are stripped.
The dot-commands are interpreted by the sqlite3.exe command-line program, not by SQLite itself. So none of the dot-commands will work as an argument to SQLite interfaces like [sqlite3_prepare()] or [sqlite3_exec()].