From 1520d49310c07b1f8500582b6ac22baedcc80dcb Mon Sep 17 00:00:00 2001
From: Ciaran Gultnieks <ciaran@ciarang.com>
Date: Mon, 16 May 2011 16:13:17 +0100
Subject: [PATCH] Privileges to/from string conversion functions standalone,
 not static members

---
 src/player.cpp        | 49 +++++++++++++++++++++++++++++++++++++
 src/player.h          | 57 +++++++------------------------------------
 src/servercommand.cpp |  8 +++---
 3 files changed, 62 insertions(+), 52 deletions(-)

diff --git a/src/player.cpp b/src/player.cpp
index 2ebf158a6..e568d7dee 100644
--- a/src/player.cpp
+++ b/src/player.cpp
@@ -23,6 +23,55 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "constants.h"
 #include "utility.h"
 
+// Convert a privileges value into a human-readable string,
+// with each component separated by a comma.
+std::wstring privsToString(u64 privs)
+{
+	std::wostringstream os(std::ios_base::binary);
+	if(privs & PRIV_BUILD)
+		os<<L"build,";
+	if(privs & PRIV_TELEPORT)
+		os<<L"teleport,";
+	if(privs & PRIV_SETTIME)
+		os<<L"settime,";
+	if(privs & PRIV_PRIVS)
+		os<<L"privs,";
+	if(os.tellp())
+	{
+		// Drop the trailing comma. (Why on earth can't
+		// you truncate a C++ stream anyway???)
+		std::wstring tmp = os.str();
+		return tmp.substr(0, tmp.length() -1);
+	}
+	return os.str();
+}
+
+// Converts a comma-seperated list of privilege values into a
+// privileges value. The reverse of privsToString(). Returns
+// PRIV_INVALID if there is anything wrong with the input.
+u64 stringToPrivs(std::wstring str)
+{
+	u64 privs=0;
+	std::vector<std::wstring> pr;
+	pr=str_split(str, ',');
+	for(std::vector<std::wstring>::iterator i = pr.begin();
+		i != pr.end(); ++i)
+	{
+		if(*i == L"build")
+			privs |= PRIV_BUILD;
+		else if(*i == L"teleport")
+			privs |= PRIV_TELEPORT;
+		else if(*i == L"settime")
+			privs |= PRIV_SETTIME;
+		else if(*i == L"privs")
+			privs |= PRIV_PRIVS;
+		else
+			return PRIV_INVALID;
+	}
+	return privs;
+}
+
+
 Player::Player():
 	touching_ground(false),
 	in_water(false),
diff --git a/src/player.h b/src/player.h
index 778bb54b3..be93766fd 100644
--- a/src/player.h
+++ b/src/player.h
@@ -43,6 +43,15 @@ const u64 PRIV_DEFAULT = PRIV_BUILD;
 const u64 PRIV_ALL = 0x7FFFFFFFFFFFFFFFULL;
 const u64 PRIV_INVALID = 0x8000000000000000ULL;
 
+// Convert a privileges value into a human-readable string,
+// with each component separated by a comma.
+std::wstring privsToString(u64 privs);
+
+// Converts a comma-seperated list of privilege values into a
+// privileges value. The reverse of privsToString(). Returns
+// PRIV_INVALID if there is anything wrong with the input.
+u64 stringToPrivs(std::wstring str);
+
 
 class Map;
 
@@ -155,54 +164,6 @@ class Player
 
 public:
 
-	// Converst a prvileges value into a human-readable string,
-	// with each component separated by a comma.
-	static std::wstring privsToString(u64 privs)
-	{
-		std::wostringstream os(std::ios_base::binary);
-		if(privs & PRIV_BUILD)
-			os<<L"build,";
-		if(privs & PRIV_TELEPORT)
-			os<<L"teleport,";
-		if(privs & PRIV_SETTIME)
-			os<<L"settime,";
-		if(privs & PRIV_PRIVS)
-			os<<L"privs,";
-		if(os.tellp())
-		{
-			// Drop the trailing comma. (Why on earth can't
-			// you truncate a C++ stream anyway???)
-			std::wstring tmp = os.str();
-			return tmp.substr(0, tmp.length() -1);
-		}
-		return os.str();
-	}
-
-	// Converts a comma-seperated list of privilege values into a
-	// privileges value. The reverse of privsToString(). Returns
-	// PRIV_INVALID if there is anything wrong with the input.
-	static u64 stringToPrivs(std::wstring str)
-	{
-		u64 privs=0;
-		std::vector<std::wstring> pr;
-		pr=str_split(str, ',');
-		for(std::vector<std::wstring>::iterator i = pr.begin();
-			i != pr.end(); ++i)
-		{
-			if(*i == L"build")
-				privs |= PRIV_BUILD;
-			else if(*i == L"teleport")
-				privs |= PRIV_TELEPORT;
-			else if(*i == L"settime")
-				privs |= PRIV_SETTIME;
-			else if(*i == L"privs")
-				privs |= PRIV_PRIVS;
-			else
-				return PRIV_INVALID;
-		}
-		return privs;
-	}
-
 };
 
 /*
diff --git a/src/servercommand.cpp b/src/servercommand.cpp
index fa841a1bb..21483b548 100644
--- a/src/servercommand.cpp
+++ b/src/servercommand.cpp
@@ -93,7 +93,7 @@ void ServerCommand::cmd_privs(std::wostringstream &os,
 {
 	if(ctx->parms.size() == 1)
 	{
-		os<<L"-!- " + Player::privsToString(ctx->player->privs);
+		os<<L"-!- " + privsToString(ctx->player->privs);
 		return;
 	}
 
@@ -110,7 +110,7 @@ void ServerCommand::cmd_privs(std::wostringstream &os,
 		return;
 	}
 	
-	os<<L"-!- " + Player::privsToString(tp->privs);
+	os<<L"-!- " + privsToString(tp->privs);
 }
 
 void ServerCommand::cmd_grantrevoke(std::wostringstream &os,
@@ -128,7 +128,7 @@ void ServerCommand::cmd_grantrevoke(std::wostringstream &os,
 		return;
 	}
 
-	u64 newprivs = Player::stringToPrivs(ctx->parms[2]);
+	u64 newprivs = stringToPrivs(ctx->parms[2]);
 	if(newprivs == PRIV_INVALID)
 	{
 		os<<L"-!- Invalid privileges specified";
@@ -148,7 +148,7 @@ void ServerCommand::cmd_grantrevoke(std::wostringstream &os,
 		tp->privs &= ~newprivs;
 	
 	os<<L"-!- Privileges change to ";
-	os<<Player::privsToString(tp->privs);
+	os<<privsToString(tp->privs);
 }
 
 void ServerCommand::cmd_time(std::wostringstream &os,
-- 
GitLab