The FindFile code is as follows...

With the volume number changing, does that mean i can't have a database open 
for the duration of my application running? do i just need to open and close 
the database every time i need to access it?

static FileRef FindFile (UInt16 volRefNum, Char *directory, Char 
*theDatabaseName)
{
    FileInfoType       fileinfo;
    FileRef                     dirRef, fileRef;
    UInt32                      dirIterator;
    UInt16              length;

    fileRef = NULL;

    if ( VFSFileOpen (volRefNum, directory, vfsModeRead, &dirRef) ==
                errNone )
        {
        StrCopy (pathname, directory);

        if ( StrCompare (pathname, "/") != 0 )
            StrCat (pathname, "/");

        length = StrLen (pathname);

        fileinfo.nameP      = pathname + length;
        fileinfo.nameBufLen = sizeof pathname - length;

        dirIterator = vfsIteratorStart;

        while ( (dirIterator != vfsIteratorStop) &&
                   (VFSDirEntryEnumerate (dirRef, &dirIterator, &fileinfo)
                      == errNone) )
            {
            if ( fileinfo.attributes & vfsFileAttrDirectory )
                fileRef = FindFile (volRefNum, pathname, theDatabaseName);
            else if ( StrCaselessCompare (fileinfo.nameP, theDatabaseName) == 0)
                VFSFileOpen (volRefNum, pathname, vfsModeRead, &fileRef);

            if ( fileRef != NULL )
                dirIterator = vfsIteratorStop;
            }

        VFSFileClose (dirRef);
        }
        
    return fileRef;
}
-- 
For information on using the PalmSource Developer Forums, or to unsubscribe, 
please see http://www.palmos.com/dev/support/forums/

Reply via email to