/** \file client.c the client program used to connect to para_server */
+#include <regex.h>
+#include <openssl/rc4.h>
+#include <stdbool.h>
+
#include "para.h"
#include "list.h"
#include "sched.h"
+#include "crypt.h"
#include "client.cmdline.h"
#include "string.h"
#include "stdin.h"
}
if (ct->status == CL_RECEIVING) {
stdout_set_defaults(&sot);
- sot.buf = ct->buf;
+ sot.bufp = &ct->buf;
sot.loaded = &ct->loaded;
sot.input_error = &ct->task.error;
register_task(&sot.task);
* \param argv Usual argument vector.
*
* It registers two tasks: The client task that communicates with para_server
- * and the standard out task that writes any output produced by the client task
- * to standard out.
+ * and the supervisor task that minitors whether the client task intends to
+ * read from stdin or write to stdout.
+ *
+ * Once it has been determined whether the client command corresponds to a
+ * stdin command (addmood, addimg, ..), either the stdin task or the stdout
+ * task is set up to replace the supervisor task.
*
* \return EXIT_SUCCESS or EXIT_FAILURE
*
- * \sa client_open(), stdout.c, stdout.h, para_client(1), para_server(1)
+ * \sa client_open(), stdin.c, stdout.c, para_client(1), para_server(1)
*/
int main(int argc, char *argv[])
{
int ret;
static struct sched s;
+ init_random_seed_or_die();
s.default_timeout.tv_sec = 1;
s.default_timeout.tv_usec = 0;
- ret = client_open(argc, argv, &ct);
+ ret = client_open(argc, argv, &ct, &client_loglevel);
if (ret < 0) /* can not use PARA_LOG here because ct is NULL */
exit(EXIT_FAILURE);
- client_loglevel = get_loglevel_by_name(ct->conf.loglevel_arg);
register_task(&svt);
ret = schedule(&s);
if (ret < 0)