server: Remove ->argc, ->argv from struct command_context.
[paraslash.git] / command.c
index d7b68a4..89a6aea 100644 (file)
--- a/command.c
+++ b/command.c
@@ -812,8 +812,8 @@ out:
 static int run_command(struct command_context *cc, struct iovec *iov,
                const char *peername)
 {
-       int ret, i;
-       char *p, *end;
+       int ret, i, argc;
+       char *p, *end, **argv;
        const struct lls_command *lcmd = NULL;
        unsigned perms;
        struct lls_parse_result *lpr;
@@ -836,23 +836,23 @@ static int run_command(struct command_context *cc, struct iovec *iov,
        end = iov->iov_base + iov->iov_len;
        for (i = 0; p < end; i++)
                p += strlen(p) + 1;
-       cc->argc = i;
-       cc->argv = para_malloc((cc->argc + 1) * sizeof(char *));
+       argc = i;
+       argv = para_malloc((argc + 1) * sizeof(char *));
        for (i = 0, p = iov->iov_base; p < end; i++) {
-               cc->argv[i] = para_strdup(p);
+               argv[i] = para_strdup(p);
                p += strlen(p) + 1;
        }
-       cc->argv[cc->argc] = NULL;
+       argv[argc] = NULL;
        PARA_NOTICE_LOG("calling com_%s() for %s@%s\n", lls_command_name(lcmd),
                cc->u->name, peername);
-       ret = lls(lls_parse(cc->argc, cc->argv, lcmd, &lpr, &errctx));
+       ret = lls(lls_parse(argc, argv, lcmd, &lpr, &errctx));
        if (ret >= 0) {
                const struct server_cmd_user_data *ud = lls_user_data(lcmd);
                ret = ud->handler(cc, lpr);
                lls_free_parse_result(lpr, lcmd);
        } else
                send_errctx(cc, errctx);
-       free_argv(cc->argv);
+       free_argv(argv);
        mutex_lock(mmd_mutex);
        mmd->num_commands++;
        if (ret >= 0 && (perms & AFS_WRITE))