/*
- * Copyright (C) 1998-2011 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1998-2012 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
#include <regex.h>
#include <signal.h>
#include <sys/types.h>
-#include <dirent.h>
#include <curses.h>
#include "gui.cmdline.h"
#include "list.h"
#include "sched.h"
#include "signal.h"
+#include "version.h"
/** define the array of error lists needed by para_gui */
INIT_GUI_ERRLISTS;
static struct win_data {
WINDOW *win;
- NCURSES_SIZE_T begx;
- NCURSES_SIZE_T begy;
- NCURSES_SIZE_T cols;
- NCURSES_SIZE_T lines;
+ size_t begx;
+ size_t begy;
+ size_t cols;
+ size_t lines;
} top, bot, sb, in, sep;
#define RINGBUFFER_SIZE 512
static void com_enlarge_top_win(void);
static void com_shrink_top_win(void);
static void com_version(void);
-static void com_quit(void);
+__noreturn static void com_quit(void);
static void com_refresh(void);
static void com_ll_incr(void);
static void com_ll_decr(void);
__printf_2_3 static void print_in_bar(int color, const char *fmt,...)
{
char *msg;
+ va_list ap;
if (!curses_active)
return;
wattron(in.win, COLOR_PAIR(color));
- PARA_VSPRINTF(fmt, msg);
+ va_start(ap, fmt);
+ xvasprintf(&msg, fmt, ap);
+ va_end(ap);
wmove(in.win, 0, 0);
align_str(in.win, msg, sb.cols, LEFT);
free(msg);
__printf_2_3 static void outputf(int color, const char* fmt,...)
{
char *msg;
+ va_list ap;
if (!curses_active)
return;
- PARA_VSPRINTF(fmt, msg);
+ va_start(ap, fmt);
+ xvasprintf(&msg, fmt, ap);
+ va_end(ap);
rb_add_entry(color, msg);
wrefresh(bot.win);
}
static int loglevel;
-__printf_2_3 void para_log(int ll, const char *fmt,...)
+__printf_2_3 void curses_log(int ll, const char *fmt,...)
{
int color;
char *msg;
+ va_list ap;
if (ll < loglevel || !curses_active)
return;
default:
color = COLOR_ERRMSG;
}
- PARA_VSPRINTF(fmt, msg);
+ va_start(ap, fmt);
+ xvasprintf(&msg, fmt, ap);
+ va_end(ap);
chop(msg);
rb_add_entry(color, msg);
wrefresh(bot.win);
}
+__printf_2_3 void (*para_log)(int, const char*, ...) = curses_log;
static void setup_signal_handling(void)
{
/*
* read from command pipe and print data to bot window
*/
-static int send_output(void)
+static void send_output(void)
{
int ret;
if (command_pipe < 0)
- return 0;
+ return;
ret = mark_fd_nonblocking(command_pipe);
if (ret < 0) {
close(command_pipe);
- return ret;
+ return;
}
if (do_select(COMMAND_MODE) >= 0)
PARA_INFO_LOG("command complete");
else
PARA_NOTICE_LOG("command aborted");
print_in_bar(COLOR_MSG, " ");
- return 1;
}
-static int client_cmd_cmdline(char *cmd)
+static void client_cmd_cmdline(char *cmd)
{
int ret, fds[3] = {0, 1, 0};
char *c = make_message(BINDIR "/para_client -- %s", cmd);
ret = para_exec_cmdline_pid(&cmd_pid, c, fds);
free(c);
if (ret < 0)
- return -1;
+ return;
command_pipe = fds[1];
- return send_output();
+ send_output();
}
/*
* exec command and print output to bot win
*/
-static int display_cmd(char *cmd)
+static void display_cmd(char *cmd)
{
int fds[3] = {0, 1, 0};
print_in_bar(COLOR_MSG, "executing display command, hit any key to abort");
outputf(COLOR_COMMAND, "%s", cmd);
if (para_exec_cmdline_pid(&cmd_pid, cmd, fds) < 0)
- return -1;
+ return;
command_pipe = fds[1];
- return send_output();
+ send_output();
}
/*
* shutdown curses and stat pipe before executing external commands
*/
-static int external_cmd(char *cmd)
+static void external_cmd(char *cmd)
{
int fds[3] = {-1, -1, -1};
if (cmd_pid)
- return -1;
+ return;
shutdown_curses();
para_exec_cmdline_pid(&cmd_pid, cmd, fds);
cmd_died = 0;
do_select(EXTERNAL_MODE);
init_curses();
- return 0;
}
static void print_scroll_msg(void)