diff options
-rw-r--r-- | src/player.cpp | 49 | ||||
-rw-r--r-- | src/player.h | 57 | ||||
-rw-r--r-- | 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 @@ 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, |