aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCiaran Gultnieks <ciaran@ciarang.com>2011-05-16 16:13:17 +0100
committerCiaran Gultnieks <ciaran@ciarang.com>2011-05-16 16:13:17 +0100
commit1520d49310c07b1f8500582b6ac22baedcc80dcb (patch)
tree8680ffa419295ce560f6841ee1e097bd342cc95c
parent7cdd988f88ae3fc5b1ca342c3c5e176eec0ba8f9 (diff)
downloadminetest-1520d49310c07b1f8500582b6ac22baedcc80dcb.tar.gz
minetest-1520d49310c07b1f8500582b6ac22baedcc80dcb.tar.bz2
minetest-1520d49310c07b1f8500582b6ac22baedcc80dcb.zip
Privileges to/from string conversion functions standalone, not static members
-rw-r--r--src/player.cpp49
-rw-r--r--src/player.h57
-rw-r--r--src/servercommand.cpp8
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 @@ protected:
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,