1 /* 2 ** 2001 September 15 3 ** 4 ** The author disclaims copyright to this source code. In place of 5 ** a legal notice, here is a blessing: 6 ** 7 ** May you do good and not evil. 8 ** May you find forgiveness for yourself and forgive others. 9 ** May you share freely, never taking more than you give. 10 ** 11 ************************************************************************* 12 ** Utility functions used throughout sqlite. 13 ** 14 ** This file contains functions for allocating memory, comparing 15 ** strings, and stuff like that. 16 ** 17 ** $Id: util.c,v 1.241 2008/07/28 19:34:54 drh Exp $ 18 */ 19 #include "sqliteInt.h" 20 #include <stdarg.h> 21 #include <ctype.h> 22 23 24 /* 25 ** Return true if the floating point value is Not a Number (NaN). 26 */ 27 int sqlite3IsNaN(double x){ 28 /* This NaN test sometimes fails if compiled on GCC with -ffast-math. 29 ** On the other hand, the use of -ffast-math comes with the following 30 ** warning: 31 ** 32 ** This option [-ffast-math] should never be turned on by any 33 ** -O option since it can result in incorrect output for programs 34 ** which depend on an exact implementation of IEEE or ISO 35 ** rules/specifications for math functions. 36 ** 37 ** Under MSVC, this NaN test may fail if compiled with a floating- 38 ** point precision mode other than /fp:precise. From the MSDN 39 ** documentation: 40 ** 41 ** The compiler [with /fp:precise] will properly handle comparisons 42 ** involving NaN. For example, x != x evaluates to true if x is NaN 43 ** ... 44 */ 45 #ifdef __FAST_MATH__ 46 # error SQLite will not work correctly with the -ffast-math option of GCC. 47 #endif 48 volatile double y = x; 49 volatile double z = y; 50 return y!=z; 51 } 52 53 /* 54 ** Return the length of a string, except do not allow the string length 55 ** to exceed the SQLITE_LIMIT_LENGTH setting. 56 */ 57 int sqlite3Strlen(sqlite3 *db, const char *z){ 58 const char *z2 = z; 59 int len; 60 size_t x; 61 while( *z2 ){ z2++; } 62 x = z2 - z; 63 len = 0x7fffffff & x; 64 if( len!=x || len > db->aLimit[SQLITE_LIMIT_LENGTH] ){ 65 return db->aLimit[SQLITE_LIMIT_LENGTH]; 66 }else{ 67 return len; 68 } 69 } 70 71 /* 72 ** Set the most recent error code and error string for the sqlite 73 ** handle "db". The error code is set to "err_code". 74 ** 75 ** If it is not NULL, string zFormat specifies the format of the 76 ** error string in the style of the printf functions: The following 77 ** format characters are allowed: 78 ** 79 ** %s Insert a string 80 ** %z A string that should be freed after use 81 ** %d Insert an integer 82 ** %T Insert a token 83 ** %S Insert the first element of a SrcList 84 ** 85 ** zFormat and any string tokens that follow it are assumed to be 86 ** encoded in UTF-8. 87 ** 88 ** To clear the most recent error for sqlite handle "db", sqlite3Error 89 ** should be called with err_code set to SQLITE_OK and zFormat set 90 ** to NULL. 91 */ 92 void sqlite3Error(sqlite3 *db, int err_code, const char *zFormat, ...){ 93 if( db && (db->pErr || (db->pErr = sqlite3ValueNew(db))!=0) ){ 94 db->errCode = err_code; 95 if( zFormat ){ 96 char *z; 97 va_list ap; 98 va_start(ap, zFormat); 99 z = sqlite3VMPrintf(db, zFormat, ap); 100 va_end(ap); 101 sqlite3ValueSetStr(db->pErr, -1, z, SQLITE_UTF8, SQLITE_DYNAMIC); 102 }else{ 103 sqlite3ValueSetStr(db->pErr, 0, 0, SQLITE_UTF8, SQLITE_STATIC); 104 } 105 } 106 } 107 108 /* 109 ** Add an error message to pParse->zErrMsg and increment pParse->nErr. 110 ** The following formatting characters are allowed: 111 ** 112 ** %s Insert a string 113 ** %z A string that should be freed after use 114 ** %d Insert an integer 115 ** %T Insert a token 116 ** %S Insert the first element of a SrcList 117 ** 118 ** This function should be used to report any error that occurs whilst 119 ** compiling an SQL statement (i.e. within sqlite3_prepare()). The 120 ** last thing the sqlite3_prepare() function does is copy the error 121 ** stored by this function into the database handle using sqlite3Error(). 122 ** Function sqlite3Error() should be used during statement execution 123 ** (sqlite3_step() etc.). 124 */ 125 void sqlite3ErrorMsg(Parse *pParse, const char *zFormat, ...){ 126 va_list ap; 127 sqlite3 *db = pParse->db; 128 pParse->nErr++; 129 sqlite3DbFree(db, pParse->zErrMsg); 130 va_start(ap, zFormat); 131 pParse->zErrMsg = sqlite3VMPrintf(db, zFormat, ap); 132 va_end(ap); 133 if( pParse->rc==SQLITE_OK ){ 134 pParse->rc = SQLITE_ERROR; 135 } 136 } 137 138 /* 139 ** Clear the error message in pParse, if any 140 */ 141 void sqlite3ErrorClear(Parse *pParse){ 142 sqlite3DbFree(pParse->db, pParse->zErrMsg); 143 pParse->zErrMsg = 0; 144 pParse->nErr = 0; 145 } 146 147 /* 148 ** Convert an SQL-style quoted string into a normal string by removing 149 ** the quote characters. The conversion is done in-place. If the 150 ** input does not begin with a quote character, then this routine 151 ** is a no-op. 152 ** 153 ** 2002-Feb-14: This routine is extended to remove MS-Access style 154 ** brackets from around identifers. For example: "[a-b-c]" becomes 155 ** "a-b-c". 156 */ 157 void sqlite3Dequote(char *z){ 158 int quote; 159 int i, j; 160 if( z==0 ) return; 161 quote = z[0]; 162 switch( quote ){ 163 case '\'': break; 164 case '"': break; 165 case '`': break; /* For MySQL compatibility */ 166 case '[': quote = ']'; break; /* For MS SqlServer compatibility */ 167 default: return; 168 } 169 for(i=1, j=0; z[i]; i++){ 170 if( z[i]==quote ){ 171 if( z[i+1]==quote ){ 172 z[j++] = quote; 173 i++; 174 }else{ 175 z[j++] = 0; 176 break; 177 } 178 }else{ 179 z[j++] = z[i]; 180 } 181 } 182 } 183 184 /* Convenient short-hand */ 185 #define UpperToLower sqlite3UpperToLower 186 187 /* 188 ** Some systems have stricmp(). Others have strcasecmp(). Because 189 ** there is no consistency, we will define our own. 190 */ 191 int sqlite3StrICmp(const char *zLeft, const char *zRight){ 192 register unsigned char *a, *b; 193 a = (unsigned char *)zLeft; 194 b = (unsigned char *)zRight; 195 while( *a!=0 && UpperToLower[*a]==UpperToLower[*b]){ a++; b++; } 196 return UpperToLower[*a] - UpperToLower[*b]; 197 } 198 int sqlite3StrNICmp(const char *zLeft, const char *zRight, int N){ 199 register unsigned char *a, *b; 200 a = (unsigned char *)zLeft; 201 b = (unsigned char *)zRight; 202 while( N-- > 0 && *a!=0 && UpperToLower[*a]==UpperToLower[*b]){ a++; b++; } 203 return N<0 ? 0 : UpperToLower[*a] - UpperToLower[*b]; 204 } 205 206 /* 207 ** Return TRUE if z is a pure numeric string. Return FALSE if the 208 ** string contains any character which is not part of a number. If 209 ** the string is numeric and contains the '.' character, set *realnum 210 ** to TRUE (otherwise FALSE). 211 ** 212 ** An empty string is considered non-numeric. 213 */ 214 int sqlite3IsNumber(const char *z, int *realnum, u8 enc){ 215 int incr = (enc==SQLITE_UTF8?1:2); 216 if( enc==SQLITE_UTF16BE ) z++; 217 if( *z=='-' || *z=='+' ) z += incr; 218 if( !isdigit(*(u8*)z) ){ 219 return 0; 220 } 221 z += incr; 222 if( realnum ) *realnum = 0; 223 while( isdigit(*(u8*)z) ){ z += incr; } 224 if( *z=='.' ){ 225 z += incr; 226 if( !isdigit(*(u8*)z) ) return 0; 227 while( isdigit(*(u8*)z) ){ z += incr; } 228 if( realnum ) *realnum = 1; 229 } 230 if( *z=='e' || *z=='E' ){ 231 z += incr; 232 if( *z=='+' || *z=='-' ) z += incr; 233 if( !isdigit(*(u8*)z) ) return 0; 234 while( isdigit(*(u8*)z) ){ z += incr; } 235 if( realnum ) *realnum = 1; 236 } 237 return *z==0; 238 } 239 240 /* 241 ** The string z[] is an ascii representation of a real number. 242 ** Convert this string to a double. 243 ** 244 ** This routine assumes that z[] really is a valid number. If it 245 ** is not, the result is undefined. 246 ** 247 ** This routine is used instead of the library atof() function because 248 ** the library atof() might want to use "," as the decimal point instead 249 ** of "." depending on how locale is set. But that would cause problems 250 ** for SQL. So this routine always uses "." regardless of locale. 251 */ 252 int sqlite3AtoF(const char *z, double *pResult){ 253 #ifndef SQLITE_OMIT_FLOATING_POINT 254 int sign = 1; 255 const char *zBegin = z; 256 LONGDOUBLE_TYPE v1 = 0.0; 257 int nSignificant = 0; 258 while( isspace(*(u8*)z) ) z++; 259 if( *z=='-' ){ 260 sign = -1; 261 z++; 262 }else if( *z=='+' ){ 263 z++; 264 } 265 while( z[0]=='0' ){ 266 z++; 267 } 268 while( isdigit(*(u8*)z) ){ 269 v1 = v1*10.0 + (*z - '0'); 270 z++; 271 nSignificant++; 272 } 273 if( *z=='.' ){ 274 LONGDOUBLE_TYPE divisor = 1.0; 275 z++; 276 if( nSignificant==0 ){ 277 while( z[0]=='0' ){ 278 divisor *= 10.0; 279 z++; 280 } 281 } 282 while( isdigit(*(u8*)z) ){ 283 if( nSignificant<18 ){ 284 v1 = v1*10.0 + (*z - '0'); 285 divisor *= 10.0; 286 nSignificant++; 287 } 288 z++; 289 } 290 v1 /= divisor; 291 } 292 if( *z=='e' || *z=='E' ){ 293 int esign = 1; 294 int eval = 0; 295 LONGDOUBLE_TYPE scale = 1.0; 296 z++; 297 if( *z=='-' ){ 298 esign = -1; 299 z++; 300 }else if( *z=='+' ){ 301 z++; 302 } 303 while( isdigit(*(u8*)z) ){ 304 eval = eval*10 + *z - '0'; 305 z++; 306 } 307 while( eval>=64 ){ scale *= 1.0e+64; eval -= 64; } 308 while( eval>=16 ){ scale *= 1.0e+16; eval -= 16; } 309 while( eval>=4 ){ scale *= 1.0e+4; eval -= 4; } 310 while( eval>=1 ){ scale *= 1.0e+1; eval -= 1; } 311 if( esign<0 ){ 312 v1 /= scale; 313 }else{ 314 v1 *= scale; 315 } 316 } 317 *pResult = sign<0 ? -v1 : v1; 318 return z - zBegin; 319 #else 320 return sqlite3Atoi64(z, pResult); 321 #endif /* SQLITE_OMIT_FLOATING_POINT */ 322 } 323 324 /* 325 ** Compare the 19-character string zNum against the text representation 326 ** value 2^63: 9223372036854775808. Return negative, zero, or positive 327 ** if zNum is less than, equal to, or greater than the string. 328 ** 329 ** Unlike memcmp() this routine is guaranteed to return the difference 330 ** in the values of the last digit if the only difference is in the 331 ** last digit. So, for example, 332 ** 333 ** compare2pow63("9223372036854775800") 334 ** 335 ** will return -8. 336 */ 337 static int compare2pow63(const char *zNum){ 338 int c; 339 c = memcmp(zNum,"922337203685477580",18); 340 if( c==0 ){ 341 c = zNum[18] - '8'; 342 } 343 return c; 344 } 345 346 347 /* 348 ** Return TRUE if zNum is a 64-bit signed integer and write 349 ** the value of the integer into *pNum. If zNum is not an integer 350 ** or is an integer that is too large to be expressed with 64 bits, 351 ** then return false. 352 ** 353 ** When this routine was originally written it dealt with only 354 ** 32-bit numbers. At that time, it was much faster than the 355 ** atoi() library routine in RedHat 7.2. 356 */ 357 int sqlite3Atoi64(const char *zNum, i64 *pNum){ 358 i64 v = 0; 359 int neg; 360 int i, c; 361 const char *zStart; 362 while( isspace(*(u8*)zNum) ) zNum++; 363 if( *zNum=='-' ){ 364 neg = 1; 365 zNum++; 366 }else if( *zNum=='+' ){ 367 neg = 0; 368 zNum++; 369 }else{ 370 neg = 0; 371 } 372 zStart = zNum; 373 while( zNum[0]=='0' ){ zNum++; } /* Skip over leading zeros. Ticket #2454 */ 374 for(i=0; (c=zNum[i])>='0' && c<='9'; i++){ 375 v = v*10 + c - '0'; 376 } 377 *pNum = neg ? -v : v; 378 if( c!=0 || (i==0 && zStart==zNum) || i>19 ){ 379 /* zNum is empty or contains non-numeric text or is longer 380 ** than 19 digits (thus guaranting that it is too large) */ 381 return 0; 382 }else if( i<19 ){ 383 /* Less than 19 digits, so we know that it fits in 64 bits */ 384 return 1; 385 }else{ 386 /* 19-digit numbers must be no larger than 9223372036854775807 if positive 387 ** or 9223372036854775808 if negative. Note that 9223372036854665808 388 ** is 2^63. */ 389 return compare2pow63(zNum)<neg; 390 } 391 } 392 393 /* 394 ** The string zNum represents an integer. There might be some other 395 ** information following the integer too, but that part is ignored. 396 ** If the integer that the prefix of zNum represents will fit in a 397 ** 64-bit signed integer, return TRUE. Otherwise return FALSE. 398 ** 399 ** This routine returns FALSE for the string -9223372036854775808 even that 400 ** that number will, in theory fit in a 64-bit integer. Positive 401 ** 9223373036854775808 will not fit in 64 bits. So it seems safer to return 402 ** false. 403 */ 404 int sqlite3FitsIn64Bits(const char *zNum, int negFlag){ 405 int i, c; 406 int neg = 0; 407 if( *zNum=='-' ){ 408 neg = 1; 409 zNum++; 410 }else if( *zNum=='+' ){ 411 zNum++; 412 } 413 if( negFlag ) neg = 1-neg; 414 while( *zNum=='0' ){ 415 zNum++; /* Skip leading zeros. Ticket #2454 */ 416 } 417 for(i=0; (c=zNum[i])>='0' && c<='9'; i++){} 418 if( i<19 ){ 419 /* Guaranteed to fit if less than 19 digits */ 420 return 1; 421 }else if( i>19 ){ 422 /* Guaranteed to be too big if greater than 19 digits */ 423 return 0; 424 }else{ 425 /* Compare against 2^63. */ 426 return compare2pow63(zNum)<neg; 427 } 428 } 429 430 /* 431 ** If zNum represents an integer that will fit in 32-bits, then set 432 ** *pValue to that integer and return true. Otherwise return false. 433 ** 434 ** Any non-numeric characters that following zNum are ignored. 435 ** This is different from sqlite3Atoi64() which requires the 436 ** input number to be zero-terminated. 437 */ 438 int sqlite3GetInt32(const char *zNum, int *pValue){ 439 sqlite_int64 v = 0; 440 int i, c; 441 int neg = 0; 442 if( zNum[0]=='-' ){ 443 neg = 1; 444 zNum++; 445 }else if( zNum[0]=='+' ){ 446 zNum++; 447 } 448 while( zNum[0]=='0' ) zNum++; 449 for(i=0; i<11 && (c = zNum[i] - '0')>=0 && c<=9; i++){ 450 v = v*10 + c; 451 } 452 453 /* The longest decimal representation of a 32 bit integer is 10 digits: 454 ** 455 ** 1234567890 456 ** 2^31 -> 2147483648 457 */ 458 if( i>10 ){ 459 return 0; 460 } 461 if( v-neg>2147483647 ){ 462 return 0; 463 } 464 if( neg ){ 465 v = -v; 466 } 467 *pValue = (int)v; 468 return 1; 469 } 470 471 /* 472 ** The variable-length integer encoding is as follows: 473 ** 474 ** KEY: 475 ** A = 0xxxxxxx 7 bits of data and one flag bit 476 ** B = 1xxxxxxx 7 bits of data and one flag bit 477 ** C = xxxxxxxx 8 bits of data 478 ** 479 ** 7 bits - A 480 ** 14 bits - BA 481 ** 21 bits - BBA 482 ** 28 bits - BBBA 483 ** 35 bits - BBBBA 484 ** 42 bits - BBBBBA 485 ** 49 bits - BBBBBBA 486 ** 56 bits - BBBBBBBA 487 ** 64 bits - BBBBBBBBC 488 */ 489 490 /* 491 ** Write a 64-bit variable-length integer to memory starting at p[0]. 492 ** The length of data write will be between 1 and 9 bytes. The number 493 ** of bytes written is returned. 494 ** 495 ** A variable-length integer consists of the lower 7 bits of each byte 496 ** for all bytes that have the 8th bit set and one byte with the 8th 497 ** bit clear. Except, if we get to the 9th byte, it stores the full 498 ** 8 bits and is the last byte. 499 */ 500 int sqlite3PutVarint(unsigned char *p, u64 v){ 501 int i, j, n; 502 u8 buf[10]; 503 if( v & (((u64)0xff000000)<<32) ){ 504 p[8] = v; 505 v >>= 8; 506 for(i=7; i>=0; i--){ 507 p[i] = (v & 0x7f) | 0x80; 508 v >>= 7; 509 } 510 return 9; 511 } 512 n = 0; 513 do{ 514 buf[n++] = (v & 0x7f) | 0x80; 515 v >>= 7; 516 }while( v!=0 ); 517 buf[0] &= 0x7f; 518 assert( n<=9 ); 519 for(i=0, j=n-1; j>=0; j--, i++){ 520 p[i] = buf[j]; 521 } 522 return n; 523 } 524 525 /* 526 ** This routine is a faster version of sqlite3PutVarint() that only 527 ** works for 32-bit positive integers and which is optimized for 528 ** the common case of small integers. A MACRO version, putVarint32, 529 ** is provided which inlines the single-byte case. All code should use 530 ** the MACRO version as this function assumes the single-byte case has 531 ** already been handled. 532 */ 533 int sqlite3PutVarint32(unsigned char *p, u32 v){ 534 #ifndef putVarint32 535 if( (v & ~0x7f)==0 ){ 536 p[0] = v; 537 return 1; 538 } 539 #endif 540 if( (v & ~0x3fff)==0 ){ 541 p[0] = (v>>7) | 0x80; 542 p[1] = v & 0x7f; 543 return 2; 544 } 545 return sqlite3PutVarint(p, v); 546 } 547 548 /* 549 ** Read a 64-bit variable-length integer from memory starting at p[0]. 550 ** Return the number of bytes read. The value is stored in *v. 551 */ 552 int sqlite3GetVarint(const unsigned char *p, u64 *v){ 553 u32 a,b,s; 554 555 a = *p; 556 /* a: p0 (unmasked) */ 557 if (!(a&0x80)) 558 { 559 *v = a; 560 return 1; 561 } 562 563 p++; 564 b = *p; 565 /* b: p1 (unmasked) */ 566 if (!(b&0x80)) 567 { 568 a &= 0x7f; 569 a = a<<7; 570 a |= b; 571 *v = a; 572 return 2; 573 } 574 575 p++; 576 a = a<<14; 577 a |= *p; 578 /* a: p0<<14 | p2 (unmasked) */ 579 if (!(a&0x80)) 580 { 581 a &= (0x7f<<14)|(0x7f); 582 b &= 0x7f; 583 b = b<<7; 584 a |= b; 585 *v = a; 586 return 3; 587 } 588 589 /* CSE1 from below */ 590 a &= (0x7f<<14)|(0x7f); 591 p++; 592 b = b<<14; 593 b |= *p; 594 /* b: p1<<14 | p3 (unmasked) */ 595 if (!(b&0x80)) 596 { 597 b &= (0x7f<<14)|(0x7f); 598 /* moved CSE1 up */ 599 /* a &= (0x7f<<14)|(0x7f); */ 600 a = a<<7; 601 a |= b; 602 *v = a; 603 return 4; 604 } 605 606 /* a: p0<<14 | p2 (masked) */ 607 /* b: p1<<14 | p3 (unmasked) */ 608 /* 1:save off p0<<21 | p1<<14 | p2<<7 | p3 (masked) */ 609 /* moved CSE1 up */ 610 /* a &= (0x7f<<14)|(0x7f); */ 611 b &= (0x7f<<14)|(0x7f); 612 s = a; 613 /* s: p0<<14 | p2 (masked) */ 614 615 p++; 616 a = a<<14; 617 a |= *p; 618 /* a: p0<<28 | p2<<14 | p4 (unmasked) */ 619 if (!(a&0x80)) 620 { 621 /* we can skip these cause they were (effectively) done above in calc'ing s */ 622 /* a &= (0x7f<<28)|(0x7f<<14)|(0x7f); */ 623 /* b &= (0x7f<<14)|(0x7f); */ 624 b = b<<7; 625 a |= b; 626 s = s>>18; 627 *v = ((u64)s)<<32 | a; 628 return 5; 629 } 630 631 /* 2:save off p0<<21 | p1<<14 | p2<<7 | p3 (masked) */ 632 s = s<<7; 633 s |= b; 634 /* s: p0<<21 | p1<<14 | p2<<7 | p3 (masked) */ 635 636 p++; 637 b = b<<14; 638 b |= *p; 639 /* b: p1<<28 | p3<<14 | p5 (unmasked) */ 640 if (!(b&0x80)) 641 { 642 /* we can skip this cause it was (effectively) done above in calc'ing s */ 643 /* b &= (0x7f<<28)|(0x7f<<14)|(0x7f); */ 644 a &= (0x7f<<14)|(0x7f); 645 a = a<<7; 646 a |= b; 647 s = s>>18; 648 *v = ((u64)s)<<32 | a; 649 return 6; 650 } 651 652 p++; 653 a = a<<14; 654 a |= *p; 655 /* a: p2<<28 | p4<<14 | p6 (unmasked) */ 656 if (!(a&0x80)) 657 { 658 a &= (0x7f<<28)|(0x7f<<14)|(0x7f); 659 b &= (0x7f<<14)|(0x7f); 660 b = b<<7; 661 a |= b; 662 s = s>>11; 663 *v = ((u64)s)<<32 | a; 664 return 7; 665 } 666 667 /* CSE2 from below */ 668 a &= (0x7f<<14)|(0x7f); 669 p++; 670 b = b<<14; 671 b |= *p; 672 /* b: p3<<28 | p5<<14 | p7 (unmasked) */ 673 if (!(b&0x80)) 674 { 675 b &= (0x7f<<28)|(0x7f<<14)|(0x7f); 676 /* moved CSE2 up */ 677 /* a &= (0x7f<<14)|(0x7f); */ 678 a = a<<7; 679 a |= b; 680 s = s>>4; 681 *v = ((u64)s)<<32 | a; 682 return 8; 683 } 684 685 p++; 686 a = a<<15; 687 a |= *p; 688 /* a: p4<<29 | p6<<15 | p8 (unmasked) */ 689 690 /* moved CSE2 up */ 691 /* a &= (0x7f<<29)|(0x7f<<15)|(0xff); */ 692 b &= (0x7f<<14)|(0x7f); 693 b = b<<8; 694 a |= b; 695 696 s = s<<4; 697 b = p[-4]; 698 b &= 0x7f; 699 b = b>>3; 700 s |= b; 701 702 *v = ((u64)s)<<32 | a; 703 704 return 9; 705 } 706 707 /* 708 ** Read a 32-bit variable-length integer from memory starting at p[0]. 709 ** Return the number of bytes read. The value is stored in *v. 710 ** A MACRO version, getVarint32, is provided which inlines the 711 ** single-byte case. All code should use the MACRO version as 712 ** this function assumes the single-byte case has already been handled. 713 */ 714 int sqlite3GetVarint32(const unsigned char *p, u32 *v){ 715 u32 a,b; 716 717 a = *p; 718 /* a: p0 (unmasked) */ 719 #ifndef getVarint32 720 if (!(a&0x80)) 721 { 722 *v = a; 723 return 1; 724 } 725 #endif 726 727 p++; 728 b = *p; 729 /* b: p1 (unmasked) */ 730 if (!(b&0x80)) 731 { 732 a &= 0x7f; 733 a = a<<7; 734 *v = a | b; 735 return 2; 736 } 737 738 p++; 739 a = a<<14; 740 a |= *p; 741 /* a: p0<<14 | p2 (unmasked) */ 742 if (!(a&0x80)) 743 { 744 a &= (0x7f<<14)|(0x7f); 745 b &= 0x7f; 746 b = b<<7; 747 *v = a | b; 748 return 3; 749 } 750 751 p++; 752 b = b<<14; 753 b |= *p; 754 /* b: p1<<14 | p3 (unmasked) */ 755 if (!(b&0x80)) 756 { 757 b &= (0x7f<<14)|(0x7f); 758 a &= (0x7f<<14)|(0x7f); 759 a = a<<7; 760 *v = a | b; 761 return 4; 762 } 763 764 p++; 765 a = a<<14; 766 a |= *p; 767 /* a: p0<<28 | p2<<14 | p4 (unmasked) */ 768 if (!(a&0x80)) 769 { 770 a &= (0x7f<<28)|(0x7f<<14)|(0x7f); 771 b &= (0x7f<<28)|(0x7f<<14)|(0x7f); 772 b = b<<7; 773 *v = a | b; 774 return 5; 775 } 776 777 /* We can only reach this point when reading a corrupt database 778 ** file. In that case we are not in any hurry. Use the (relatively 779 ** slow) general-purpose sqlite3GetVarint() routine to extract the 780 ** value. */ 781 { 782 u64 v64; 783 int n; 784 785 p -= 4; 786 n = sqlite3GetVarint(p, &v64); 787 assert( n>5 && n<=9 ); 788 *v = (u32)v64; 789 return n; 790 } 791 } 792 793 /* 794 ** Return the number of bytes that will be needed to store the given 795 ** 64-bit integer. 796 */ 797 int sqlite3VarintLen(u64 v){ 798 int i = 0; 799 do{ 800 i++; 801 v >>= 7; 802 }while( v!=0 && i<9 ); 803 return i; 804 } 805 806 807 /* 808 ** Read or write a four-byte big-endian integer value. 809 */ 810 u32 sqlite3Get4byte(const u8 *p){ 811 return (p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3]; 812 } 813 void sqlite3Put4byte(unsigned char *p, u32 v){ 814 p[0] = v>>24; 815 p[1] = v>>16; 816 p[2] = v>>8; 817 p[3] = v; 818 } 819 820 821 822 #if !defined(SQLITE_OMIT_BLOB_LITERAL) || defined(SQLITE_HAS_CODEC) 823 /* 824 ** Translate a single byte of Hex into an integer. 825 ** This routinen only works if h really is a valid hexadecimal 826 ** character: 0..9a..fA..F 827 */ 828 static int hexToInt(int h){ 829 assert( (h>='0' && h<='9') || (h>='a' && h<='f') || (h>='A' && h<='F') ); 830 #ifdef SQLITE_ASCII 831 h += 9*(1&(h>>6)); 832 #endif 833 #ifdef SQLITE_EBCDIC 834 h += 9*(1&~(h>>4)); 835 #endif 836 return h & 0xf; 837 } 838 #endif /* !SQLITE_OMIT_BLOB_LITERAL || SQLITE_HAS_CODEC */ 839 840 #if !defined(SQLITE_OMIT_BLOB_LITERAL) || defined(SQLITE_HAS_CODEC) 841 /* 842 ** Convert a BLOB literal of the form "x'hhhhhh'" into its binary 843 ** value. Return a pointer to its binary value. Space to hold the 844 ** binary value has been obtained from malloc and must be freed by 845 ** the calling routine. 846 */ 847 void *sqlite3HexToBlob(sqlite3 *db, const char *z, int n){ 848 char *zBlob; 849 int i; 850 851 zBlob = (char *)sqlite3DbMallocRaw(db, n/2 + 1); 852 n--; 853 if( zBlob ){ 854 for(i=0; i<n; i+=2){ 855 zBlob[i/2] = (hexToInt(z[i])<<4) | hexToInt(z[i+1]); 856 } 857 zBlob[i/2] = 0; 858 } 859 return zBlob; 860 } 861 #endif /* !SQLITE_OMIT_BLOB_LITERAL || SQLITE_HAS_CODEC */ 862 863 864 /* 865 ** Change the sqlite.magic from SQLITE_MAGIC_OPEN to SQLITE_MAGIC_BUSY. 866 ** Return an error (non-zero) if the magic was not SQLITE_MAGIC_OPEN 867 ** when this routine is called. 868 ** 869 ** This routine is called when entering an SQLite API. The SQLITE_MAGIC_OPEN 870 ** value indicates that the database connection passed into the API is 871 ** open and is not being used by another thread. By changing the value 872 ** to SQLITE_MAGIC_BUSY we indicate that the connection is in use. 873 ** sqlite3SafetyOff() below will change the value back to SQLITE_MAGIC_OPEN 874 ** when the API exits. 875 ** 876 ** This routine is a attempt to detect if two threads use the 877 ** same sqlite* pointer at the same time. There is a race 878 ** condition so it is possible that the error is not detected. 879 ** But usually the problem will be seen. The result will be an 880 ** error which can be used to debug the application that is 881 ** using SQLite incorrectly. 882 ** 883 ** Ticket #202: If db->magic is not a valid open value, take care not 884 ** to modify the db structure at all. It could be that db is a stale 885 ** pointer. In other words, it could be that there has been a prior 886 ** call to sqlite3_close(db) and db has been deallocated. And we do 887 ** not want to write into deallocated memory. 888 */ 889 #ifdef SQLITE_DEBUG 890 int sqlite3SafetyOn(sqlite3 *db){ 891 if( db->magic==SQLITE_MAGIC_OPEN ){ 892 db->magic = SQLITE_MAGIC_BUSY; 893 assert( sqlite3_mutex_held(db->mutex) ); 894 return 0; 895 }else if( db->magic==SQLITE_MAGIC_BUSY ){ 896 db->magic = SQLITE_MAGIC_ERROR; 897 db->u1.isInterrupted = 1; 898 } 899 return 1; 900 } 901 #endif 902 903 /* 904 ** Change the magic from SQLITE_MAGIC_BUSY to SQLITE_MAGIC_OPEN. 905 ** Return an error (non-zero) if the magic was not SQLITE_MAGIC_BUSY 906 ** when this routine is called. 907 */ 908 #ifdef SQLITE_DEBUG 909 int sqlite3SafetyOff(sqlite3 *db){ 910 if( db->magic==SQLITE_MAGIC_BUSY ){ 911 db->magic = SQLITE_MAGIC_OPEN; 912 assert( sqlite3_mutex_held(db->mutex) ); 913 return 0; 914 }else{ 915 db->magic = SQLITE_MAGIC_ERROR; 916 db->u1.isInterrupted = 1; 917 return 1; 918 } 919 } 920 #endif 921 922 /* 923 ** Check to make sure we have a valid db pointer. This test is not 924 ** foolproof but it does provide some measure of protection against 925 ** misuse of the interface such as passing in db pointers that are 926 ** NULL or which have been previously closed. If this routine returns 927 ** 1 it means that the db pointer is valid and 0 if it should not be 928 ** dereferenced for any reason. The calling function should invoke 929 ** SQLITE_MISUSE immediately. 930 ** 931 ** sqlite3SafetyCheckOk() requires that the db pointer be valid for 932 ** use. sqlite3SafetyCheckSickOrOk() allows a db pointer that failed to 933 ** open properly and is not fit for general use but which can be 934 ** used as an argument to sqlite3_errmsg() or sqlite3_close(). 935 */ 936 int sqlite3SafetyCheckOk(sqlite3 *db){ 937 int magic; 938 if( db==0 ) return 0; 939 magic = db->magic; 940 if( magic!=SQLITE_MAGIC_OPEN && 941 magic!=SQLITE_MAGIC_BUSY ) return 0; 942 return 1; 943 } 944 int sqlite3SafetyCheckSickOrOk(sqlite3 *db){ 945 int magic; 946 if( db==0 ) return 0; 947 magic = db->magic; 948 if( magic!=SQLITE_MAGIC_SICK && 949 magic!=SQLITE_MAGIC_OPEN && 950 magic!=SQLITE_MAGIC_BUSY ) return 0; 951 return 1; 952 } 953