aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Chat.cpp16
-rw-r--r--src/game/Chat.h1
-rw-r--r--src/game/Level1.cpp24
-rw-r--r--src/game/Level3.cpp92
4 files changed, 51 insertions, 82 deletions
diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp
index 31df4ee6718..e10c093e0e3 100644
--- a/src/game/Chat.cpp
+++ b/src/game/Chat.cpp
@@ -1696,6 +1696,22 @@ void ChatHandler::extractOptFirstArg(char* args, char** arg1, char** arg2)
*arg2 = p2;
}
+char* ChatHandler::extractQuotedArg( char* args )
+{
+ if(!*args)
+ return NULL;
+
+ if(*args=='"')
+ return strtok(args+1, "\"");
+ else
+ {
+ char* space = strtok(args, "\"");
+ if(!space)
+ return false;
+ return strtok(NULL, "\"");
+ }
+}
+
bool ChatHandler::needReportToTarget(Player* chr) const
{
Player* pl = m_session->GetPlayer();
diff --git a/src/game/Chat.h b/src/game/Chat.h
index f7a587ce463..725217ef69b 100644
--- a/src/game/Chat.h
+++ b/src/game/Chat.h
@@ -574,6 +574,7 @@ class ChatHandler
// if args have single value then it return in arg2 and arg1 == NULL
void extractOptFirstArg(char* args, char** arg1, char** arg2);
+ char* extractQuotedArg(char* args);
uint32 extractSpellIdFromLink(char* text);
uint64 extractGuidFromLink(char* text);
diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp
index 83d08529424..054040fb708 100644
--- a/src/game/Level1.cpp
+++ b/src/game/Level1.cpp
@@ -2380,17 +2380,7 @@ bool ChatHandler::HandleSendMailCommand(const char* args)
if(!tail1)
return false;
- char* msgSubject;
- if(*tail1=='"')
- msgSubject = strtok(tail1+1, "\"");
- else
- {
- char* space = strtok(tail1, "\"");
- if(!space)
- return false;
- msgSubject = strtok(NULL, "\"");
- }
-
+ char* msgSubject = extractQuotedArg(tail1);
if (!msgSubject)
return false;
@@ -2398,17 +2388,7 @@ bool ChatHandler::HandleSendMailCommand(const char* args)
if(!tail2)
return false;
- char* msgText;
- if(*tail2=='"')
- msgText = strtok(tail2+1, "\"");
- else
- {
- char* space = strtok(tail2, "\"");
- if(!space)
- return false;
- msgText = strtok(NULL, "\"");
- }
-
+ char* msgText = extractQuotedArg(tail2);
if (!msgText)
return false;
diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp
index 724dfe24a36..0b883b137de 100644
--- a/src/game/Level3.cpp
+++ b/src/game/Level3.cpp
@@ -3778,14 +3778,20 @@ bool ChatHandler::HandleLookupTaxiNodeCommand(const char * args)
*/
bool ChatHandler::HandleGuildCreateCommand(const char* args)
{
- char* nameStr;
- char* guildStr;
- extractOptFirstArg((char*)args,&nameStr,&guildStr);
- if(!guildStr)
- return false;
+ if(!*args)
+ return false;
+ // if not guild name only (in "") then player name
Player* target;
- if(!extractPlayerTarget(nameStr,&target))
+ if(!extractPlayerTarget(*args!='"' ? (char*)args : NULL, &target))
+ return false;
+
+ char* tailStr = *args!='"' ? strtok(NULL, "") : (char*)args;
+ if(!tailStr)
+ return false;
+
+ char* guildStr = extractQuotedArg(tailStr);
+ if(!guildStr)
return false;
std::string guildname = guildStr;
@@ -3811,17 +3817,23 @@ bool ChatHandler::HandleGuildCreateCommand(const char* args)
bool ChatHandler::HandleGuildInviteCommand(const char *args)
{
- char* nameStr;
- char* guildNameStr;
- extractOptFirstArg((char*)args,&nameStr,&guildNameStr);
- if(!guildNameStr)
- return false;
+ if(!*args)
+ return false;
+ // if not guild name only (in "") then player name
uint64 target_guid;
- if(!extractPlayerTarget(nameStr,NULL,&target_guid))
+ if(!extractPlayerTarget(*args!='"' ? (char*)args : NULL, NULL, &target_guid))
return false;
- std::string glName = guildNameStr;
+ char* tailStr = *args!='"' ? strtok(NULL, "") : (char*)args;
+ if(!tailStr)
+ return false;
+
+ char* guildStr = extractQuotedArg(tailStr);
+ if(!guildStr)
+ return false;
+
+ std::string glName = guildStr;
Guild* targetGuild = objmgr.GetGuildByName (glName);
if (!targetGuild)
return false;
@@ -3887,11 +3899,11 @@ bool ChatHandler::HandleGuildDeleteCommand(const char* args)
if (!*args)
return false;
- char* par1 = strtok ((char*)args, " ");
- if (!par1)
+ char* guildStr = extractQuotedArg((char*)args);
+ if(!guildStr)
return false;
- std::string gld = par1;
+ std::string gld = guildStr;
Guild* targetGuild = objmgr.GetGuildByName (gld);
if (!targetGuild)
@@ -6951,17 +6963,7 @@ bool ChatHandler::HandleSendItemsCommand(const char* args)
if(!tail1)
return false;
- char* msgSubject;
- if(*tail1=='"')
- msgSubject = strtok(tail1+1, "\"");
- else
- {
- char* space = strtok(tail1, "\"");
- if(!space)
- return false;
- msgSubject = strtok(NULL, "\"");
- }
-
+ char* msgSubject = extractQuotedArg(tail1);
if (!msgSubject)
return false;
@@ -6969,17 +6971,7 @@ bool ChatHandler::HandleSendItemsCommand(const char* args)
if(!tail2)
return false;
- char* msgText;
- if(*tail2=='"')
- msgText = strtok(tail2+1, "\"");
- else
- {
- char* space = strtok(tail2, "\"");
- if(!space)
- return false;
- msgText = strtok(NULL, "\"");
- }
-
+ char* msgText = extractQuotedArg(tail2);
if (!msgText)
return false;
@@ -7082,17 +7074,7 @@ bool ChatHandler::HandleSendMoneyCommand(const char* args)
if (!tail1)
return false;
- char* msgSubject;
- if (*tail1=='"')
- msgSubject = strtok(tail1+1, "\"");
- else
- {
- char* space = strtok(tail1, "\"");
- if (!space)
- return false;
- msgSubject = strtok(NULL, "\"");
- }
-
+ char* msgSubject = extractQuotedArg(tail1);
if (!msgSubject)
return false;
@@ -7100,17 +7082,7 @@ bool ChatHandler::HandleSendMoneyCommand(const char* args)
if (!tail2)
return false;
- char* msgText;
- if (*tail2=='"')
- msgText = strtok(tail2+1, "\"");
- else
- {
- char* space = strtok(tail2, "\"");
- if (!space)
- return false;
- msgText = strtok(NULL, "\"");
- }
-
+ char* msgText = extractQuotedArg(tail2);
if (!msgText)
return false;