]> git.lyx.org Git - lyx.git/blobdiff - src/lyxsocket.C
remove unused stuff
[lyx.git] / src / lyxsocket.C
index 9bd4c5f9fd4a475d31391914f04d6a4e8971819d..d48ea477d4b7001c0a2c0ffdd7ea43bb67432c45 100644 (file)
 #include "LyXAction.h"
 #include "lyxfunc.h"
 
-#include "frontends/lyx_gui.h"
+#include "frontends/Application.h"
 
 #include "support/environment.h"
+#include "support/filename.h"
 #include "support/lyxlib.h"
 #include "support/socktools.h"
 
 
 #include <cerrno>
 
+#if defined (_WIN32)
+# include <io.h>
+#endif
+
 using boost::shared_ptr;
 
 using std::auto_ptr;
@@ -38,12 +43,14 @@ using std::endl;
 using std::string;
 
 
+namespace lyx {
+
 // Address is the unix address for the socket.
 // MAX_CLIENTS is the maximum number of clients
 // that can connect at the same time.
 LyXServerSocket::LyXServerSocket(LyXFunc * f, string const & addr)
        : func(f),
-         fd_(lyx::support::socktools::listen(addr, 3)),
+         fd_(support::socktools::listen(addr, 3)),
          address_(addr)
 {
        if (fd_ == -1) {
@@ -53,11 +60,11 @@ LyXServerSocket::LyXServerSocket(LyXFunc * f, string const & addr)
 
        // These env vars are used by DVI inverse search
        // Needed by xdvi
-       lyx::support::setEnv("XEDITOR", "lyxclient -g %f %l");
+       support::setEnv("XEDITOR", "lyxclient -g %f %l");
        // Needed by lyxclient
-       lyx::support::setEnv("LYXSOCKET", address_);
+       support::setEnv("LYXSOCKET", address_);
 
-       lyx_gui::register_socket_callback(
+       theApp()->registerSocketCallback(
                fd_,
                boost::bind(&LyXServerSocket::serverCallback, this)
                );
@@ -70,9 +77,14 @@ LyXServerSocket::LyXServerSocket(LyXFunc * f, string const & addr)
 // Close the socket and remove the address of the filesystem.
 LyXServerSocket::~LyXServerSocket()
 {
-       lyx_gui::unregister_socket_callback(fd_);
-       ::close(fd_);
-       lyx::support::unlink(address_);
+       if (fd_ != -1) {
+               BOOST_ASSERT (theApp());
+               theApp()->unregisterSocketCallback(fd_);
+               if (::close(fd_) != 0)
+                       lyxerr << "lyx: Server socket " << fd_
+                              << " IO error on closing: " << strerror(errno);
+       }
+       support::unlink(support::FileName(address_));
        lyxerr[Debug::LYXSERVER] << "lyx: Server socket quitting" << endl;
 }
 
@@ -87,7 +99,7 @@ string const & LyXServerSocket::address() const
 // is OK and if the number of clients does not exceed MAX_CLIENTS
 void LyXServerSocket::serverCallback()
 {
-       int const client_fd = lyx::support::socktools::accept(fd_);
+       int const client_fd = support::socktools::accept(fd_);
 
        if (fd_ == -1) {
                lyxerr[Debug::LYXSERVER] << "lyx: Failed to accept new client"
@@ -103,7 +115,7 @@ void LyXServerSocket::serverCallback()
        // Register the new client.
        clients[client_fd] =
                shared_ptr<LyXDataSocket>(new LyXDataSocket(client_fd));
-       lyx_gui::register_socket_callback(
+       theApp()->registerSocketCallback(
                client_fd,
                boost::bind(&LyXServerSocket::dataCallback,
                            this, client_fd)
@@ -132,7 +144,7 @@ void LyXServerSocket::dataCallback(int fd)
                if (key == "LYXCMD") {
                        string const cmd = line.substr(pos + 1);
                        func->dispatch(lyxaction.lookupFunc(cmd));
-                       string const rval = func->getMessage();
+                       string const rval = to_utf8(func->getMessage());
                        if (func->errorStat()) {
                                client->writeln("ERROR:" + cmd + ':' + rval);
                        } else {
@@ -159,7 +171,7 @@ void LyXServerSocket::writeln(string const & line)
        string const linen(line + '\n');
        int const size = linen.size();
        int const written = ::write(fd_, linen.c_str(), size);
-       if (written < size) { // Allways mean end of connection.
+       if (written < size) { // Always mean end of connection.
                if ((written == -1) && (errno == EPIPE)) {
                        // The program will also receive a SIGPIPE
                        // that must be caught
@@ -197,9 +209,11 @@ LyXDataSocket::LyXDataSocket(int fd)
 
 LyXDataSocket::~LyXDataSocket()
 {
-       ::close(fd_);
+       if (::close(fd_) != 0)
+               lyxerr << "lyx: Data socket " << fd_
+                      << " IO error on closing: " << strerror(errno);
 
-       lyx_gui::unregister_socket_callback(fd_);
+       theApp()->unregisterSocketCallback(fd_);
        lyxerr[Debug::LYXSERVER] << "lyx: Data socket " << fd_ << " quitting."
                                 << endl;
 }
@@ -215,7 +229,7 @@ bool LyXDataSocket::connected() const
 bool LyXDataSocket::readln(string & line)
 {
        int const charbuf_size = 100;
-        char charbuf[charbuf_size]; // buffer for the ::read() system call
+       char charbuf[charbuf_size]; // buffer for the ::read() system call
        int count;
 
        // read and store characters in buffer
@@ -254,7 +268,7 @@ void LyXDataSocket::writeln(string const & line)
        string const linen(line + '\n');
        int const size = linen.size();
        int const written = ::write(fd_, linen.c_str(), size);
-       if (written < size) { // Allways mean end of connection.
+       if (written < size) { // Always mean end of connection.
                if ((written == -1) && (errno == EPIPE)) {
                        // The program will also receive a SIGPIPE
                        // that must be catched
@@ -270,3 +284,6 @@ void LyXDataSocket::writeln(string const & line)
                connected_ = false;
        }
 }
+
+
+} // namespace lyx