diff --git a/DCCSock.h b/DCCSock.h index 02e55db4..7e5d2f92 100644 --- a/DCCSock.h +++ b/DCCSock.h @@ -11,6 +11,7 @@ #include "zncconfig.h" #include "FileUtils.h" +#include "Socket.h" // Forward Declarations class CUser; diff --git a/ExecSock.h b/ExecSock.h new file mode 100644 index 00000000..793daa6d --- /dev/null +++ b/ExecSock.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2004-2011 See the AUTHORS file for details. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#ifndef EXEC_SOCK_H +#define EXEC_SOCK_H + +#include "Socket.h" +#include + +//! @author imaginos@imaginos.net +class CExecSock : public CZNCSock { +public: + CExecSock() : CZNCSock() { + m_iPid = -1; + } + + int Execute(const CString & sExec) { + int iReadFD, iWriteFD; + m_iPid = popen2(iReadFD, iWriteFD, sExec); + if (m_iPid != -1) { + ConnectFD(iReadFD, iWriteFD, "0.0.0.0:0"); + } + return(m_iPid); + } + void Kill(int iSignal) + { + kill(m_iPid, iSignal); + Close(); + } + virtual ~CExecSock() { + close2(m_iPid, GetRSock(), GetWSock()); + SetRSock(-1); + SetWSock(-1); + } + + int popen2(int & iReadFD, int & iWriteFD, const CString & sCommand); + void close2(int iPid, int iReadFD, int iWriteFD); + +private: + int m_iPid; +}; + +#endif // !EXEC_SOCK_H diff --git a/FileUtils.cpp b/FileUtils.cpp index c37e3e05..f4eaf735 100644 --- a/FileUtils.cpp +++ b/FileUtils.cpp @@ -7,12 +7,15 @@ */ #include "FileUtils.h" +#include "ExecSock.h" #include "Utils.h" +#include "ZNCDebug.h" +#include +#include +#include #include #include #include -#include -#include #ifndef HAVE_LSTAT # define lstat(a, b) stat(a, b) diff --git a/FileUtils.h b/FileUtils.h index 46d43e14..6f4e041c 100644 --- a/FileUtils.h +++ b/FileUtils.h @@ -10,11 +10,12 @@ #define _FILEUTILS_H #include "zncconfig.h" -#include "Socket.h" #include "ZNCString.h" #include #include -#include +#include +#include +#include #include using std::vector; @@ -256,37 +257,4 @@ protected: CFile::EFileAttr m_eSortAttr; bool m_bDesc; }; - -//! @author imaginos@imaginos.net -class CExecSock : public CZNCSock { -public: - CExecSock() : CZNCSock() { - m_iPid = -1; - } - - int Execute(const CString & sExec) { - int iReadFD, iWriteFD; - m_iPid = popen2(iReadFD, iWriteFD, sExec); - if (m_iPid != -1) { - ConnectFD(iReadFD, iWriteFD, "0.0.0.0:0"); - } - return(m_iPid); - } - void Kill(int iSignal) - { - kill(m_iPid, iSignal); - Close(); - } - virtual ~CExecSock() { - close2(m_iPid, GetRSock(), GetWSock()); - SetRSock(-1); - SetWSock(-1); - } - - int popen2(int & iReadFD, int & iWriteFD, const CString & sCommand); - void close2(int iPid, int iReadFD, int iWriteFD); - -private: - int m_iPid; -}; #endif // !_FILEUTILS_H diff --git a/Template.cpp b/Template.cpp index 23c6574b..300ed6fe 100644 --- a/Template.cpp +++ b/Template.cpp @@ -8,6 +8,7 @@ #include "Template.h" #include "FileUtils.h" +#include "ZNCDebug.h" #include #include diff --git a/modules/extra/motdfile.cpp b/modules/extra/motdfile.cpp index ed3cd87a..5c2d3331 100644 --- a/modules/extra/motdfile.cpp +++ b/modules/extra/motdfile.cpp @@ -8,6 +8,7 @@ #include "Modules.h" #include "Client.h" +#include "FileUtils.h" class CMotdFileMod : public CGlobalModule { public: diff --git a/modules/extra/shell.cpp b/modules/extra/shell.cpp index dd9d0d9b..6194d4e9 100644 --- a/modules/extra/shell.cpp +++ b/modules/extra/shell.cpp @@ -8,6 +8,7 @@ #include "User.h" #include "znc.h" +#include "ExecSock.h" // Forward Declaration class CShellMod;