On Fri, Apr 06, 2007 at 03:12:07PM +0200, Georg Baum wrote:

> Am Donnerstag, 5. April 2007 11:41 schrieb François Amato:
> 
> > LyX could not create the temporary directory 'C:/Documents and  
> > Settings/François Amato/Local Settings/Temp/lyx_tmpdir2500a03240'
> > Error: Impossible de créer un répertoire temporaire
> > ----------------------------------------
> > Impossible de créer un répertoire temporaire
> > dans C:/Documents and Settings/François Amato/Local Settings/Temp/.  
> > Vérifiez que ce chemin
> > existe et qu'il est ouvert en écriture puis réessayez.
> > Warning: Impossible d'enlever le répertoire temporaire
> > ----------------------------------------
> > Impossible d'enlever le répertoire temporaire
> > Completed
> > 
> > 
> > When I go to C:/Documents and Settings/François Amato/Local 
> Settings/Temp/  
> > I see no lyx_tmpdir directory, but instead a 0 byte file with this same  
> > name. What can I do to change this ? (Lyx 1.4.x works fine)
> 
> I just committed a change that should fix this bug 
> (http://bugzilla.lyx.org/show_bug.cgi?id=3410).
> 
> I might have forgotten something in windows-only code, but I don't think so 
> since I was very careful. It would be nice if some windows user could 
> confirm that this bug is fixed now.

I don't think that your commit fixes 3410. I was working on the attached
patch that fixes it. The only relevant bit is in tempname.C, all other
changes are consequential to that. I'll adapt this to your last commit.

-- 
Enrico
Index: src/lyxsocket.C
===================================================================
--- src/lyxsocket.C     (revision 17736)
+++ src/lyxsocket.C     (working copy)
@@ -62,7 +62,7 @@ LyXServerSocket::LyXServerSocket(LyXFunc
        // Needed by xdvi
        support::setEnv("XEDITOR", "lyxclient -g %f %l");
        // Needed by lyxclient
-       support::setEnv("LYXSOCKET", address_);
+       support::setEnv("LYXSOCKET", to_filesystem8bit(from_utf8(address_)));
 
        theApp()->registerSocketCallback(
                fd_,
Index: src/support/tempname.C
===================================================================
--- src/support/tempname.C      (revision 17736)
+++ src/support/tempname.C      (working copy)
@@ -109,7 +109,7 @@ FileName const tempName(FileName const &
 #endif
                LYXERR(Debug::FILES) << "Temporary file `" << t
                                     << "' created." << endl;
-               return FileName(t);
+               return FileName(to_utf8(from_filesystem8bit(t)));
        } else {
                LYXERR(Debug::FILES)
                        << "LyX Error: Unable to create temporary file."
Index: src/support/socktools.C
===================================================================
--- src/support/socktools.C     (revision 17736)
+++ src/support/socktools.C     (working copy)
@@ -77,8 +77,9 @@ int listen(string const & name, int queu
        int fd; // File descriptor for the socket
        sockaddr_un addr; // Structure that hold the socket address
 
-       // We use 'name' to fill 'addr'
-       string::size_type len = name.size();
+       // We use 'localname' to fill 'addr'
+       string const localname = to_filesystem8bit(from_utf8(name));
+       string::size_type len = localname.size();
        // the field sun_path in sockaddr_un is a char[108]
        if (len > 107) {
                lyxerr << "lyx: Socket address '" << name << "' too long."
@@ -87,7 +88,7 @@ int listen(string const & name, int queu
        }
        // Synonims for AF_UNIX are AF_LOCAL and AF_FILE
        addr.sun_family = AF_UNIX;
-       name.copy(addr.sun_path, 107);
+       localname.copy(addr.sun_path, 107);
        addr.sun_path[len] = '\0';
 
        // This creates a file descriptor for the socket
Index: src/client/client.C
===================================================================
--- src/client/client.C (revision 17736)
+++ src/client/client.C (working copy)
@@ -534,16 +534,16 @@ int main(int argc, char * argv[])
        scoped_ptr<LyXDataSocket> server;
 
        if (!cmdline::serverAddress.empty()) {
-               server.reset(new 
LyXDataSocket(to_utf8(cmdline::serverAddress)));
+               server.reset(new 
LyXDataSocket(to_filesystem8bit(cmdline::serverAddress)));
                if (!server->connected()) {
                        cerr << "lyxclient: " << "Could not connect to "
-                            << to_utf8(cmdline::serverAddress) << endl;
+                            << to_filesystem8bit(cmdline::serverAddress) << 
endl;
                        return EXIT_FAILURE;
                }
        } else {
                // We have to look for an address.
                // serverPid can be empty.
-               vector<fs::path> addrs = 
support::lyxSockets(to_utf8(cmdline::mainTmp), cmdline::serverPid);
+               vector<fs::path> addrs = 
support::lyxSockets(to_filesystem8bit(cmdline::mainTmp), cmdline::serverPid);
                vector<fs::path>::const_iterator addr = addrs.begin();
                vector<fs::path>::const_iterator end = addrs.end();
                for (; addr != end; ++addr) {

Reply via email to