@@ -776,10 +776,11 @@
776 776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define QRF_TEXT_Sql 2 /* Quote as an SQL literal */
777 777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define QRF_TEXT_Csv 3 /* CSV-style quoting */
778 778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define QRF_TEXT_Html 4 /* HTML-style quoting */
779 779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define QRF_TEXT_Tcl 5 /* C/Tcl quoting */
780 780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define QRF_TEXT_Json 6 /* JSON quoting */
781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define QRF_TEXT_Relaxed 7 /* Relaxed SQL quoting */
781 782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
782 783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
783 784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Quoting styles for BLOBs
784 785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Allowed values for sqlite3_qrf_spec.eBlob
785 786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -969,10 +970,19 @@
969 970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
970 971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define qrfSpace(x) ((qrfCType[(unsigned char)x]&1)!=0)
971 972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define qrfDigit(x) ((qrfCType[(unsigned char)x]&2)!=0)
972 973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define qrfAlpha(x) ((qrfCType[(unsigned char)x]&4)!=0)
973 974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define qrfAlnum(x) ((qrfCType[(unsigned char)x]&6)!=0)
975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef deliberate_fall_through
977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Quiet some compilers about some of our intentional code. */
978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # if defined(GCC_VERSION) && GCC_VERSION>=7000000
979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define deliberate_fall_through __attribute__((fallthrough));
980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # else
981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # define deliberate_fall_through
982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # endif
983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
974 984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
975 985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
976 986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Set an error code and error message.
977 987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
978 988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void qrfError(
@@ -1570,10 +1580,49 @@
1570 1580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOut[j++] = '^';
1571 1581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOut[j++] = 0x40+c;
1572 1582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1573 1583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1574 1584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Determine if the string z[] can be shown as plain text. Return true
1588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if z[] is unambiguously text. Return false if z[] needs to be
1589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** quoted.
1590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** All of the following must be true in order for z[] to be relaxable:
1592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (1) z[] does not begin or end with ' or whitespace
1594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (2) z[] is not the same as the NULL rendering
1595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (3) z[] does not looks like a numeric literal
1596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int qrfRelaxable(Qrf *p, const char *z){
1598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ size_t i, n;
1599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[0]=='\'' || qrfSpace(z[0]) ) return 0;
1600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[0]==0 && (p->spec.zNull==0 || p->spec.zNull[0]==0) ) return 0;
1601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n = strlen(z);
1602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[n-1]=='\'' || qrfSpace(z[n-1]) ) return 0;
1603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->spec.zNull && strcmp(p->spec.zNull,z)==0 ) return 0;
1604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i = (z[0]=='-' || z[0]=='+');
1605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strcmp(z+i,"Inf")==0 ) return 0;
1606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !qrfDigit(z[i]) ) return 1;
1607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i++;
1608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( qrfDigit(z[i]) ){ i++; }
1609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[i]==0 ) return 0;
1610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[i]=='.' ){
1611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i++;
1612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( qrfDigit(z[i]) ){ i++; }
1613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[i]==0 ) return 0;
1614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[i]=='e' || z[i]=='E' ){
1616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i++;
1617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[i]=='+' || z[i]=='-' ){ i++; }
1618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !qrfDigit(z[i]) ) return 1;
1619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i++;
1620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( qrfDigit(z[i]) ){ i++; }
1621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return z[i]!=0;
1623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1575 1624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1576 1625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1577 1626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If a field contains any character identified by a 1 in the following
1578 1627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** array, then the string must be quoted for CSV.
1579 1628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -1600,10 +1649,16 @@
1600 1649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Encode text appropriately and append it to pOut.
1601 1650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1602 1651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void qrfEncodeText(Qrf *p, sqlite3_str *pOut, const char *zTxt){
1603 1652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iStart = sqlite3_str_length(pOut);
1604 1653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( p->spec.eText ){
1654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case QRF_TEXT_Relaxed:
1655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( qrfRelaxable(p, zTxt) ){
1656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_appendall(pOut, zTxt);
1657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
1658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ deliberate_fall_through; /* FALLTHRU */
1605 1660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_TEXT_Sql: {
1606 1661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->spec.eEsc==QRF_ESC_Off ){
1607 1662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(pOut, "%Q", zTxt);
1608 1663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1609 1664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendf(pOut, "%#Q", zTxt);
@@ -2300,24 +2355,37 @@
2300 2355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define BOX_134 "\342\224\244" /* U+2524 -| */
2301 2356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define BOX_234 "\342\224\254" /* U+252c -,- */
2302 2357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define BOX_124 "\342\224\264" /* U+2534 -'- */
2303 2358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define BOX_1234 "\342\224\274" /* U+253c -|- */
2304 2359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Rounded corners: */
2361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BOX_R12 "\342\225\260" /* U+2570 '- */
2362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BOX_R23 "\342\225\255" /* U+256d ,- */
2363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BOX_R34 "\342\225\256" /* U+256e -, */
2364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BOX_R14 "\342\225\257" /* U+256f -' */
2365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Doubled horizontal lines: */
2367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define DBL_24 "\342\225\220" /* U+2550 === */
2368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define DBL_123 "\342\225\236" /* U+255e |= */
2369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define DBL_134 "\342\225\241" /* U+2561 =| */
2370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define DBL_1234 "\342\225\252" /* U+256a =|= */
2371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2305 2372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Draw horizontal line N characters long using unicode box
2306 2373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** characters
2307 2374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void qrfBoxLine(sqlite3_str *pOut, int N){
2309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char zDash[] =
2310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24
2311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24;
2312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const int nDash = sizeof(zDash) - 1;
2375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void qrfBoxLine(sqlite3_str *pOut, int N, int bDbl){
2376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *azDash[2] = {
2377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24,
2378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24
2379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };/* 0 1 2 3 4 5 6 7 8 9 */
2380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const int nDash = 30;
2313 2381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
N *= 3;
2314 2382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( N>nDash ){
2315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_str_append(pOut, zDash, nDash);
2383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_append(pOut, azDash[bDbl], nDash);
2316 2384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
N -= nDash;
2317 2385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_str_append(pOut, zDash, N);
2386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_str_append(pOut, azDash[bDbl], N);
2319 2387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2320 2388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2321 2389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2322 2390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Draw a horizontal separator for a QRF_STYLE_Box table.
2323 2391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -2324,22 +2392,23 @@
2324 2392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void qrfBoxSeparator(
2325 2393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str *pOut,
2326 2394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
qrfColData *p,
2327 2395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSep1,
2328 2396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSep2,
2329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zSep3
2397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zSep3,
2398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bDbl
2330 2399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
2331 2400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
2332 2401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nCol>0 ){
2333 2402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int useBorder = p->p->spec.bBorder!=QRF_No;
2334 2403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( useBorder ){
2335 2404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendall(pOut, zSep1);
2336 2405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qrfBoxLine(pOut, p->a[0].w+p->nMargin);
2406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qrfBoxLine(pOut, p->a[0].w+p->nMargin, bDbl);
2338 2407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=1; i<p->nCol; i++){
2339 2408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendall(pOut, zSep2);
2340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qrfBoxLine(pOut, p->a[i].w+p->nMargin);
2409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qrfBoxLine(pOut, p->a[i].w+p->nMargin, bDbl);
2341 2410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2342 2411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( useBorder ){
2343 2412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_str_appendall(pOut, zSep3);
2344 2413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2345 2414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -2743,11 +2812,11 @@
2743 2812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2744 2813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->spec.bBorder==QRF_No){
2745 2814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rowStart += 3;
2746 2815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rowSep = "\n";
2747 2816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
2748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qrfBoxSeparator(p->pOut, &data, BOX_23, BOX_234, BOX_34);
2817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qrfBoxSeparator(p->pOut, &data, BOX_R23, BOX_234, BOX_R34, 0);
2749 2818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2750 2819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
2751 2820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_STYLE_Table:
2752 2821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( data.nMargin ){
2753 2822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rowStart = "| ";
@@ -2876,12 +2945,14 @@
2876 2945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
qrfRowSeparator(p->pOut, &data, '+');
2877 2946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2878 2947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
2879 2948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2880 2949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_STYLE_Box: {
2881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( isTitleDataSeparator || data.bMultiRow ){
2882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qrfBoxSeparator(p->pOut, &data, BOX_123, BOX_1234, BOX_134);
2950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isTitleDataSeparator ){
2951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qrfBoxSeparator(p->pOut, &data, DBL_123, DBL_1234, DBL_134, 1);
2952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( data.bMultiRow ){
2953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qrfBoxSeparator(p->pOut, &data, BOX_123, BOX_1234, BOX_134, 0);
2883 2954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2884 2955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
2885 2956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2886 2957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_STYLE_Markdown: {
2887 2958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isTitleDataSeparator ){
@@ -2912,11 +2983,11 @@
2912 2983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2913 2984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Draw the line across the bottom of the table */
2914 2985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->spec.bBorder!=QRF_No ){
2915 2986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( p->spec.eStyle ){
2916 2987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_STYLE_Box:
2917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- qrfBoxSeparator(p->pOut, &data, BOX_12, BOX_124, BOX_14);
2988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ qrfBoxSeparator(p->pOut, &data, BOX_R12, BOX_124, BOX_R14, 0);
2918 2989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
2919 2990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_STYLE_Table:
2920 2991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
qrfRowSeparator(p->pOut, &data, '+');
2921 2992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
2922 2993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -3369,12 +3440,12 @@
3369 3440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->mxWidth<=0 ) p->mxWidth = QRF_MAX_WIDTH;
3370 3441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mxHeight = p->spec.nLineLimit;
3371 3442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->mxHeight<=0 ) p->mxHeight = 2147483647;
3372 3443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->spec.eStyle>QRF_STYLE_Table ) p->spec.eStyle = QRF_Auto;
3373 3444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->spec.eEsc>QRF_ESC_Symbol ) p->spec.eEsc = QRF_Auto;
3374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->spec.eText>QRF_TEXT_Json ) p->spec.eText = QRF_Auto;
3375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->spec.eTitle>QRF_TEXT_Json ) p->spec.eTitle = QRF_Auto;
3445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->spec.eText>QRF_TEXT_Relaxed ) p->spec.eText = QRF_Auto;
3446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->spec.eTitle>QRF_TEXT_Relaxed ) p->spec.eTitle = QRF_Auto;
3376 3447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->spec.eBlob>QRF_BLOB_Size ) p->spec.eBlob = QRF_Auto;
3377 3448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
qrf_reinit:
3378 3449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( p->spec.eStyle ){
3379 3450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_Auto: {
3380 3451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( sqlite3_stmt_isexplain(pStmt) ){
@@ -10563,10 +10634,11 @@
10563 10634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( b1==0 ) return 1;
10564 10635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sz = MultiByteToWideChar(CP_UTF8, 0, zPath, sz, b1, sz);
10565 10636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b1[sz] = 0;
10566 10637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = _wstat(b1, pStatBuf);
10567 10638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==0 ) statTimesToUtc(zPath, pStatBuf);
10639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_free(b1);
10568 10640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
10569 10641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
10570 10642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return stat(zPath, pStatBuf);
10571 10643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
10572 10644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -24168,11 +24240,11 @@
24168 24240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
24169 24241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Names of values for Mode.spec.eEsc and Mode.spec.eText
24170 24242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
24171 24243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const char *qrfEscNames[] = { "auto", "off", "ascii", "symbol" };
24172 24244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const char *qrfQuoteNames[] =
24173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "off","off","sql","hex","csv","tcl","json"};
24245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "off","off","sql","hex","csv","tcl","json","relaxed"};
24174 24246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
24175 24247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
24176 24248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These are the allowed shellFlgs values
24177 24249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
24178 24250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define SHFLG_Pagecache 0x00000001 /* The --pagecache option is used */
@@ -24424,10 +24496,11 @@
24424 24496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( eMode==MODE_TTY ){
24425 24497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u8 mFlags = p->mode.mFlags;
24426 24498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
modeFree(&p->mode);
24427 24499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
modeChange(p, MODE_QBox);
24428 24500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode.bAutoScreenWidth = 1;
24501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->mode.spec.eText = QRF_TEXT_Relaxed;
24429 24502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode.spec.nCharLimit = 300;
24430 24503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode.spec.nLineLimit = 5;
24431 24504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode.spec.bTextJsonb = QRF_Yes;
24432 24505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode.mFlags = mFlags;
24433 24506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -25989,10 +26062,11 @@
25989 26062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pArg->mode.bAutoScreenWidth ){
25990 26063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
spec.nScreenWidth = shellScreenWidth();
25991 26064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25992 26065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( spec.eBlob==QRF_BLOB_Auto ){
25993 26066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( spec.eText ){
26067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case QRF_TEXT_Relaxed: /* fall through */
25994 26068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_TEXT_Sql: spec.eBlob = QRF_BLOB_Sql; break;
25995 26069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case QRF_TEXT_Json: spec.eBlob = QRF_BLOB_Json; break;
25996 26070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: spec.eBlob = QRF_BLOB_Text; break;
25997 26071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
25998 26072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -26744,12 +26818,12 @@
26744 26818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" --list List available modes\n"
26745 26819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" --null STRING Render SQL NULL values as the given string\n"
26746 26820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" --once Setting changes to the right are reverted after\n"
26747 26821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" the next SQL command.\n"
26748 26822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" --quote ARG Enable/disable quoting of text. ARG can be\n"
26749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " \"off\", \"on\", \"sql\", \"csv\", \"html\", \"tcl\",\n"
26750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " or \"json\". \"off\" means show the text as-is.\n"
26823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " \"off\", \"on\", \"sql\", \"relaxed\", \"csv\", \"html\",\n"
26824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " \"tcl\", or \"json\". \"off\" means show the text as-is.\n"
26751 26825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" \"on\" is an alias for \"sql\".\n"
26752 26826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" --reset Changes all mode settings back to their default.\n"
26753 26827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" --rowsep STRING Use STRING as the row separator\n"
26754 26828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" --sw|--screenwidth N Declare the screen width of the output device\n"
26755 26829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" to be N characters. An attempt may be made to\n"
@@ -30630,12 +30704,12 @@
30630 30704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --list List available modes
30631 30705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --null STRING Render SQL NULL values as the given string
30632 30706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --once Setting changes to the right are reverted after
30633 30707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the next SQL command.
30634 30708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --quote ARG Enable/disable quoting of text. ARG can be
30635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** "off", "on", "sql", "csv", "html", "tcl",
30636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or "json". "off" means show the text as-is.
30709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "off", "on", "sql", "relaxed", "csv", "html",
30710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "tcl", or "json". "off" means show the text as-is.
30637 30711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "on" is an alias for "sql".
30638 30712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --reset Changes all mode settings back to their default.
30639 30713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --rowsep STRING Use STRING as the row separator
30640 30714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --sw|--screenwidth N Declare the screen width of the output device
30641 30715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to be N characters. An attempt may be made to
@@ -30840,13 +30914,14 @@
30840 30914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** how to set quoting. */
30841 30915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i++;
30842 30916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (k = pickStr(azArg[i],0,"no","yes","0","1",""))>=0 ){
30843 30917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
k &= 1; /* 0 for "off". 1 for "on". */
30844 30918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
30845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zErr = 0; /* 0 1 2 3 4 5 6 */
30846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- k = pickStr(azArg[i],&zErr,"off","on","sql","csv","html","tcl","json",
30847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "");
30919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zErr = 0;
30920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ k = pickStr(azArg[i],&zErr,
30921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "off","on","sql","csv","html","tcl","json","relaxed","");
30922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* 0 1 2 3 4 5 6 7 */
30848 30923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( k<0 ){
30849 30924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dotCmdError(p, i, "unknown", "%z", zErr);
30850 30925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
30851 30926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30852 30927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -30871,10 +30946,13 @@
30871 30946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode.spec.eText = QRF_TEXT_Tcl;
30872 30947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30873 30948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 6: /* json */
30874 30949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode.spec.eText = QRF_TEXT_Json;
30875 30950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 7: /* relaxed */
30952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->mode.spec.eText = QRF_TEXT_Relaxed;
30953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
30876 30954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: /* off */
30877 30955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->mode.spec.eText = QRF_TEXT_Plain;
30878 30956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
30879 30957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
30880 30958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
chng = 1;
30881 30959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!