aboutsummaryrefslogtreecommitdiffstats
path: root/src/command.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/command.c')
-rw-r--r--src/command.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/command.c b/src/command.c
index f1b98a9f3..41fdbd716 100644
--- a/src/command.c
+++ b/src/command.c
@@ -108,13 +108,6 @@
#define COMMAND_STATUS_AUDIO "audio"
#define COMMAND_STATUS_UPDATING_DB "updating_db"
-/*
- * The most we ever use is for search/find, and that limits it to the
- * number of tags we can have. Add one for the command, and one extra
- * to catch errors clients may send us
- */
-#define COMMAND_ARGV_MAX (2+(TAG_NUM_OF_ITEM_TYPES*2))
-
typedef struct _CommandEntry CommandEntry;
typedef int (*CommandHandlerFunction) (int, int *, int, char **);
@@ -1059,28 +1052,27 @@ static CommandEntry *getCommandEntryAndCheckArgcAndPermission(int fd,
static CommandEntry *getCommandEntryFromString(char *string, int *permission)
{
CommandEntry *cmd = NULL;
- char *argv[COMMAND_ARGV_MAX] = { NULL };
- int argc = buffer2array(string, argv, COMMAND_ARGV_MAX);
+ char **argv;
+ int argc = buffer2array(string, &argv);
if (0 == argc)
return NULL;
cmd = getCommandEntryAndCheckArgcAndPermission(0, permission,
argc, argv);
+ freeArgArray(argv, argc);
return cmd;
}
static int processCommandInternal(int fd, int *permission,
- char *commandString, struct strnode *cmdnode)
+ char *string, struct strnode *cmdnode)
{
- int argc;
- char *argv[COMMAND_ARGV_MAX] = { NULL };
+ char **argv;
+ int argc = buffer2array(string, &argv);
CommandEntry *cmd;
int ret = -1;
- argc = buffer2array(commandString, argv, COMMAND_ARGV_MAX);
-
if (argc == 0)
return 0;
@@ -1094,6 +1086,8 @@ static int processCommandInternal(int fd, int *permission,
}
}
+ freeArgArray(argv, argc);
+
current_command = NULL;
return ret;