]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make column output modes in the CLI responsive to the --escape setting.
authordrh <>
Mon, 24 Feb 2025 00:40:36 +0000 (00:40 +0000)
committerdrh <>
Mon, 24 Feb 2025 00:40:36 +0000 (00:40 +0000)
FossilOrigin-Name: 14ff5557d450475ad959f8c753c0cecb85dfca7346fcacd91da16e4d36e30508

manifest
manifest.uuid
src/shell.c.in

index 388bc72c577991502daf9d4b6e57c1ea81f5eb70..640183e40695b17559de1367218cbf10dca297f8 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Three\sdifferent\s--escape\smodes:\s\ssymbol,\sascii,\soff.
-D 2025-02-24T00:18:12.616
+C Make\scolumn\soutput\smodes\sin\sthe\sCLI\sresponsive\sto\sthe\s--escape\ssetting.
+D 2025-02-24T00:40:36.130
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -782,7 +782,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c 626c24b258b111f75c22107aa5614ad89810df3026f5ca071116d3fe75925c75
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
 F src/select.c a076f7db3a0fcbd9f710d7746cfc07e0b3baadee45eb3136bedc29c598ef8f1c
-F src/shell.c.in e846d86150299b4f49ee4ee6a2f3b59d9460c7dda9280b6046d80778b513deec
+F src/shell.c.in 93b115083f702bfef5b4cfabc908ff7c56275a8eb43837695940e953cd98b1d6
 F src/sqlite.h.in 8d4486fb28a90de818ac1e8c6206ea458e7de6bd8e0dfa3d554494f155be8c01
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
@@ -2210,8 +2210,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 9c2f974c17e3dfac78f3808fdfe916f7617cfdaa64430af38eae21bd6592e6f5
-R 76a86dfe0f25913e8833da92cffca725
+P b5adb52fc0dc1838cb9c66cff422f2b8ec147e546cf909dd3c48731fa1edfe50
+R e22b9c730b45578a252088be598cc957
 U drh
-Z b3eaebce72752a9b1304ed1c64dcf320
+Z 0141780f340c58ec2ae1b4be639dc53e
 # Remove this line to create a well-formed Fossil manifest.
index 890ec996a046857c129826e86f5481fc2a54f297..fc19a63267492ef4d86477059ccfb5a50fa12b0c 100644 (file)
@@ -1 +1 @@
-b5adb52fc0dc1838cb9c66cff422f2b8ec147e546cf909dd3c48731fa1edfe50
+14ff5557d450475ad959f8c753c0cecb85dfca7346fcacd91da16e4d36e30508
index 3bc8d2717322789ff47c6af86cb89435a6af2226..401c4bcc0522f37ad3579797a30d5de001d80d15 100644 (file)
@@ -3916,6 +3916,7 @@ static void print_box_row_separator(
 ** the last line, write a NULL into *pzTail. (*pzTail is not allocated.)
 */
 static char *translateForDisplayAndDup(
+  ShellState *p,                     /* To access current settings */
   const unsigned char *z,            /* Input text to be transformed */
   const unsigned char **pzTail,      /* OUT: Tail of the input for next line */
   int mxWidth,                       /* Max width.  0 means no limit */
@@ -4017,9 +4018,20 @@ static char *translateForDisplayAndDup(
       i++;
       continue;
     }
-    zOut[j++] = 0xe2;
-    zOut[j++] = 0x90;
-    zOut[j++] = 0x80 + c;
+    switch( p->eEscMode ){
+      case SHELL_ESC_SYMBOL:
+        zOut[j++] = 0xe2;
+        zOut[j++] = 0x90;
+        zOut[j++] = 0x80 + c;
+        break;
+      case SHELL_ESC_ASCII:
+        zOut[j++] = '^';
+        zOut[j++] = 0x40 + c;
+        break;
+      case SHELL_ESC_OFF:
+        zOut[j++] = c;
+        break;
+    }
     i++;
   }
   zOut[j] = 0;
@@ -4132,7 +4144,7 @@ static void exec_prepared_stmt_columnar(
     if( wx<0 ) wx = -wx;
     uz = (const unsigned char*)sqlite3_column_name(pStmt,i);
     if( uz==0 ) uz = (u8*)"";
-    azData[i] = translateForDisplayAndDup(uz, &zNotUsed, wx, bw);
+    azData[i] = translateForDisplayAndDup(p, uz, &zNotUsed, wx, bw);
   }
   do{
     int useNextLine = bNextLine;
@@ -4164,7 +4176,7 @@ static void exec_prepared_stmt_columnar(
         if( uz==0 ) uz = (u8*)zShowNull;
       }
       azData[nRow*nColumn + i]
-        = translateForDisplayAndDup(uz, &azNextLine[i], wx, bw);
+        = translateForDisplayAndDup(p, uz, &azNextLine[i], wx, bw);
       if( azNextLine[i] ){
         bNextLine = 1;
         abRowDiv[nRow-1] = 0;