From a9bdbe2c8a73675be499fc95b935f3839e30c575 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Fri, 2 Oct 2015 21:23:54 +0000 Subject: [PATCH] server: Convert com_init() to lopsub. No change necessary for the callback as the init command does not have any options. The only information that must travel from the command handler to the callback is the set of tables to create. The corresponding bitmask is passed without serializing the parse result. --- afs.c | 11 +++++++---- afs.cmd | 7 ------- m4/lls/server_cmd.suite.m4 | 10 ++++++++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/afs.c b/afs.c index 57ec1338..f0fa57fc 100644 --- a/afs.c +++ b/afs.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "server.cmdline.h" #include "para.h" @@ -1071,23 +1072,24 @@ out: return ret; } -int com_init(struct command_context *cc) +static int com_init(struct command_context *cc, struct lls_parse_result *lpr) { int i, j, ret; uint32_t table_mask = (1 << (NUM_AFS_TABLES + 1)) - 1; struct osl_object query = {.data = &table_mask, .size = sizeof(table_mask)}; + unsigned num_inputs = lls_num_inputs(lpr); ret = make_database_dir(); if (ret < 0) return ret; - if (cc->argc != 1) { + if (num_inputs > 0) { table_mask = 0; - for (i = 1; i < cc->argc; i++) { + for (i = 0; i < num_inputs; i++) { for (j = 0; j < NUM_AFS_TABLES; j++) { struct afs_table *t = &afs_tables[j]; - if (strcmp(cc->argv[i], t->name)) + if (strcmp(lls_input(i, lpr), t->name)) continue; table_mask |= (1 << j); break; @@ -1099,6 +1101,7 @@ int com_init(struct command_context *cc) return send_callback_request(com_init_callback, &query, afs_cb_result_handler, cc); } +EXPORT_SERVER_CMD_HANDLER(init); /** * Flags for the check command. diff --git a/afs.cmd b/afs.cmd index 7028d1bb..6e2967ad 100644 --- a/afs.cmd +++ b/afs.cmd @@ -3,13 +3,6 @@ SF: afs.c aft.c attribute.c SN: list of afs commands TM: mood lyr img pl --- -N: init -P: AFS_READ | AFS_WRITE -D: Initialize the osl tables for the audio file selector. -U: init [table_name ...] -H: When invoked without arguments, this command creates all tables. Otherwise -H: only the tables given by table_name... are created. ---- N: ls P: AFS_READ D: List audio files. diff --git a/m4/lls/server_cmd.suite.m4 b/m4/lls/server_cmd.suite.m4 index e5bdcede..4a1f9f46 100644 --- a/m4/lls/server_cmd.suite.m4 +++ b/m4/lls/server_cmd.suite.m4 @@ -87,6 +87,16 @@ aux_info_prefix = Permissions: to the server process has the same effect as running this command. [/description] +[subcommand init] + purpose = initialize the database tables for the audio file selector + synopsis = [table_name...] + aux_info = AFS_READ | AFS_WRITE + [description] + When invoked without arguments, this command creates all + tables: audio_files, attributes, scores, moods, lyrics, images, + playlists. Otherwise only the given tables are created. + [/description] + [subcommand jmp] purpose = reposition the current stream non-opts-name = n -- 2.39.2