]> git.lyx.org Git - lyx.git/blobdiff - src/lyxserver.C
character2.diff.gz
[lyx.git] / src / lyxserver.C
index 8449f9a4209633d6b6c9ef69163d85a2e084fbdb..395ecb8b793ab91de17f878154453480fe279233 100644 (file)
@@ -5,7 +5,7 @@
  *           LyX, The Document Processor
  *        
  *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-1999 The LyX Team.
+ *           Copyright 1995-2000 The LyX Team.
  *
  * ====================================================== */
 
@@ -55,6 +55,7 @@
 #include "debug.h"
 #include "LyXAction.h"
 #include "support/lstrings.h"
+#include "support/lyxlib.h"
 
 #ifdef __EMX__
 #include <cstdlib>
 #include "os2_errortable.h"
 #endif
 
+using std::endl;
+
 // provide an empty mkfifo() if we do not have one. This disables the
 // lyxserver. 
 #ifndef HAVE_MKFIFO
-int    mkfifo( char *__path, mode_t __mode ) {
-       return 0;
+int mkfifo(char const * __path, mode_t __mode) {
+        return 0;
 }
 #endif
 
@@ -113,21 +116,21 @@ void LyXComm::openConnection() {
                NP_NOWAIT|0x01, 0600, 0600, 0);
        if (rc == ERROR_PIPE_BUSY) {
 #else
-       if (access(tmp.c_str(), F_OK) == 0) {
+       if (::access(tmp.c_str(), F_OK) == 0) {
 #endif
                lyxerr << "LyXComm: Pipe " << tmp << " already exists.\n"
                       << "If no other LyX program is active, please delete"
                        " the pipe by hand and try again." << endl;
-               pipename.clear();
+               pipename.erase();
                return;
        }
 #ifndef __EMX__
-       if (mkfifo(tmp.c_str(), 0600) < 0) {
+       if (::mkfifo(tmp.c_str(), 0600) < 0) {
                lyxerr << "LyXComm: Could not create pipe " << tmp << '\n'
                       << strerror(errno) << endl;
                return;
        };
-       infd = open(tmp.c_str(), O_RDONLY|O_NONBLOCK);
+       infd = ::open(tmp.c_str(), O_RDONLY|O_NONBLOCK);
 #else
        if (rc != NO_ERROR) {
                errnum = TranslateOS2Error(rc);
@@ -159,7 +162,7 @@ void LyXComm::openConnection() {
        tmp = pipename + ".out";
        
 #ifndef __EMX__       
-       if (access(tmp.c_str(), F_OK) == 0) {
+       if (::access(tmp.c_str(), F_OK) == 0) {
 #else
        rc = DosCreateNPipe(tmp.c_str(), &fd, NP_ACCESS_DUPLEX,
                NP_NOWAIT|0x01, 0600, 0600, 0);
@@ -169,21 +172,21 @@ void LyXComm::openConnection() {
                lyxerr << "LyXComm: Pipe " << tmp << " already exists.\n"
                       << "If no other LyX program is active, please delete"
                        " the pipe by hand and try again." << endl;
-               pipename.clear();
+               pipename.erase();
                return;
        }
 #ifndef __EMX__
-       if (mkfifo(tmp.c_str(), 0600) < 0) {
+       if (::mkfifo(tmp.c_str(), 0600) < 0) {
                lyxerr << "LyXComm: Could not create pipe " << tmp << '\n'
                       << strerror(errno) << endl;
                return;
        };
-       if (access(tmp.c_str(), F_OK) != 0) {
+       if (::access(tmp.c_str(), F_OK) != 0) {
                lyxerr << "LyXComm: Pipe " << tmp
                       << " does not exist" << endl;
                return;
        }
-       outfd = open(tmp.c_str(), O_RDWR);
+       outfd = ::open(tmp.c_str(), O_RDWR);
 #else
        if (rc != NO_ERROR) {
                errnum = TranslateOS2Error(rc);
@@ -237,7 +240,7 @@ void LyXComm::closeConnection() {
                return;
        }
  
-       if(infd > -1) {
+       if (infd > -1) {
                fl_remove_io_callback(infd, FL_READ, C_LyXComm_callback);
  
                string tmp = pipename + ".in";
@@ -255,13 +258,13 @@ void LyXComm::closeConnection() {
                               << '\n' << strerror(errno) << endl;
                }
 #ifndef __EMX__                // OS/2 named pipes will be automatically removed.
-               if (unlink(tmp.c_str()) < 0){
+               if (lyx::unlink(tmp) < 0){
                        lyxerr << "LyXComm: Could not remove pipe " << tmp
                               << '\n' << strerror(errno) << endl;
                };
 #endif
        }
-       if(outfd > -1) {
+       if (outfd > -1) {
                string tmp = pipename + ".out";
 #ifdef __EMX__
                rc = DosDisConnectNPipe(outfd);
@@ -272,12 +275,12 @@ void LyXComm::closeConnection() {
                        return;
                }
 #endif
-               if (close(outfd) < 0) {
+               if (::close(outfd) < 0) {
                        lyxerr << "LyXComm: Could not close pipe " << tmp
                               << '\n' << strerror(errno) << endl;
                }
 #ifndef __EMX__
-               if (unlink(tmp.c_str()) < 0){
+               if (lyx::unlink(tmp) < 0){
                        lyxerr << "LyXComm: Could not remove pipe " << tmp
                               << '\n' << strerror(errno) << endl;
                };
@@ -306,7 +309,7 @@ void LyXComm::callback(int fd, void *v)
        // the single = is intended here.
        while((status = read(fd, charbuf, CMDBUFLEN-1)))
        {// break and return in loop
-               if(status > 0) // got something
+               if (status > 0) // got something
                {
                        charbuf[status]= '\0'; // turn it into a c string
                        lsbuf += strip(charbuf, '\r');
@@ -322,26 +325,26 @@ void LyXComm::callback(int fd, void *v)
                                        << "LyXComm: status:" << status
                                        << ", lsbuf:" << lsbuf 
                                        << ", cmd:" << cmd << endl;
-                               if(!cmd.empty())
+                               if (!cmd.empty())
                                        c->clientcb(c->client, cmd); 
                                        //\n or not \n?
                        }
                }
-               if(errno == EAGAIN)
+               if (errno == EAGAIN)
                {  // EAGAIN is not really an error , it means we're
                   // only reading too fast for the writing process on
                   // the other end of the pipe. 
                        errno = 0;
                        return; // up to libforms select-loop (*crunch*)
                }
-               if(errno != 0 )
+               if (errno != 0 )
                {
                        lyxerr << "LyXComm: " << strerror(errno) << endl;
-                       if(!lsbuf.empty())
+                       if (!lsbuf.empty())
                        {
                                lyxerr << "LyxComm: truncated command: " 
                                       << lsbuf << endl;
-                               lsbuf.clear();
+                               lsbuf.erase();
                        }
                        break; // reset connection
                }
@@ -373,7 +376,7 @@ void LyXComm::send(string const & msg) {
        if (!ready) {
                lyxerr << "LyXComm: Pipes are closed. Could not send "
                       << msg << endl;
-       } else if (write(outfd, msg.c_str(), msg.length()) < 0) {
+       } else if (::write(outfd, msg.c_str(), msg.length()) < 0) {
                lyxerr << "LyXComm: Error sending message: " << msg
                       << '\n' << strerror(errno)
                       << "\nLyXComm: Resetting connection" << endl;
@@ -401,7 +404,7 @@ LyXServer::~LyXServer()
        // modified june 1999 by stefano@zool.su.se to send as many bye
        // messages as there are clients, each with client's name.
        string message;
-       for (int i= 0; i<numclients; i++) {
+       for (int i= 0; i<numclients; ++i) {
                message = "LYXSRV:" + clients[i] + ":bye\n";
                pipes.send(message);
        }
@@ -419,7 +422,7 @@ void LyXServer::callback(LyXServer * serv, string const & msg)
        lyxerr[Debug::LYXSERVER] << "LyXServer: Received: '"
                                 << msg << '\'' << endl;
  
-       char const *p = msg.c_str();
+       char const * p = msg.c_str();
  
        // --- parse the string --------------------------------------------
        //
@@ -428,9 +431,10 @@ void LyXServer::callback(LyXServer * serv, string const & msg)
        bool server_only = false;
        while(*p) {
                // --- 1. check 'header' ---
-               if (strncmp(p, "LYXSRV:", 7) == 0) {
+
+               if (compare(p, "LYXSRV:", 7) == 0) {
                        server_only = true; 
-               } else if(0!= strncmp(p, "LYXCMD:", 7)) {
+               } else if (0 != compare(p, "LYXCMD:", 7)) {
                        lyxerr << "LyXServer: Unknown request" << endl;
                        return;
                }
@@ -440,8 +444,8 @@ void LyXServer::callback(LyXServer * serv, string const & msg)
                string client;
                while(*p && *p != ':')
                        client += char(*p++);
-               if(*p == ':') p++;
-               if(!*p) return;
+               if (*p == ':') ++p;
+               if (!*p) return;
                
                // --- 3. get function name ---
                string cmd;
@@ -450,10 +454,10 @@ void LyXServer::callback(LyXServer * serv, string const & msg)
                
                // --- 4. parse the argument ---
                string arg;
-               if(!server_only && *p == ':' && *(++p)) {
+               if (!server_only && *p == ':' && *(++p)) {
                        while(*p && *p != '\n')
                                arg += char(*p++);
-                       if(*p) p++;
+                       if (*p) ++p;
                }
  
                lyxerr[Debug::LYXSERVER]
@@ -469,7 +473,7 @@ void LyXServer::callback(LyXServer * serv, string const & msg)
                        // we are listening.
                        if (cmd == "hello") {
                                // One more client
-                               if(serv->numclients == MAX_CLIENTS){ //paranoid check
+                               if (serv->numclients == MAX_CLIENTS){ //paranoid check
                                        lyxerr[Debug::LYXSERVER]
                                                << "LyXServer: too many clients..."
                                                << endl;
@@ -478,7 +482,7 @@ void LyXServer::callback(LyXServer * serv, string const & msg)
                                int i= 0; //find place in clients[]
                                while (!serv->clients[i].empty() 
                                       && i<serv->numclients) 
-                                       i++;
+                                       ++i;
                                serv->clients[i] = client;
                                serv->numclients++;
                                buf = "LYXSRV:" + client + ":hello\n";
@@ -489,13 +493,13 @@ void LyXServer::callback(LyXServer * serv, string const & msg)
                        } else if (cmd == "bye") {
                                // If clients == 0 maybe we should reset the pipes
                                // to prevent fake callbacks
-                               int i; //look if client is registered
-                               for (i= 0; i<serv->numclients; i++) {
+                               int i = 0; //look if client is registered
+                               for (; i < serv->numclients; ++i) {
                                        if (serv->clients[i] == client) break;
                                }
-                               if (i<serv->numclients) {
+                               if (i < serv->numclients) {
                                        serv->numclients--;
-                                       serv->clients[i].clear();
+                                       serv->clients[i].erase();
                                        lyxerr[Debug::LYXSERVER]
                                                << "LyXServer: Client "
                                                << client << " said goodbye"
@@ -520,12 +524,12 @@ void LyXServer::callback(LyXServer * serv, string const & msg)
                        // connect to the lyxfunc in the single LyXView we
                        // support currently. (Lgb)
 
-                       int action = lyxaction.LookupFunc(cmd.c_str());
+                       int action = lyxaction.LookupFunc(cmd);
                        //int action = -1;
                        string rval, buf;
                    
                        if (action>= 0) {
-                               rval = serv->func->Dispatch(cmd);
+                               rval = serv->func->Dispatch(action, arg);
                        } else {
                                rval = "Unknown command";
                        }