Commit c2d5ce0c authored by Max Kellermann's avatar Max Kellermann

Client: move trivial functions into the Client class

parent 32645b80
......@@ -182,7 +182,7 @@ static enum command_return
handle_commands(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
const unsigned permission = client_get_permission(client);
const unsigned permission = client.GetPermission();
const struct command *cmd;
for (unsigned i = 0; i < num_commands; ++i) {
......@@ -200,7 +200,7 @@ static enum command_return
handle_not_commands(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
const unsigned permission = client_get_permission(client);
const unsigned permission = client.GetPermission();
const struct command *cmd;
for (unsigned i = 0; i < num_commands; ++i) {
......@@ -364,7 +364,7 @@ command_process(Client &client, unsigned num, char *line)
/* look up and invoke the command handler */
cmd = command_checked_lookup(client, client_get_permission(client),
cmd = command_checked_lookup(client, client.GetPermission(),
argc, argv);
if (cmd)
ret = cmd->handler(client, argc, argv);
......
......@@ -22,21 +22,3 @@
#include "util/Domain.hxx"
const Domain client_domain("client");
int
client_get_uid(const Client &client)
{
return client.uid;
}
unsigned
client_get_permission(const Client &client)
{
return client.permission;
}
void
client_set_permission(Client &client, unsigned permission)
{
client.permission = permission;
}
......@@ -102,6 +102,30 @@ public:
using FullyBufferedSocket::Write;
/**
* returns the uid of the client process, or a negative value
* if the uid is unknown
*/
int GetUID() const {
return uid;
}
/**
* Is this client running on the same machine, connected with
* a local (UNIX domain) socket?
*/
bool IsLocal() const {
return uid > 0;
}
unsigned GetPermission() const {
return permission;
}
void SetPermission(unsigned _permission) {
permission = _permission;
}
/**
* Send "idle" response to this client.
*/
void IdleNotify();
......@@ -125,31 +149,6 @@ client_new(EventLoop &loop, Partition &partition,
int fd, const struct sockaddr *sa, size_t sa_length, int uid);
/**
* returns the uid of the client process, or a negative value if the
* uid is unknown
*/
gcc_pure
int
client_get_uid(const Client &client);
/**
* Is this client running on the same machine, connected with a local
* (UNIX domain) socket?
*/
gcc_pure
static inline bool
client_is_local(const Client &client)
{
return client_get_uid(client) > 0;
}
gcc_pure
unsigned
client_get_permission(const Client &client);
void client_set_permission(Client &client, unsigned permission);
/**
* Write a C string to the client.
*/
void client_puts(Client &client, const char *s);
......
......@@ -41,7 +41,7 @@ client_allow_file(const Client &client, Path path_fs, Error &error)
error.Set(ack_domain, ACK_ERROR_PERMISSION, "Access denied");
return false;
#else
const int uid = client_get_uid(client);
const int uid = client.GetUID();
if (uid >= 0 && (uid_t)uid == geteuid())
/* always allow access if user runs his own MPD
instance */
......
......@@ -67,7 +67,7 @@ enum command_return
handle_urlhandlers(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
if (client_is_local(client))
if (client.IsLocal())
client_puts(client, "handler: file://\n");
print_supported_uri_schemes(client);
return COMMAND_RETURN_OK;
......@@ -262,7 +262,7 @@ handle_password(Client &client, gcc_unused int argc, char *argv[])
return COMMAND_RETURN_ERROR;
}
client_set_permission(client, permission);
client.SetPermission(permission);
return COMMAND_RETURN_OK;
}
......@@ -271,7 +271,7 @@ enum command_return
handle_config(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
if (!client_is_local(client)) {
if (!client.IsLocal()) {
command_error(client, ACK_ERROR_PERMISSION,
"Command only permitted to local clients");
return COMMAND_RETURN_ERROR;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment