X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=audiod_command.c;h=6e2f8ee9e4aaf446267270e3be2398a4ee6d7c96;hb=501b83a39828c9d3db5498c7352a2e5b60175bba;hp=89fdc1acabdeb45a9f708a2a8ca72cdb1c85ffa3;hpb=26a032fffa6c6e6f092ed3d14c2b5f08e5c736d6;p=paraslash.git diff --git a/audiod_command.c b/audiod_command.c index 89fdc1ac..6e2f8ee9 100644 --- a/audiod_command.c +++ b/audiod_command.c @@ -240,6 +240,42 @@ static int com_help(int fd, struct lls_parse_result *lpr) } EXPORT_AUDIOD_CMD_HANDLER(help) +static int com_ll(int fd, struct lls_parse_result *lpr) +{ + unsigned ll; + char *errctx; + const char *sev[] = {SEVERITIES}; + const char *arg; + int ret = lls(lls_check_arg_count(lpr, 0, 1, &errctx)); + + if (ret < 0) { + char *tmp = make_message("%s\n", errctx); + free(errctx); + client_write(fd, tmp); + free(tmp); + return ret; + } + if (lls_num_inputs(lpr) == 0) { + char *msg; + ll = daemon_get_loglevel(); + msg = make_message("%s\n", sev[ll]); + ret = client_write(fd, msg); + free(msg); + return ret; + } + arg = lls_input(0, lpr); + for (ll = 0; ll < NUM_LOGLEVELS; ll++) { + if (!strcmp(arg, sev[ll])) + break; + } + if (ll >= NUM_LOGLEVELS) + return -ERRNO_TO_PARA_ERROR(EINVAL); + PARA_INFO_LOG("new log level: %s\n", sev[ll]); + daemon_set_loglevel(ll); + return 1; +} +EXPORT_AUDIOD_CMD_HANDLER(ll) + static int com_tasks(int fd, __a_unused struct lls_parse_result *lpr) { int ret; @@ -360,10 +396,9 @@ EXPORT_AUDIOD_CMD_HANDLER(version) * Handle arriving connections on the local socket. * * \param accept_fd The fd to accept connections on. - * \param rfds If \a accept_fd is not set in \a rfds, do nothing. * - * This is called in each iteration of the select loop. If there is an incoming - * connection on \a accept_fd, this function reads the command sent by the peer, + * This is called in each iteration of the main loop of the scheduler. If there + * is an incoming connection, the function reads the command sent by the peer, * checks the connecting user's permissions by using unix socket credentials * (if supported by the OS) and calls the corresponding command handler if * permissions are OK. @@ -372,8 +407,8 @@ EXPORT_AUDIOD_CMD_HANDLER(version) * connection to accept. * * \sa \ref para_accept(), \ref recv_cred_buffer(). - * */ -int handle_connect(int accept_fd, fd_set *rfds) + */ +int dispatch_local_connection(int accept_fd) { int argc, ret, clifd; char buf[MAXLINE], **argv = NULL; @@ -384,7 +419,7 @@ int handle_connect(int accept_fd, fd_set *rfds) char *errctx = NULL; const struct audiod_command_info *aci; - ret = para_accept(accept_fd, rfds, &unix_addr, sizeof(struct sockaddr_un), &clifd); + ret = para_accept(accept_fd, &unix_addr, sizeof(struct sockaddr_un), &clifd); if (ret <= 0) return ret; ret = recv_cred_buffer(clifd, buf, sizeof(buf) - 1);