Merge branch 'refs/heads/t/tarball-build-fix'
[paraslash.git] / interactive.c
index 9f2b719..e4bd6ba 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2011 Andre Noll <maan@tuebingen.mpg.de>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -7,12 +7,10 @@
 /** \file interactive.c Readline abstraction for interactive sessions. */
 
 #include <regex.h>
-#include <stdbool.h>
 #include <curses.h>
 #include <readline/readline.h>
 #include <readline/history.h>
 #include <sys/ioctl.h>
-#include <assert.h>
 #include <signal.h>
 
 #include "para.h"
@@ -29,7 +27,7 @@ struct i9e_private {
        FILE *stderr_stream;
        int num_columns;
        char empty_line[1000];
-       struct task task;
+       struct task *task;
        struct btr_node *stdout_btrn;
        bool last_write_was_status;
        bool line_handler_running;
@@ -52,7 +50,7 @@ static struct i9e_private i9e_private, *i9ep = &i9e_private;
  */
 int i9e_get_error(void)
 {
-       return i9ep->task.error;
+       return task_status(i9ep->task);
 }
 
 static bool is_prefix(const char *partial, const char *full, size_t len)
@@ -314,7 +312,7 @@ free_line:
        free(line);
 }
 
-static int i9e_post_select(__a_unused struct sched *s, __a_unused struct task *t)
+static int i9e_post_select(__a_unused struct sched *s, __a_unused void *context)
 {
        int ret;
        struct i9e_client_info *ici = i9ep->ici;
@@ -371,7 +369,7 @@ out:
        return ret;
 }
 
-static void i9e_pre_select(struct sched *s, __a_unused struct task *t)
+static void i9e_pre_select(struct sched *s, __a_unused void *context)
 {
        int ret;
 
@@ -439,7 +437,6 @@ static int dispatch_key(__a_unused int count, int key)
  * The caller must allocate and initialize the structure \a ici points to.
  *
  * \return Standard.
- * \sa \ref register_task().
  */
 int i9e_open(struct i9e_client_info *ici, struct sched *s)
 {
@@ -453,10 +450,13 @@ int i9e_open(struct i9e_client_info *ici, struct sched *s)
        ret = mark_fd_nonblocking(ici->fds[1]);
        if (ret < 0)
                return ret;
-       i9ep->task.pre_select = i9e_pre_select;
-       i9ep->task.post_select = i9e_post_select;
-       sprintf(i9ep->task.status, "i9e");
-       register_task(s, &i9ep->task);
+       i9ep->task = task_register(&(struct task_info) {
+               .name = "i9e",
+               .pre_select = i9e_pre_select,
+               .post_select = i9e_post_select,
+               .context = i9ep,
+       }, s);
+
        rl_readline_name = "para_i9e";
        rl_basic_word_break_characters = " ";
        rl_attempted_completion_function = i9e_completer;