65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| commit 95f1c7e9081866ea1e716743ea039a74565f80c6
 | |
| Author: Louis Sautier <sautier.louis@gmail.com>
 | |
| Date:   Sun Jul 15 15:36:21 2018 +0200
 | |
| 
 | |
|     Allow integration tests to be run inside a different root
 | |
|     
 | |
|     Based on DarthGandalf's patch submitted in
 | |
|     https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=15112014e7605d13624297d7601504b5d187a6de
 | |
| 
 | |
| diff --git a/include/znc/znc.h b/include/znc/znc.h
 | |
| index ecb2b41a..a791a648 100644
 | |
| --- a/include/znc/znc.h
 | |
| +++ b/include/znc/znc.h
 | |
| @@ -251,6 +251,7 @@ class CZNC : private CCoreTranslationMixin {
 | |
|      void DisableConfigTimer();
 | |
|  
 | |
|      static void DumpConfig(const CConfig* Config);
 | |
| +    static CString UnusualRoot();
 | |
|  
 | |
|    private:
 | |
|      static CString FormatBindError();
 | |
| diff --git a/src/Modules.cpp b/src/Modules.cpp
 | |
| index 5aec7805..6f9c34ae 100644
 | |
| --- a/src/Modules.cpp
 | |
| +++ b/src/Modules.cpp
 | |
| @@ -1899,9 +1899,10 @@ CModules::ModDirList CModules::GetModDirs() {
 | |
|      sDir = CZNC::Get().GetModPath() + "/";
 | |
|      ret.push(std::make_pair(sDir, sDir));
 | |
|  
 | |
| +    CString sUnusualRoot = CZNC::UnusualRoot();
 | |
|      // <moduledir> and <datadir> (<prefix>/lib/znc)
 | |
| -    ret.push(std::make_pair(_MODDIR_ + CString("/"),
 | |
| -                            _DATADIR_ + CString("/modules/")));
 | |
| +    ret.push(std::make_pair(sUnusualRoot + _MODDIR_ + CString("/"),
 | |
| +                            sUnusualRoot + _DATADIR_ + CString("/modules/")));
 | |
|  
 | |
|      return ret;
 | |
|  }
 | |
| diff --git a/src/WebModules.cpp b/src/WebModules.cpp
 | |
| index a5841987..f1b8a421 100644
 | |
| --- a/src/WebModules.cpp
 | |
| +++ b/src/WebModules.cpp
 | |
| @@ -565,7 +565,7 @@ CString CWebSock::GetSkinPath(const CString& sSkinName) {
 | |
|          sRet = CZNC::Get().GetCurPath() + "/webskins/" + sSkin;
 | |
|  
 | |
|          if (!CFile::IsDir(sRet)) {
 | |
| -            sRet = CString(_SKINDIR_) + "/" + sSkin;
 | |
| +            sRet = CZNC::UnusualRoot() + CString(_SKINDIR_) + "/" + sSkin;
 | |
|          }
 | |
|      }
 | |
|  
 | |
| diff --git a/src/znc.cpp b/src/znc.cpp
 | |
| index 4e7216ee..dd901497 100644
 | |
| --- a/src/znc.cpp
 | |
| +++ b/src/znc.cpp
 | |
| @@ -2130,3 +2130,8 @@ void CZNC::DisableConfigTimer() {
 | |
|          m_pConfigTimer = nullptr;
 | |
|      }
 | |
|  }
 | |
| +
 | |
| +CString CZNC::UnusualRoot() {
 | |
| +    char* szUnusualRoot = getenv("ZNC_UNUSUAL_ROOT");
 | |
| +    return szUnusualRoot ? szUnusualRoot : "";
 | |
| +}
 |