Loading sld/trunk/Makefile.am +2 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ sld_SOURCES= src/sld.hh \ src/options.cc \ src/daemon.hh \ src/daemon.cc \ src/log.hh \ src/log.cc \ src/error.hh \ src/error.cc Loading sld/trunk/TODO +3 −0 Original line number Diff line number Diff line IMPROVMENTS: remove static magic MAX_LINE_SIZE in sscanf Print start date and stop date in log file effacer les scripts avant de quitter Ajout une fonction qui delete un script BUG: sld/trunk/examples/conffile +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ retrydelay=5 # 0 = quiete # 1 = normale # 2 = verbose verbose=1 verbose=2 # Every out (stdout and sterr) are also printed in this file # Default = none Loading sld/trunk/src/daemon.cc +18 −14 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ void SLDaemon::run() { char *line; if (verbose()) std::cout << options; logout << options; check_options(); clean_dir(options.scriptdir); net_connect: Loading Loading @@ -92,7 +92,7 @@ void SLDaemon::run() { throw; else { sendln(e.message()); std::cerr << "!! " << e.message() << std::endl; logerr << "!! " << e.message() << "\n"; } } delete[] line; Loading @@ -102,6 +102,10 @@ void SLDaemon::run() { catch (const Error &e) { if (e.code() != ERR_NET) throw; if (verbose()) logerr << "Connexion lost. Retrying in " << options.retrydelay << " seconds.\n"; fclose(socket_fs_); socket_fs_ = 0; sleep(options.retrydelay); goto net_connect; } Loading @@ -115,9 +119,8 @@ void SLDaemon::connect() { struct sockaddr_in daddr; struct hostent *h; // close existing connexion if (socket_fs_ != 0) disconnect(); // Check no existing connexion assert(socket_fs_ == 0); // retrieve remote host info h = gethostbyname(options.server.c_str()); Loading @@ -135,16 +138,16 @@ void SLDaemon::connect() { memset(daddr.sin_zero, '\0', sizeof daddr.sin_zero); if (verbose()) std::cout << "Connecting to " << h->h_name << " (" << inet_ntoa(*(struct in_addr*)h->h_addr) << ") on port " << options.port << "..." << std::endl; logout << "Connecting to " << h->h_name << " (" << inet_ntoa(*(struct in_addr*)h->h_addr) << ") on port " << options.port << "...\n"; // connect if (::connect(socket_fd_, (struct sockaddr *) &daddr, sizeof daddr) == -1) throw Error(ERR_NET, strerror(errno)); if (verbose()) std::cout << "Connected to " << h->h_name << " (" << inet_ntoa(*(struct in_addr*)h->h_addr) << ") on port " << options.port << "..." << std::endl; logout << "Connected to " << h->h_name << " (" << inet_ntoa(*(struct in_addr*)h->h_addr) << ") on port " << options.port << "...\n"; // initialize socket stream if ((socket_fs_ = fdopen(socket_fd_, "r+")) == 0) Loading @@ -157,7 +160,7 @@ void SLDaemon::disconnect() { if (fclose(socket_fs_)) throw Error(ERR_NET, strerror(errno)); if (verbose()) std::cout << "Connection closed." << std::endl; logout << "Connection closed.\n"; socket_fs_ = 0; } Loading @@ -182,7 +185,7 @@ void SLDaemon::sendln(const string &s) { if (!fprintf(socket_fs_, "%s\n", s.c_str())) throw Error(ERR_NET, strerror(errno)); if (verbose()) std::cout << SND_DATA << s << std::endl; logout << SND_DATA << s << "\n"; } char *SLDaemon::recv(size_t size) { Loading Loading @@ -217,7 +220,7 @@ char *SLDaemon::recvln() { throw Error(ERR_FILE, (string) "recvln: " + strerror(errno)); } if (verbose()) std::cout << RCV_DATA << line; logout << RCV_DATA << line; return line; } Loading Loading @@ -546,7 +549,8 @@ void SLDaemon::cmd_list() { try { while ((len = fread(buf, 1, 255, fls)) > 0) send(buf, len); if (verbose()) std::cout << "LIST: data send." << std::endl; if (verbose()) logout << "LIST: data send.\n"; flush(); } catch (...) { Loading Loading @@ -686,7 +690,7 @@ void sigchild(int) { WEXITSTATUS(status)); write(d.socket_fd_, buf, strlen(buf)); if (d.verbose()) std::cout << SND_DATA << buf; logout << SND_DATA << buf; jobs_.erase(i); break; } Loading sld/trunk/src/log.cc 0 → 100644 +59 −0 Original line number Diff line number Diff line #include <unistd.h> #include <iostream> #include <fstream> #include "error.h" #include "log.hh" Logger logout(std::cout); Logger logerr(std::cerr); Logger::Logger(std::ostream &o, const string &file) : flux_(o) { this->file(file); } Logger::~Logger() { if (logfile_ != 0) logfile_.close(); } bool Logger::file(const string &filename) { // close previous logfile if (logfile_.is_open()) logfile_.close(); // open logfile_.open(filename.c_str()); return logfile_.is_open(); } bool Logger::has_file() const { return logfile_.is_open(); } Logger &operator<<(Logger &l, const string &s) { l.flux_ << s; if (l.has_file()) { l.logfile_ << s; l.logfile_.flush(); } return l; } Logger &operator<<(Logger &l, const char *s) { l.flux_ << s; if (l.has_file()) { l.logfile_ << s; l.logfile_.flush(); } return l; } Logger &operator<<(Logger &l, int i) { l.flux_ << i; if (l.has_file()) { l.logfile_ << i; l.logfile_.flush(); } return l; } Loading
sld/trunk/Makefile.am +2 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ sld_SOURCES= src/sld.hh \ src/options.cc \ src/daemon.hh \ src/daemon.cc \ src/log.hh \ src/log.cc \ src/error.hh \ src/error.cc Loading
sld/trunk/TODO +3 −0 Original line number Diff line number Diff line IMPROVMENTS: remove static magic MAX_LINE_SIZE in sscanf Print start date and stop date in log file effacer les scripts avant de quitter Ajout une fonction qui delete un script BUG:
sld/trunk/examples/conffile +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ retrydelay=5 # 0 = quiete # 1 = normale # 2 = verbose verbose=1 verbose=2 # Every out (stdout and sterr) are also printed in this file # Default = none Loading
sld/trunk/src/daemon.cc +18 −14 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ void SLDaemon::run() { char *line; if (verbose()) std::cout << options; logout << options; check_options(); clean_dir(options.scriptdir); net_connect: Loading Loading @@ -92,7 +92,7 @@ void SLDaemon::run() { throw; else { sendln(e.message()); std::cerr << "!! " << e.message() << std::endl; logerr << "!! " << e.message() << "\n"; } } delete[] line; Loading @@ -102,6 +102,10 @@ void SLDaemon::run() { catch (const Error &e) { if (e.code() != ERR_NET) throw; if (verbose()) logerr << "Connexion lost. Retrying in " << options.retrydelay << " seconds.\n"; fclose(socket_fs_); socket_fs_ = 0; sleep(options.retrydelay); goto net_connect; } Loading @@ -115,9 +119,8 @@ void SLDaemon::connect() { struct sockaddr_in daddr; struct hostent *h; // close existing connexion if (socket_fs_ != 0) disconnect(); // Check no existing connexion assert(socket_fs_ == 0); // retrieve remote host info h = gethostbyname(options.server.c_str()); Loading @@ -135,16 +138,16 @@ void SLDaemon::connect() { memset(daddr.sin_zero, '\0', sizeof daddr.sin_zero); if (verbose()) std::cout << "Connecting to " << h->h_name << " (" << inet_ntoa(*(struct in_addr*)h->h_addr) << ") on port " << options.port << "..." << std::endl; logout << "Connecting to " << h->h_name << " (" << inet_ntoa(*(struct in_addr*)h->h_addr) << ") on port " << options.port << "...\n"; // connect if (::connect(socket_fd_, (struct sockaddr *) &daddr, sizeof daddr) == -1) throw Error(ERR_NET, strerror(errno)); if (verbose()) std::cout << "Connected to " << h->h_name << " (" << inet_ntoa(*(struct in_addr*)h->h_addr) << ") on port " << options.port << "..." << std::endl; logout << "Connected to " << h->h_name << " (" << inet_ntoa(*(struct in_addr*)h->h_addr) << ") on port " << options.port << "...\n"; // initialize socket stream if ((socket_fs_ = fdopen(socket_fd_, "r+")) == 0) Loading @@ -157,7 +160,7 @@ void SLDaemon::disconnect() { if (fclose(socket_fs_)) throw Error(ERR_NET, strerror(errno)); if (verbose()) std::cout << "Connection closed." << std::endl; logout << "Connection closed.\n"; socket_fs_ = 0; } Loading @@ -182,7 +185,7 @@ void SLDaemon::sendln(const string &s) { if (!fprintf(socket_fs_, "%s\n", s.c_str())) throw Error(ERR_NET, strerror(errno)); if (verbose()) std::cout << SND_DATA << s << std::endl; logout << SND_DATA << s << "\n"; } char *SLDaemon::recv(size_t size) { Loading Loading @@ -217,7 +220,7 @@ char *SLDaemon::recvln() { throw Error(ERR_FILE, (string) "recvln: " + strerror(errno)); } if (verbose()) std::cout << RCV_DATA << line; logout << RCV_DATA << line; return line; } Loading Loading @@ -546,7 +549,8 @@ void SLDaemon::cmd_list() { try { while ((len = fread(buf, 1, 255, fls)) > 0) send(buf, len); if (verbose()) std::cout << "LIST: data send." << std::endl; if (verbose()) logout << "LIST: data send.\n"; flush(); } catch (...) { Loading Loading @@ -686,7 +690,7 @@ void sigchild(int) { WEXITSTATUS(status)); write(d.socket_fd_, buf, strlen(buf)); if (d.verbose()) std::cout << SND_DATA << buf; logout << SND_DATA << buf; jobs_.erase(i); break; } Loading
sld/trunk/src/log.cc 0 → 100644 +59 −0 Original line number Diff line number Diff line #include <unistd.h> #include <iostream> #include <fstream> #include "error.h" #include "log.hh" Logger logout(std::cout); Logger logerr(std::cerr); Logger::Logger(std::ostream &o, const string &file) : flux_(o) { this->file(file); } Logger::~Logger() { if (logfile_ != 0) logfile_.close(); } bool Logger::file(const string &filename) { // close previous logfile if (logfile_.is_open()) logfile_.close(); // open logfile_.open(filename.c_str()); return logfile_.is_open(); } bool Logger::has_file() const { return logfile_.is_open(); } Logger &operator<<(Logger &l, const string &s) { l.flux_ << s; if (l.has_file()) { l.logfile_ << s; l.logfile_.flush(); } return l; } Logger &operator<<(Logger &l, const char *s) { l.flux_ << s; if (l.has_file()) { l.logfile_ << s; l.logfile_.flush(); } return l; } Logger &operator<<(Logger &l, int i) { l.flux_ << i; if (l.has_file()) { l.logfile_ << i; l.logfile_.flush(); } return l; }