X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=command.c;h=f1f00fca8a29add0e35a2e415a927bdeb75c4376;hp=79ca3652040188010dbbf2209fbf8ffe5757db50;hb=a37f31bbe4f1b2745ef0f617cff122a2c5f95078;hpb=9d75ded33ce6664156acb07e311f51d55970bbea diff --git a/command.c b/command.c index 79ca3652..f1f00fca 100644 --- a/command.c +++ b/command.c @@ -156,7 +156,7 @@ static int check_sender_args(int argc, char * const * argv, struct sender_comman const char *subcmds[] = {"add", "delete", "allow", "deny", "on", "off", NULL}; scd->sender_num = -1; - if (argc < 2) + if (argc < 3) return -E_COMMAND_SYNTAX; for (i = 0; senders[i].name; i++) if (!strcmp(senders[i].name, argv[1])) @@ -439,6 +439,7 @@ static int com_version(struct command_context *cc) return sc_send_bin_buffer(&cc->scc, msg, len); } +/** These status items are cleared if no audio file is currently open. */ #define EMPTY_STATUS_ITEMS \ ITEM(PATH) \ ITEM(DIRECTORY) \ @@ -465,7 +466,11 @@ static int com_version(struct command_context *cc) ITEM(YEAR) \ ITEM(ALBUM) \ ITEM(COMMENT) \ - ITEM(AMPLIFICATION) + ITEM(MTIME) \ + ITEM(FILE_SIZE) \ + ITEM(CHUNK_TIME) \ + ITEM(NUM_CHUNKS) \ + ITEM(AMPLIFICATION) \ /** * Write a list of audio-file related status items with empty values. @@ -474,11 +479,8 @@ static int com_version(struct command_context *cc) */ static unsigned empty_status_items(int parser_friendly, char **result) { - static char *esi; - static unsigned len; - - if (esi) - goto out; + char *esi; + unsigned len; if (parser_friendly) len = xasprintf(&esi, @@ -498,7 +500,6 @@ static unsigned empty_status_items(int parser_friendly, char **result) EMPTY_STATUS_ITEMS #undef ITEM ); -out: *result = esi; return len; } @@ -509,7 +510,7 @@ static int com_stat(struct command_context *cc) { int i, ret; struct misc_meta_data tmp, *nmmd = &tmp; - char *s, *esi = NULL; + char *s; int32_t num = 0; int parser_friendly = 0; @@ -549,12 +550,15 @@ static int com_stat(struct command_context *cc) if (ret < 0) goto out; if (nmmd->vss_status_flags & VSS_NEXT) { + char *esi; ret = empty_status_items(parser_friendly, &esi); if (cc->use_sideband) ret = send_sb(&cc->scc, esi, ret, SBD_OUTPUT, - true); - else + false); + else { ret = sc_send_bin_buffer(&cc->scc, esi, ret); + free(esi); + } if (ret < 0) goto out; } else @@ -568,7 +572,6 @@ static int com_stat(struct command_context *cc) goto out; } out: - free(esi); return ret; }