[bt-devel] CSwordBackend::deleteOrphanedIndices()

Olaf Radicke briefkasten at olaf-radicke.de
Thu Jul 29 06:13:16 MST 2010


On Wed, Jul 28, 2010 at 10:42:51AM -0700, Gary Holmlund wrote:
> On 7/28/2010 8:15 AM, Olaf Radicke wrote:
> >On Wed, Jul 28, 2010 at 06:49:22AM -0700, Gary Holmlund wrote:
> >>On 07/28/2010 05:03 AM, Olaf Radicke wrote:
> >>>On Wed, Jul 28, 2010 at 11:38:55AM +0200, Olaf Radicke wrote:
> >>>>On Mon, Jul 26, 2010 at 12:49:12PM +0200, Olaf Radicke wrote:
> >>>>>At coding on alter-gui, the function void CSwordBackend::deleteOrphanedIndices()
> >>>>>has delete my complete directory and all subdirectory. Wickedly funny. So
> >>>>>i think, the function missing checks?
> >>>>I can't find which class generated the indices and/or a documantion from
> >>>>characteristics of indices-files or indices-directorys. So i can't pach this
> >>>>problem.
> >>>In function CSwordModuleInfo::buildIndex() i have fond this in line 399:
> >>>
> >>>QSettings module_config(getModuleBaseIndexLocation() + QString("/bibletime-index.conf"), QSettings::IniFormat);
> >>>
> >>>...So is it a good idea check direktory of a file with name 'bibletime-index.conf'?
> >>>
> >>>Olaf
> >>The first parameter for this QSettings line is supposed to be a file
> >>name, so I don't understand what you mean about checking a
> >>directory. The line looks good to me.
> >No, the prolem is the function CSwordBackend::deleteOrphanedIndices(). To date
> >the function delete the complete directory and all subdirectorys, without
> >any checks. So my question is:
> >
> >Is it a good idea, checking direktory of a file with name 'bibletime-index.conf',
> >_before_ the function CSwordBackend::deleteOrphanedIndices() is starting the
> >deletion complete directory?
> >
> >Olaf Radicke
> Olaf,
> 
> I don't know the backend code well enough to answer this question.
> Does anyone else?

Okay, here is my suggestion:

void CSwordBackend::safeDeleteOrphanedIndices()
{
    QDir dir(CSwordModuleInfo::getGlobalBaseIndexLocation());
    bool isCorrectDir = false;

    QDirIterator it(dir);
    while (it.hasNext())
    {
        QString aDir = it.next();
        aDir = aDir + QDir::separator() + "bibletime-index.conf";
        QFile  file( aDir );
        qDebug() << "[or20100729140101] check fiele name: " << file.fileName();
        if( file.exists() )
        {
            isCorrectDir = true;
            qDebug() << "[or20100729125902] isCorrectDir = true ";
        }
    }
  
    if(!isCorrectDir)
    {
        qDebug() << "[or20100729125903] isCorrectDir = false ";
        QString errorInfo = "is not a indices directory.";
        throw errorInfo.toStdString();
    }
    else
    {
        deleteOrphanedIndices();
    }
}

...it's a wrapper function. You can pull a patch from my
git-repos, as you like it.



Olaf Radicke



More information about the bt-devel mailing list