diff options
-rw-r--r-- | lib/daemon.cc | 19 | ||||
-rw-r--r-- | lib/file.cc | 37 | ||||
-rw-r--r-- | lib/file.h | 4 | ||||
-rw-r--r-- | lib/info.cc | 2 | ||||
-rw-r--r-- | lib/info.h | 19 | ||||
-rw-r--r-- | lib/network.cc | 23 | ||||
-rw-r--r-- | lib/network.h | 4 | ||||
-rw-r--r-- | lib/socket.cc | 23 | ||||
-rw-r--r-- | lib/socket.h | 7 | ||||
-rw-r--r-- | lib/threadsafe_queue_priority.cc | 5 | ||||
-rw-r--r-- | lib/threadsafe_queue_priority.h | 6 |
11 files changed, 70 insertions, 79 deletions
diff --git a/lib/daemon.cc b/lib/daemon.cc index 6e46bd5..fc052ff 100644 --- a/lib/daemon.cc +++ b/lib/daemon.cc @@ -31,7 +31,7 @@ #include <signal.h> #include <stdio.h> -// For getgrent and getgrent +// For getpwent and getgrent #include <sys/types.h> #include <grp.h> #include <pwd.h> @@ -47,9 +47,6 @@ Daemon::~Daemon() int Daemon::run(const char *user, const char* group) { - int f; - int fd; - // Fetch user id int uid = -1; struct passwd *p = getpwent(); @@ -72,6 +69,8 @@ int Daemon::run(const char *user, const char* group) fprintf(stderr, "Could not find group \"%s\" in /etc/group file.\n", group); } + + /* chdir("/"); umask(0); @@ -86,19 +85,22 @@ int Daemon::run(const char *user, const char* group) if(setgid(gid) != 0) { fprintf(stderr, "Failed to change to group \"%s\" (gid: %d), quitting.\n", group, gid); perror(""); - fprintf(stderr, "Runnning daemon as current group\n"); + fprintf(stderr, "Running daemon as current group\n"); } // Switch to given user if(setuid(uid) != 0) { fprintf(stderr, "Failed to change to user \"%s\" (uid: %d), quitting.\n", user, uid); perror(""); - fprintf(stderr, "Runnning daemon as current user\n"); + fprintf(stderr, "Running daemon as current user\n"); } // Redirect stdin, stdout and stderr to /dev/null fd = open("/dev/null", O_NOCTTY | O_RDWR, 0666); + int f; + int fd; + dup2(0, fd); dup2(1, fd); dup2(2, fd); @@ -115,4 +117,9 @@ int Daemon::run(const char *user, const char* group) // exit(0); return 0; } + */ + + // Glibc to do all of the above + daemon(0,0); + return daemon_main(); } diff --git a/lib/file.cc b/lib/file.cc index 6bd8438..88e8df1 100644 --- a/lib/file.cc +++ b/lib/file.cc @@ -28,6 +28,7 @@ #include "file.h" #include "miav_config.h" +#include "info.h" #include <sys/types.h> #include <sys/stat.h> @@ -42,12 +43,10 @@ #include <stdlib.h> -File::File(char *fn, char* ext, Info *i) +File::File(char *fn, char* ext) { char path[256]; - info = i; - savestate = SAVE; filename = new char[strlen(fn) + 1]; @@ -76,9 +75,9 @@ File::~File() { close(fd); - info->info("This session contains the following files..."); + MIaV::info->info("This session contains the following files..."); for(unsigned int cnt = 0; cnt < filelist.size(); cnt ++) { - info->info("[%s]", filelist[cnt].c_str()); + MIaV::info->info("[%s]", filelist[cnt].c_str()); } std::string *trash = MIaV::config->readString("server_trash"); @@ -86,20 +85,20 @@ File::~File() switch(savestate) { case NO_CHANGE: - info->warn("File had no savestate!"); + MIaV::info->warn("File had no savestate!"); break; case SAVE: - info->info("Files in this session is to be saved."); + MIaV::info->info("Files in this session is to be saved."); break; case DELETE: - info->info("Files in this session is to be deleted (moved to trash)."); + MIaV::info->info("Files in this session is to be deleted (moved to trash)."); Move((char*)trash->c_str()); break; case LATER: - info->info("Files in this session is stored for later decisson."); + MIaV::info->info("Files in this session is stored for later decisson."); Move((char*)later->c_str()); break; } @@ -122,10 +121,10 @@ int File::Move(char *destination) strcpy(filename, (char*)filelist[cnt].c_str()); sprintf(newfile, "%s%s", destination, strrchr(filename, '/')); if(rename((char*)filelist[cnt].c_str(), newfile) == -1) - info->error("Error moving file %s to %s:", - (char*)filelist[cnt].c_str(), - newfile, - strerror(errno)); + MIaV::info->error("Error moving file %s to %s:", + (char*)filelist[cnt].c_str(), + newfile, + strerror(errno)); } return 0; } @@ -153,7 +152,7 @@ int File::Open() // If more than 100 files are created in one day, something is terribly wrong! if(num > 100) { - info->error("Something is wrong with the path [%s]!", fname); + MIaV::info->error("Something is wrong with the path [%s]!", fname); exit(1); } @@ -164,7 +163,7 @@ int File::Open() seqnum ++; - info->info("Output file: %s", fname); + MIaV::info->info("Output file: %s", fname); return 0; } @@ -176,11 +175,11 @@ int File::Write(void* data, int size) w = write(fd, data, size); if(w != size) { - info->info("Wrapping file."); + MIaV::info->info("Wrapping file."); Open(); w = write(fd, data, size); if(w != size) { - info->error("Out of diskspace!"); + MIaV::info->error("Out of diskspace!"); return -1; } } @@ -201,7 +200,7 @@ int File::createPath(char* path) if(strlen(subpath) > 0) createPath(subpath); - info->info("Checking and/or generating directory: %s", path); + MIaV::info->info("Checking and/or generating directory: %s", path); // stat(path, &stats); //if(!S_ISDIR(stats.st_mode) && S_ISREG(stats.st_mode)) @@ -216,7 +215,7 @@ int File::createPath(char* path) void File::setSaveState(n_savestate s) { savestate = s; - info->info("SETTING SAVESTATE TO: %d", savestate); + MIaV::info->info("SETTING SAVESTATE TO: %d", savestate); } #ifdef __TEST_FILE @@ -28,7 +28,6 @@ #ifndef __MIAV_FILE_H__ #define __MIAV_FILE_H__ -#include "info.h" #include <stdio.h> #include <vector> @@ -41,7 +40,7 @@ class File { public: - File(char *filename, char* ext, Info* info); + File(char *filename, char* ext); ~File(); int Write(void* data, int size); @@ -62,7 +61,6 @@ public: private: volatile n_savestate savestate; - Info* info; std::vector<std::string> filelist; diff --git a/lib/info.cc b/lib/info.cc index a7b5f3e..86e4cc4 100644 --- a/lib/info.cc +++ b/lib/info.cc @@ -24,10 +24,10 @@ * along with MIaV; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include <config.h> #include "info.h" #include <time.h> +#include <stdarg.h> Info::Info() { pthread_mutex_init (&mutex, NULL); @@ -28,18 +28,13 @@ #ifndef __MIAV_INFO_H__ #define __MIAV_INFO_H__ -#include "miav_config.h" -// Cyclic include :( -class MiavConfig; - -#include <time.h> -#include <sys/types.h> -#include <unistd.h> -#include <stdarg.h> +//#include <time.h> +//#include <sys/types.h> +//#include <unistd.h> #include <pthread.h> -#include <semaphore.h> +//#include <semaphore.h> #include <string> -using namespace std; +//using namespace std; class Info { public: @@ -52,10 +47,10 @@ public: void log(char* fmt, ...); protected: - MiavConfig *config; + // MiavConfig *config; pthread_mutex_t mutex; - string log_filename; + std::string log_filename; }; // For the global info object diff --git a/lib/network.cc b/lib/network.cc index 799bc98..f00d358 100644 --- a/lib/network.cc +++ b/lib/network.cc @@ -27,14 +27,15 @@ #include <config.h> #include "network.h" +#include "info.h" + #include <stdlib.h> #include <stdio.h> #include <string.h> #include <sys/socket.h> -Network::Network(Socket *gs, Info *ginfo) +Network::Network(Socket *gs) { - info = ginfo; s = gs; } @@ -45,13 +46,13 @@ Network::~Network() int Network::write(void *buf, int size) { if(!s->isConnected()) { - // info->error("Write attempted to a socket not connected!"); + // MIaV::info->error("Write attempted to a socket not connected!"); return -1; } int n = send(s->ssocket, buf, size, MSG_WAITALL); if(n == -1) { - info->error("An error occurred!"); + MIaV::info->error("An error occurred!"); } return n; @@ -60,13 +61,13 @@ int Network::write(void *buf, int size) int Network::read(void *buf, int size) { if(!s->isConnected()) { - // info->error("Read attempted from a socket not connected!"); + // MIaV::info->error("Read attempted from a socket not connected!"); return -1; } int n = recv(s->ssocket, buf, size, MSG_WAITALL); if(n == -1) { - info->error("An error occurred!"); + MIaV::info->error("An error occurred!"); } return n; @@ -90,7 +91,7 @@ int Network::sendPackage(n_header *h, void* buf, int bufsz) struct iovec iovecs[2]; if(!s->isConnected()) { - // info->error("Write attempted to a socket not connected!"); + // MIaV::info->error("Write attempted to a socket not connected!"); return -1; } @@ -107,7 +108,7 @@ int Network::sendPackage(n_header *h, void* buf, int bufsz) int n = sendmsg(s->ssocket, &msg, 0); if(n < 0) { - info->error("A network error ocurred during sendPackage!"); + MIaV::info->error("A network error ocurred during sendPackage!"); return -1; } @@ -120,7 +121,7 @@ int Network::recvPackage(n_header *h, void* buf, int bufsz) struct iovec iovecs[2]; if(!s->isConnected()) { - // info->error("Read attempted to a socket not connected!"); + // MIaV::info->error("Read attempted to a socket not connected!"); return -1; } @@ -138,12 +139,12 @@ int Network::recvPackage(n_header *h, void* buf, int bufsz) int n = recvmsg(s->ssocket, &msg, MSG_WAITALL); if(n < 0) { - info->error("A network error ocurred during recvPackage!"); + MIaV::info->error("A network error ocurred during recvPackage!"); return -1; } if(msg.msg_iovlen != 2) { - info->error("Wrong package format!"); + MIaV::info->error("Wrong package format!"); return -1; } return n; diff --git a/lib/network.h b/lib/network.h index f64310e..e00dac7 100644 --- a/lib/network.h +++ b/lib/network.h @@ -30,11 +30,10 @@ #include "socket.h" #include "package.h" -#include "info.h" class Network { public: - Network(Socket *gs, Info* ginfo); + Network(Socket *gs); ~Network(); // Raw communication @@ -46,7 +45,6 @@ public: int recvPackage(n_header *h, void* buf, int bufsz); private: - Info *info; Socket *s; }; diff --git a/lib/socket.cc b/lib/socket.cc index 2ae88dc..6189d23 100644 --- a/lib/socket.cc +++ b/lib/socket.cc @@ -27,19 +27,18 @@ #include <config.h> #include "socket.h" +#include "info.h" #include <errno.h> -Socket::Socket(Info *ginfo) +Socket::Socket() { - info = ginfo; connected = false; err = 0; } -Socket::Socket(u_short port, Info *ginfo) +Socket::Socket(u_short port) { - info = ginfo; connected = false; err = 0; @@ -51,7 +50,7 @@ Socket::Socket(u_short port, Info *ginfo) if (ssocket < 0) { err = 1; - info->error("Socket: socket() failed!"); + MIaV::info->error("Socket: socket() failed!"); } socketaddr.sin_family = AF_INET; // Use "internet protocol" IP @@ -71,10 +70,10 @@ Socket::~Socket() Socket Socket::slisten() { - Socket s = Socket(info); + Socket s; if(err) { - //info->error("Socket: No socket present!"); + //MIaV::info->error("Socket: No socket present!"); return s; } if(!connected) { @@ -82,7 +81,7 @@ Socket Socket::slisten() err = bind(ssocket, (struct sockaddr*)&socketaddr, sizeof(socketaddr)); if (err) { - info->error("Socket: bind() failed! %s", strerror(errno)); + MIaV::info->error("Socket: bind() failed! %s", strerror(errno)); return s; } @@ -90,7 +89,7 @@ Socket Socket::slisten() // requests (max 5 in queue) err = listen(ssocket, 5); if(err) { - info->error("Socket: listen() failed! %s", strerror(errno)); + MIaV::info->error("Socket: listen() failed! %s", strerror(errno)); return s; } } @@ -105,7 +104,7 @@ Socket Socket::slisten() if (s.ssocket < 0) { s.connected = false; err = 1; - info->error("Socket: accept() failed! %s", strerror(errno)); + MIaV::info->error("Socket: accept() failed! %s", strerror(errno)); return s; } @@ -119,7 +118,7 @@ int Socket::sconnect(char *ip) { if(err) { connected = false; - info->error("Socket: No socket present!"); + MIaV::info->error("Socket: No socket present!"); return err; } @@ -130,7 +129,7 @@ int Socket::sconnect(char *ip) err = connect(ssocket, (struct sockaddr*)&socketaddr, sizeof(socketaddr)); if (err) { connected = false; - info->error("Socket: connect() failed! %s", strerror(errno)); + MIaV::info->error("Socket: connect() failed! %s", strerror(errno)); return err; } // fprintf(stderr, "Socket connected\n"); diff --git a/lib/socket.h b/lib/socket.h index df2a133..dde4729 100644 --- a/lib/socket.h +++ b/lib/socket.h @@ -37,12 +37,10 @@ #include <sys/socket.h> #include <arpa/inet.h> -#include "info.h" - class Socket { public: - Socket(Info *ginfo); - Socket(u_short port, Info *ginfo); + Socket(); + Socket(u_short port); ~Socket(); Socket slisten(); int sconnect(char *ip); @@ -54,7 +52,6 @@ public: bool connected; private: - Info *info; int err; }; diff --git a/lib/threadsafe_queue_priority.cc b/lib/threadsafe_queue_priority.cc index df7ae8c..c2445de 100644 --- a/lib/threadsafe_queue_priority.cc +++ b/lib/threadsafe_queue_priority.cc @@ -29,10 +29,11 @@ #include "util.h" -ThreadSafeQueuePriority::ThreadSafeQueuePriority(Info* i, unsigned int number) +#include "info.h" + +ThreadSafeQueuePriority::ThreadSafeQueuePriority(unsigned int number) // : ThreadSafeQueue< Frame* >() { - info = i; framenumber = number; } diff --git a/lib/threadsafe_queue_priority.h b/lib/threadsafe_queue_priority.h index 8d3cdf1..a310271 100644 --- a/lib/threadsafe_queue_priority.h +++ b/lib/threadsafe_queue_priority.h @@ -35,8 +35,6 @@ #include <queue> #include <functional> -#include "info.h" - // Method for use, when comparing Frames in priority queue. template <typename T> struct priority : std::binary_function<T, T, bool> { @@ -47,7 +45,7 @@ struct priority : std::binary_function<T, T, bool> { class ThreadSafeQueuePriority: public ThreadSafeQueue< Frame* > { public: - ThreadSafeQueuePriority(Info *info, unsigned int framenumber = 0); + ThreadSafeQueuePriority(unsigned int framenumber = 0); ~ThreadSafeQueuePriority(); void push(Frame *frame); @@ -55,8 +53,6 @@ public: int size(); private: - Info* info; - unsigned int framenumber; std::priority_queue< Frame*, std::vector<Frame*>, priority<Frame*> > queue; }; |