diff --git a/include/znc/version.h b/include/znc/version.h index 360280ea..3f8b6391 100644 --- a/include/znc/version.h +++ b/include/znc/version.h @@ -11,6 +11,9 @@ #define VERSION (VERSION_MAJOR + VERSION_MINOR / 10.0) // You can add -DVERSION_EXTRA="stuff" to your CXXFLAGS! +#ifndef VERSION_EXTRA +# define VERSION_EXTRA "" +#endif extern const char* ZNC_VERSION_EXTRA; #endif // !ZNC_VERSION_H diff --git a/make-tarball.sh b/make-tarball.sh index 29d03823..2cc8c520 100755 --- a/make-tarball.sh +++ b/make-tarball.sh @@ -54,7 +54,7 @@ sed -e 's:#include "defines.h":#include :' third_party/Csocket/Cs rm make-tarball.sh sed -e "s/THIS_IS_NOT_TARBALL//" -i Makefile.in echo '#include ' > src/version.cpp - echo "const char* ZNC_VERSION_EXTRA = \"$DESC\";" >> src/version.cpp + echo "const char* ZNC_VERSION_EXTRA = VERSION_EXTRA \"$DESC\";" >> src/version.cpp ) ( cd $TMPDIR diff --git a/modules/modules_online.cpp b/modules/modules_online.cpp index 199404b5..85e39fa9 100644 --- a/modules/modules_online.cpp +++ b/modules/modules_online.cpp @@ -72,7 +72,7 @@ public: if (IsOnlineModNick(sNick)) { CIRCNetwork* pNetwork = GetNetwork(); - PutUser(":znc.in 311 " + pNetwork->GetCurNick() + " " + sNick + " " + sNick + " znc.in * :" + sNick); + PutUser(":znc.in 311 " + pNetwork->GetCurNick() + " " + sNick + " znc znc.in * :" + sNick); PutUser(":znc.in 312 " + pNetwork->GetCurNick() + " " + sNick + " *.znc.in :Bouncer"); PutUser(":znc.in 318 " + pNetwork->GetCurNick() + " " + sNick + " :End of /WHOIS list."); diff --git a/src/Chan.cpp b/src/Chan.cpp index 1c5a3809..641b3a95 100644 --- a/src/Chan.cpp +++ b/src/Chan.cpp @@ -141,7 +141,7 @@ void CChan::Cycle() const { } void CChan::JoinUser(const CString& sKey) { - if (!sKey.empty()) { + if (!IsOn() && !sKey.empty()) { SetKey(sKey); } m_pNetwork->PutIRC("JOIN " + GetName() + " " + GetKey()); diff --git a/src/Client.cpp b/src/Client.cpp index 5a35c27e..54fcc834 100644 --- a/src/Client.cpp +++ b/src/Client.cpp @@ -431,13 +431,19 @@ void CClient::ReadLine(const CString& sData) { return; } else if (sCommand.Equals("JOIN")) { CString sChans = sLine.Token(1).TrimPrefix_n(); - CString sKey = sLine.Token(2); + CString sKeys = sLine.Token(2); VCString vsChans; sChans.Split(",", vsChans, false); sChans.clear(); - for (CString& sChannel : vsChans) { + VCString vsKeys; + sKeys.Split(",", vsKeys, true); + sKeys.clear(); + + for (unsigned int a = 0; a < vsChans.size(); a++) { + CString sChannel = vsChans[a]; + CString sKey = (a < vsKeys.size()) ? vsKeys[a] : ""; bool bContinue = false; NETWORKMODULECALL(OnUserJoin(sChannel, sKey), m_pUser, m_pNetwork, this, &bContinue); if (bContinue) continue; @@ -453,6 +459,10 @@ void CClient::ReadLine(const CString& sData) { if (!sChannel.empty()) { sChans += (sChans.empty()) ? sChannel : CString("," + sChannel); + + if (!vsKeys.empty()) { + sKeys += (sKeys.empty()) ? sKey : CString("," + sKey); + } } } @@ -462,8 +472,8 @@ void CClient::ReadLine(const CString& sData) { sLine = "JOIN " + sChans; - if (!sKey.empty()) { - sLine += " " + sKey; + if (!sKeys.empty()) { + sLine += " " + sKeys; } } else if (sCommand.Equals("PART")) { CString sChans = sLine.Token(1).TrimPrefix_n(); diff --git a/version.sh b/version.sh index aab81116..9b8daeba 100755 --- a/version.sh +++ b/version.sh @@ -53,7 +53,7 @@ fi if [ "x$WRITE_OUTPUT" = "xyes" ] then echo '#include ' > src/version.cpp - echo "const char* ZNC_VERSION_EXTRA = \"$EXTRA\";" >> src/version.cpp + echo "const char* ZNC_VERSION_EXTRA = VERSION_EXTRA \"$EXTRA\";" >> src/version.cpp fi echo "$EXTRA" diff --git a/znc-buildmod.in b/znc-buildmod.in index ce322f13..55ac5251 100755 --- a/znc-buildmod.in +++ b/znc-buildmod.in @@ -40,7 +40,7 @@ LIBZNC_VERSION="@LIBZNC_VERSION@" if test "x" = "x$LIBZNC"; then LIBZNCFLAGS="" else - LIBZNCFLAGS="-L\"$LIBZNCDIR\" -lznc-$LIBZNC_VERSION" + LIBZNCFLAGS="-L$LIBZNCDIR -lznc-$LIBZNC_VERSION" fi LDFLAGS="$LIBZNCFLAGS $LDFLAGS"