mirror of
https://github.com/minetest/minetest.git
synced 2024-12-23 14:42:24 +01:00
Privileges to/from string conversion functions standalone, not static members
This commit is contained in:
parent
7cdd988f88
commit
1520d49310
@ -23,6 +23,55 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "constants.h"
|
#include "constants.h"
|
||||||
#include "utility.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():
|
Player::Player():
|
||||||
touching_ground(false),
|
touching_ground(false),
|
||||||
in_water(false),
|
in_water(false),
|
||||||
|
57
src/player.h
57
src/player.h
@ -43,6 +43,15 @@ const u64 PRIV_DEFAULT = PRIV_BUILD;
|
|||||||
const u64 PRIV_ALL = 0x7FFFFFFFFFFFFFFFULL;
|
const u64 PRIV_ALL = 0x7FFFFFFFFFFFFFFFULL;
|
||||||
const u64 PRIV_INVALID = 0x8000000000000000ULL;
|
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;
|
class Map;
|
||||||
|
|
||||||
@ -155,54 +164,6 @@ protected:
|
|||||||
|
|
||||||
public:
|
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -93,7 +93,7 @@ void ServerCommand::cmd_privs(std::wostringstream &os,
|
|||||||
{
|
{
|
||||||
if(ctx->parms.size() == 1)
|
if(ctx->parms.size() == 1)
|
||||||
{
|
{
|
||||||
os<<L"-!- " + Player::privsToString(ctx->player->privs);
|
os<<L"-!- " + privsToString(ctx->player->privs);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ void ServerCommand::cmd_privs(std::wostringstream &os,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
os<<L"-!- " + Player::privsToString(tp->privs);
|
os<<L"-!- " + privsToString(tp->privs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerCommand::cmd_grantrevoke(std::wostringstream &os,
|
void ServerCommand::cmd_grantrevoke(std::wostringstream &os,
|
||||||
@ -128,7 +128,7 @@ void ServerCommand::cmd_grantrevoke(std::wostringstream &os,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 newprivs = Player::stringToPrivs(ctx->parms[2]);
|
u64 newprivs = stringToPrivs(ctx->parms[2]);
|
||||||
if(newprivs == PRIV_INVALID)
|
if(newprivs == PRIV_INVALID)
|
||||||
{
|
{
|
||||||
os<<L"-!- Invalid privileges specified";
|
os<<L"-!- Invalid privileges specified";
|
||||||
@ -148,7 +148,7 @@ void ServerCommand::cmd_grantrevoke(std::wostringstream &os,
|
|||||||
tp->privs &= ~newprivs;
|
tp->privs &= ~newprivs;
|
||||||
|
|
||||||
os<<L"-!- Privileges change to ";
|
os<<L"-!- Privileges change to ";
|
||||||
os<<Player::privsToString(tp->privs);
|
os<<privsToString(tp->privs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerCommand::cmd_time(std::wostringstream &os,
|
void ServerCommand::cmd_time(std::wostringstream &os,
|
||||||
|
Loading…
Reference in New Issue
Block a user