about summary refs log tree commit diff
path: root/src/engine/server
diff options
context:
space:
mode:
authorMarius "Teelevision" Neugebauer <marius@teele.eu>2014-04-13 17:54:27 +0200
committerMarius "Teelevision" Neugebauer <marius@teele.eu>2014-04-13 17:54:27 +0200
commit46e074ce016b4ba8733eca53aa32b5a32c9cb793 (patch)
tree56c590382f9b13ae18babd143f51de4f662a89ca /src/engine/server
parent929931a5c782d48ead69a548311cd0bea8b83ac2 (diff)
downloadzcatch-46e074ce016b4ba8733eca53aa32b5a32c9cb793.tar.gz
zcatch-46e074ce016b4ba8733eca53aa32b5a32c9cb793.zip
the time of the ban command can be left out
Diffstat (limited to 'src/engine/server')
-rw-r--r--src/engine/server/server.cpp32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index 2d6a16da..77345471 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -258,10 +258,40 @@ int CServerBan::BanRange(const CNetRange *pRange, int Seconds, const char *pReas
 void CServerBan::ConBanExt(IConsole::IResult *pResult, void *pUser)
 {
 	CServerBan *pThis = static_cast<CServerBan *>(pUser);
+	const int defaultMinutes = 30;
 
 	const char *pStr = pResult->GetString(0);
-	int Minutes = pResult->NumArguments()>1 ? clamp(pResult->GetInteger(1), 0, 44640) : 30;
+	int Minutes = pResult->NumArguments()>1 ? clamp(pResult->GetInteger(1), 0, 44640) : defaultMinutes;
 	const char *pReason = pResult->NumArguments()>2 ? pResult->GetString(2) : "No reason given";
+	
+	// check if time was given or a reason instead
+	const char *time;
+	if(pResult->NumArguments() > 1)
+	{
+		// check if number given
+		time = pResult->GetString(1);
+		int i = str_length(time) - 1;
+		for(; i >= 0; --i)
+			if(time[i] < '0' || '9' < time[i])
+				break;
+		// in case that no number was given
+		if(!(str_length(time) && i < 0))
+		{
+			Minutes = defaultMinutes;
+			if(pResult->NumArguments() > 2)
+			{ // add to reason
+				char *newReason = (char*)malloc(sizeof(char) * (str_length(time) + str_length(pReason) + 2));
+				mem_copy(newReason, time, sizeof(char) * str_length(time));
+				newReason[str_length(time)] = ' ';
+				mem_copy(newReason + str_length(time) + 1, pReason, sizeof(char) * (str_length(pReason) + 1));
+				pReason = newReason;
+			}
+			else
+			{ // the time is the actual reason
+				pReason = time;
+			}
+		}
+	}
 
 	int CID = -1;
 	if(StrAllnum(pStr))