X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxserver.C;h=395ecb8b793ab91de17f878154453480fe279233;hb=f65b7ff4ab2fe8ad0d9196c231064240e3fde81f;hp=8449f9a4209633d6b6c9ef69163d85a2e084fbdb;hpb=8dccec5c46a1689fe3ea37144252e952771e1e1c;p=lyx.git diff --git a/src/lyxserver.C b/src/lyxserver.C index 8449f9a420..395ecb8b79 100644 --- a/src/lyxserver.C +++ b/src/lyxserver.C @@ -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 @@ -66,11 +67,13 @@ #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; inumclients == 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() && inumclients) - 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; inumclients; i++) { + int i = 0; //look if client is registered + for (; i < serv->numclients; ++i) { if (serv->clients[i] == client) break; } - if (inumclients) { + 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"; }