#include "gui.cmdline.h"
#include "para.h"
-#include "gcc-compat.h"
#include <curses.h>
#include "ringbuffer.h"
#include "string.h"
#define COLOR_BOT 40
struct gui_command {
- char *key;
- char *name;
- char *description;
+ const char *key;
+ const char *name;
+ const char *description;
void (*handler)(void);
};
* print aligned string to curses window. This function always prints
* exactly len chars.
*/
-static int align_str(WINDOW* win, char *string, unsigned int len,
+static int align_str(WINDOW* win, const char *string, unsigned int len,
unsigned int align)
{
int num; /* of spaces */
return 1;
}
-__printf_2_3 static void print_in_bar(int color, char *fmt,...)
+__printf_2_3 static void print_in_bar(int color, const char *fmt,...)
{
char *msg;
/*
* print formated output to bot win and refresh
*/
-__printf_2_3 static void outputf(int color, char* fmt,...)
+__printf_2_3 static void outputf(int color, const char* fmt,...)
{
char *msg;
rb_add_entry(COLOR_OUTPUT, para_strdup(line));
}
-void para_log(int ll, char *fmt,...)
+void para_log(int ll, const char *fmt,...)
{
int color;
char *msg;
/*
* exit curses and print given message to stdout/stderr
*/
-__printf_2_3 static void msg_n_exit(int ret, char* fmt, ...)
+__printf_2_3 static void msg_n_exit(int ret, const char* fmt, ...)
{
va_list argp;
FILE *outfd = ret? stderr: stdout;
}
}
-/* open pipe if last attempt to open was more than 2 secs ago */
static int open_audiod_pipe(void)
{
- static time_t open_time, *p;
- time_t now;
- double diff;
-
- if (p) {
- time(&now);
- diff = difftime(now, open_time);
- if (diff < 2)
- return -1;
- } else
- p = &open_time;
- time(&open_time);
+ static int init = 1;
+
+ if (init)
+ init = 0;
+ else
+ sleep(1);
return para_open_audiod_pipe(conf.stat_cmd_arg);
}
-
/*
* This is the core select loop. Besides the (internal) signal
* pipe, the following other fds are checked according to the mode:
FD_SET(command_pipe, &rfds);
max_fileno = MAX(max_fileno, command_pipe);
}
- FD_SET(STDIN_FILENO, &rfds);
+ if (curses_active)
+ FD_SET(STDIN_FILENO, &rfds);
ret = select(max_fileno + 1, &rfds, NULL, NULL, &tv);
// PARA_DEBUG_LOG("select returned %d\n", ret);
audiod_pipe = -1;
clear_all_items();
free(stat_content[SI_STATUS_BAR]);
- stat_content[SI_STATUS_BAR] =
- para_strdup("audiod not running!?\n");
+ stat_content[SI_STATUS_BAR] =
+ para_strdup("audiod not running!?");
print_all_items();
- sleep(1);
}
check_return:
switch (mode) {
if (cp_numread <= 0 && !cbo) /* command complete */
return 0;
if (cbo)
- cbo = for_each_line(command_buf, cbo, &add_output_line, 0);
+ cbo = for_each_line(command_buf, cbo, &add_output_line);
if (cp_numread <= 0)
cbo = 0;
wrefresh(bot.win);
int i;
for (i = 0; i < conf.key_map_given; ++i) {
- char *s = conf.key_map_arg[i], *handler, *arg,
- *desc = "", tmp[MAXLINE];
+ char *handler, *arg, *tmp = para_strdup(conf.key_map_arg[i]);
+ const char *handler_text = "???", *desc = NULL;
- strcpy(tmp, s);
- if (!split_key_map(tmp, &handler, &arg))
+ if (!split_key_map(tmp, &handler, &arg)) {
+ free(tmp);
return;
- switch(*handler) {
+ }
+ switch (*handler) {
case 'i':
- handler = "internal";
+ handler_text = "internal";
desc = command_list[find_cmd_byname(arg)].description;
break;
- case 'x': handler = "external"; break;
- case 'd': handler = "display "; break;
- case 'p': handler = "para "; break;
+ case 'x': handler_text = "external"; break;
+ case 'd': handler_text = "display "; break;
+ case 'p': handler_text = "para "; break;
}
- outputf(COLOR_MSG, "%s\t%s\t%s%s\t%s", tmp, handler, arg,
+ outputf(COLOR_MSG, "%s\t%s\t%s%s\t%s", tmp, handler_text, arg,
strlen(arg) < 8? "\t" : "",
- desc);
+ desc? desc : "");
+ free(tmp);
}
for (i = 0; command_list[i].handler; i++) {
struct gui_command gc = command_list[i];
}
print_in_bar(COLOR_MSG, "try \"para_gui -h\" or \"para_client help\" "
"for more info");
- return;
}
static void com_shrink_top_win(void)