projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into next
[paraslash.git]
/
command.c
diff --git
a/command.c
b/command.c
index fa844b5ed2213bb8dc00777c18d25e9659b36e19..afa1e667ca3bfdfedfd17e7de6be622f210ec383 100644
(file)
--- a/
command.c
+++ b/
command.c
@@
-6,6
+6,7
@@
/** \file command.c Client authentication and server commands. */
/** \file command.c Client authentication and server commands. */
+#include <regex.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/types.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/types.h>
@@
-42,6
+43,9
@@
extern int mmd_mutex;
extern struct misc_meta_data *mmd;
extern struct sender senders[];
extern int mmd_mutex;
extern struct misc_meta_data *mmd;
extern struct sender senders[];
+int send_afs_status(struct rc4_context *rc4c, int parser_friendly);
+
+const char *status_item_list[] = {STATUS_ITEM_ARRAY};
static void dummy(__a_unused int s)
{
static void dummy(__a_unused int s)
{
@@
-364,6
+368,7
@@
int com_stat(struct rc4_context *rc4c, int argc, char * const * argv)
parser_friendly = 1;
continue;
}
parser_friendly = 1;
continue;
}
+ return -E_COMMAND_SYNTAX;
}
if (i != argc)
return -E_COMMAND_SYNTAX;
}
if (i != argc)
return -E_COMMAND_SYNTAX;
@@
-821,10
+826,14
@@
__noreturn void handle_connect(int fd, const char *peername)
if (ret < 0)
goto err_out;
/* valid command and sufficient perms */
if (ret < 0)
goto err_out;
/* valid command and sufficient perms */
- argc = split_args(command, &argv, "\n");
+ ret = create_argv(command, "\n", &argv);
+ if (ret < 0)
+ goto err_out;
+ argc = ret;
PARA_NOTICE_LOG("calling com_%s() for %s@%s\n", cmd->name, u->name,
peername);
ret = cmd->handler(&rc4c, argc, argv);
PARA_NOTICE_LOG("calling com_%s() for %s@%s\n", cmd->name, u->name,
peername);
ret = cmd->handler(&rc4c, argc, argv);
+ free_argv(argv);
mutex_lock(mmd_mutex);
mmd->num_commands++;
mutex_unlock(mmd_mutex);
mutex_lock(mmd_mutex);
mmd->num_commands++;
mutex_unlock(mmd_mutex);
@@
-836,7
+845,6
@@
net_err:
PARA_NOTICE_LOG("%s\n", para_strerror(-ret));
out:
free(command);
PARA_NOTICE_LOG("%s\n", para_strerror(-ret));
out:
free(command);
- free(argv);
mutex_lock(mmd_mutex);
if (cmd && (cmd->perms & AFS_WRITE) && ret >= 0)
mmd->events++;
mutex_lock(mmd_mutex);
if (cmd && (cmd->perms & AFS_WRITE) && ret >= 0)
mmd->events++;