Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch android-large-filles Excluding Merge-Ins
This is equivalent to a diff from e62aab5e92 to 9dca7ce557
2014-09-06
| ||
17:06 | Fixes to os_unix.c to support database (and other) files larger than 2GiB on Android. (check-in: ad7063aa1a user: dan tags: trunk) | |
16:52 | Merge latest trunk changes with this branch. (Closed-Leaf check-in: 9dca7ce557 user: dan tags: android-large-filles) | |
16:49 | Fixes to os_unix.c to support database (and other) files larger than 2GiB. (check-in: e7fae33c07 user: dan tags: android-large-filles) | |
16:39 | Fix typos in comments. No code changes. (check-in: e62aab5e92 user: peter.d.reid tags: trunk) | |
03:38 | Do not record a page-size change if the attempt to change the page size failed due to an OOM error. (check-in: 4d4fb197dc user: drh tags: trunk) | |
Changes to src/os_unix.c.
︙ | |||
295 296 297 298 299 300 301 302 303 304 305 306 307 308 | 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 | + + + + + + + + | # if defined(__linux__) && defined(_GNU_SOURCE) # define HAVE_MREMAP 1 # else # define HAVE_MREMAP 0 # endif #endif /* ** Explicitly call the 64-bit version of lseek() on Android. Otherwise, lseek() ** is the 32-bit version, even if _FILE_OFFSET_BITS=64 is defined. */ #ifdef __ANDROID__ # define lseek lseek64 #endif /* ** Different Unix systems declare open() in different ways. Same use ** open(const char*,int,mode_t). Others use open(const char*,int,...). ** The difference is important when using a pointer to the function. ** ** The safest way to deal with the problem is to always use this wrapper ** which always has the same well-defined interface. |
︙ | |||
704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 | 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 | + + + + + + + + + + + + + | } #undef osFcntl #define osFcntl lockTrace #endif /* SQLITE_LOCK_TRACE */ /* ** Retry ftruncate() calls that fail due to EINTR ** ** All calls to ftruncate() within this file should be made through this wrapper. ** On the Android platform, bypassing the logic below could lead to a corrupt ** database. */ static int robust_ftruncate(int h, sqlite3_int64 sz){ int rc; #ifdef __ANDROID__ /* On Android, ftruncate() always uses 32-bit offsets, even if ** _FILE_OFFSET_BITS=64 is defined. This means it is unsafe to attempt to ** truncate a file to any size smaller than 2GiB. Silently ignore any ** such attempts. */ if( sz>(sqlite3_int64)0x7FFFFFFF ){ rc = SQLITE_OK; }else #endif do{ rc = osFtruncate(h,sz); }while( rc<0 && errno==EINTR ); return rc; } /* ** This routine translates a standard POSIX errno code into something ** useful to the clients of the sqlite3 functions. Specifically, it is |
︙ | |||
3591 3592 3593 3594 3595 3596 3597 | 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 | - + | ** actual file size after the operation may be larger than the requested ** size). */ if( pFile->szChunk>0 ){ nByte = ((nByte + pFile->szChunk - 1)/pFile->szChunk) * pFile->szChunk; } |
︙ |