X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=gui.c;h=48d4b51b6445c902a791755cc84737f3421dafc7;hb=3367017659e639aa8925ff4c607f1d41d24e657e;hp=a3c07ec796bd9d179ef633b3d81d91c14b42c834;hpb=33cb8a591a1b5b4be0df0c4d05f7d5a8f8eb2dc1;p=paraslash.git diff --git a/gui.c b/gui.c index a3c07ec7..48d4b51b 100644 --- a/gui.c +++ b/gui.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1998-2011 Andre Noll + * Copyright (C) 1998-2012 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -336,11 +336,14 @@ static int align_str(WINDOW* win, char *str, unsigned int len, __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); @@ -471,10 +474,13 @@ static void rb_add_entry(int color, char *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); } @@ -489,10 +495,11 @@ static int add_output_line(char *line, __a_unused void *data) 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; @@ -505,11 +512,14 @@ __printf_2_3 void para_log(int ll, const char *fmt,...) 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) { @@ -1044,26 +1054,25 @@ check_return: /* * 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 para_cmd(char *cmd) { int ret, fds[3] = {0, 1, 0}; char *c = make_message(BINDIR "/para_client -- %s", cmd); @@ -1073,41 +1082,40 @@ static int client_cmd_cmdline(char *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) @@ -1426,7 +1434,7 @@ static void handle_command(int c) else if (*handler == 'x') external_cmd(arg); else if (*handler == 'p') - client_cmd_cmdline(arg); + para_cmd(arg); else if (*handler == 'i') { int num = find_cmd_byname(arg); if (num >= 0)