The documentation doesn't really define what xAccess should do, in particular when should it return False versus returning an error.
http://sqlite.org/c3ref/vfs.html
Under Unix you cannot have invalid filenames, except with some specialised non-default file systems. However Windows does have quite a few restrictions. For example it doesn't permit double quotes, angle brackets, asterisk, question mark etc in file names. (Note that colon is permitted to name an alternate data stream.)
In my testing I use a filename of "<bad<filename:" and then call xAccess. Prior to SQLite 3.7.0 the Windows VFS would return False. With 3.7.0 it now returns SQLITE_IOERR with the helpful error text of "error".
<hr><i>rogerb added on 2010-07-22 06:11:59:</i><br>
The Windows VFS also definitely appears to contradict the limited description in the documentation. In particular calling xAccess with a filename of "." (ie currently directory) and a flag of SQLITE_ACCESS_EXISTS returns False. It used to return True prior to SQLite 3.7.0.
|