RFC: boolean to disable autocreate in locateLocal

Luis Pedro Coelho luis_pedro at netcabo.pt
Sun May 18 16:48:46 BST 2003

Hash: SHA1

Le Dimanche 18 Mai 2003 17:23, Waldo Bastian a écrit :
> On Sunday 18 May 2003 14:39, Tobias Koenig wrote:
> > Could we add a boolean parameter to locateLocal() to avoid
> > autocreation of the file/directory?
> Yes, I will do so. The docu of locateLocal said that it always creates the
> dirs, unfortunately the implementation didn't. I fixed that for 3.2 but it
> is probably better to add a flag for it instead.
> It should never create a file btw.

I can understand that creating the file is not good, but I don't see how the 
code does, that. Here is the code to locateLocal:

QString locateLocal( const char *type,
                    const QString& filename,
		const KInstance* inst /* = KGlobal::instance() */)
    // try to find slashes. If there are some, we have to
    // create the subdir first
    int slash = filename.findRev('/')+1;
    if (!slash) // only one filename
       return inst->dirs()->saveLocation(type, QString::null, true) 
			+ filename;

    // split path from filename
    QString dir = filename.left(slash);
    QString file = filename.mid(slash);
    return inst->dirs()->saveLocation(type, dir, true) + file;

I don't see how the file gets created. It does create the directory (the true 
parameter in the saveLocation call). 
Or am I misreading this?

Tobias, did you oversimplify your example? It is valid if you write (note that 
filename ends in '/'):

if (QFile::exists(locateLocal("data","mydir/")) // <- always true
  do_something() ; 
else { / * UNREACHABLE CODE */ ; }

- -- 
Luis Pedro Coelho

Version: GnuPG v1.0.7 (GNU/Linux)


More information about the kde-core-devel mailing list