#include <stdio.h>
#include "db_sql_codegen.h"
void setString(char **pz, ...) {
va_list ap;
size_t nByte;
const char *z;
char *zResult;
assert( pz!=0 );
nByte = 1;
va_start(ap, pz);
while ( (z = va_arg(ap, const char*))!=0 ) {
nByte += strlen(z);
}
va_end(ap);
free(*pz);
*pz = zResult = malloc(nByte);
if ( zResult==0 ) {
return;
}
*zResult = 0;
va_start(ap, pz);
while ( (z = va_arg(ap, const char*))!=0 ) {
size_t n = strlen(z);
memcpy(zResult, z, n);
zResult += n;
}
zResult[0] = 0;
va_end(ap);
}
const char *sqlite3ErrStr(int rc) {
const char *z;
switch ( rc & 0xff ) {
case SQLITE_ROW:
case SQLITE_DONE:
case SQLITE_OK: z = "not an error"; break;
case SQLITE_ERROR: z = "SQL logic error or missing database"; break;
case SQLITE_PERM: z = "access permission denied"; break;
case SQLITE_ABORT: z = "callback requested query abort"; break;
case SQLITE_BUSY: z = "database is locked"; break;
case SQLITE_LOCKED: z = "database table is locked"; break;
case SQLITE_NOMEM: z = "out of memory"; break;
case SQLITE_READONLY: z = "attempt to write a readonly database"; break;
case SQLITE_INTERRUPT: z = "interrupted"; break;
case SQLITE_IOERR: z = "disk I/O error"; break;
case SQLITE_CORRUPT: z = "database disk image is malformed"; break;
case SQLITE_FULL: z = "database or disk is full"; break;
case SQLITE_CANTOPEN: z = "unable to open database file"; break;
case SQLITE_EMPTY: z = "table contains no data"; break;
case SQLITE_SCHEMA: z = "database schema has changed"; break;
case SQLITE_TOOBIG: z = "String or BLOB exceeded size limit"; break;
case SQLITE_CONSTRAINT: z = "constraint failed"; break;
case SQLITE_MISMATCH: z = "datatype mismatch"; break;
case SQLITE_MISUSE: z = "library routine called out of sequence";break;
case SQLITE_NOLFS: z = "large file support is disabled"; break;
case SQLITE_AUTH: z = "authorization denied"; break;
case SQLITE_FORMAT: z = "auxiliary database format error"; break;
case SQLITE_RANGE: z = "bind or column index out of range"; break;
case SQLITE_NOTADB: z = "file is encrypted or is not a database";break;
default: z = "unknown error"; break;
}
return z;
}
void sqlite3ErrorMsg(Parse *pParse, const char *zFormat, ...) {
va_list ap;
pParse->nErr++;
free(pParse->zErrMsg);
va_start(ap, zFormat);
pParse->zErrMsg = sqlite3VMPrintf(pParse->db, zFormat, ap);
va_end(ap);
if ( pParse->rc==SQLITE_OK ) {
pParse->rc = SQLITE_ERROR;
}
}
void sqlite3Dequote(char *z) {
int quote;
int i, j;
if ( z==0 ) return;
quote = z[0];
switch ( quote ) {
case '\'': break;
case '"': break;
case '`': break;
case '[': quote = ']'; break;
default: return;
}
for (i=1, j=0; z[i]; i++) {
if ( z[i]==quote ) {
if ( z[i+1]==quote ) {
z[j++] = quote;
i++;
}else{
z[j++] = 0;
break;
}
}else{
z[j++] = z[i];
}
}
}
const unsigned char sqlite3UpperToLower[] = {
#ifdef SQLITE_ASCII
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99,100,101,102,103,
104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,
122, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103,104,105,106,107,
108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,
126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,
162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,
180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,
198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,
216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,
234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,
252,253,254,255
#endif
#ifdef SQLITE_EBCDIC
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 66, 67, 68, 69, 70, 71, 72, 73,106,107,108,109,110,111,
112, 81, 82, 83, 84, 85, 86, 87, 88, 89,122,123,124,125,126,127,
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
144,145,146,147,148,149,150,151,152,153,154,155,156,157,156,159,
160,161,162,163,164,165,166,167,168,169,170,171,140,141,142,175,
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
192,129,130,131,132,133,134,135,136,137,202,203,204,205,206,207,
208,145,146,147,148,149,150,151,152,153,218,219,220,221,222,223,
224,225,162,163,164,165,166,167,168,169,232,203,204,205,206,207,
239,240,241,242,243,244,245,246,247,248,249,219,220,221,222,255,
#endif
};
#define UpperToLower sqlite3UpperToLower
int sqlite3StrICmp(const char *zLeft, const char *zRight) {
register unsigned char *a, *b;
a = (unsigned char *)zLeft;
b = (unsigned char *)zRight;
while ( *a!=0 && UpperToLower[*a]==UpperToLower[*b]) { a++; b++; }
return UpperToLower[*a] - UpperToLower[*b];
}
int sqlite3StrNICmp(const char *zLeft, const char *zRight, int N) {
register unsigned char *a, *b;
a = (unsigned char *)zLeft;
b = (unsigned char *)zRight;
while ( N-- > 0 && *a!=0 && UpperToLower[*a]==UpperToLower[*b]) { a++; b++; }
return N<0 ? 0 : UpperToLower[*a] - UpperToLower[*b];
}
int sqlite3IsNaN(double x) {
volatile double y = x;
return x!=y;
}
void *sqlite3DbMallocZero(sqlite3 *db, unsigned n) {
COMPQUIET(db, NULL);
return calloc(n, 1);
}