[mythtv] [mythtv-commits] Ticket #4593: /.mythtv/ should *not* get created (blank homedir)
Andrei Tanas
andrei at tanas.ca
Wed Feb 6 20:14:49 UTC 2008
> > > On Wednesday 06 February 2008 15:13:47 MythTV wrote:
> > >
> > >> Even though QDir::homeDirPath() will use other environment
> > >> variables on Windows when HOME is not set, libdvdnav needs HOME,
> > >> and segfaults without it.
> > >
> > > So the logical fix would be to use the output from
> > > QDir::homeDirPath() in libdvdnav somehow? Seems to be a lot easier
> > > than finding a way to set HOME in windows.
> >
> > It would be I guess, I wrote the patch before this issue was raised.
> > I thing that getting the value using QDir::homeDirPath() is fine,
> but
> > I actually think that it makes sense to set the environment
> variable:
> > any processes launched by mythfrontend/mythbackend will inherit it
> > just in case they need it too.
>
> Would just setting the variable using the QDir::homeDirPath() value
> (i.e
> using the Windows/mingw equivalent of setenv or something) work?
I looked at the QT code and I don't really like the way they implemented
QDir::homeDirPath() for Win32. It tries to use (in order) HOME, USERPROFILE,
HOMEDRIVE+HOMEPATH. Now, typically:
- HOME is not set
- USERPROFILE is set to user's top level folder (not the "application data"
folder),
which under Vista may not
- HOMEDRIVE is usually "C:", HOMEPATH is "\"
I think LOCALAPPDATA variable is most suitable. If we set it early (see my
patch http://svn.mythtv.org/trac/attachment/ticket/4593/homeenvvar.patch),
then QDir::homeDirPath() will also return the same value (since it tries to
use HOME first).
PS. it is necessary to use _putenv() in Win32, the closest analog
SetEnvironmentVariable() appears to work, but getenv() called from the same
process does not see it.
More information about the mythtv-dev
mailing list