1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-29 14:26:39 +02:00

Added date option for printf functions (weechat core and plugins API)

This commit is contained in:
Sebastien Helleu
2007-11-05 15:59:43 +01:00
parent a97e2955be
commit 0d66286efe
8 changed files with 84 additions and 18 deletions
+28 -4
View File
@@ -30,6 +30,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
#include "../weechat-plugin.h"
#include "demo.h"
@@ -47,6 +48,7 @@ demo_print_list (void *list, char *item_name)
{
char *fields, **argv;
int i, j, argc;
time_t date;
i = 1;
while (weechat_list_next (list))
@@ -81,10 +83,10 @@ demo_print_list (void *list, char *item_name)
argv[j] + 2));
break;
case 't':
weechat_printf (NULL, " %s: %ld",
date = weechat_list_time (list, argv[j] + 2);
weechat_printf (NULL, " %s: (%ld) %s",
argv[j] + 2,
weechat_list_time (list,
argv[j] + 2));
date, ctime (&date));
break;
}
}
@@ -114,6 +116,23 @@ demo_buffer_infos ()
}
}
/*
* demo_buffer_lines: display buffer lines
*/
static void
demo_buffer_lines ()
{
struct t_plugin_list *list;
list = weechat_list_get ("buffer_lines", NULL);
if (list)
{
demo_print_list (list, "buffer_line");
weechat_list_free (list);
}
}
/*
* demo_command: demo command
*/
@@ -132,6 +151,11 @@ demo_command (void *data, int argc, char **argv, char **argv_eol)
demo_buffer_infos ();
return PLUGIN_RC_SUCCESS;
}
if (weechat_strcasecmp (argv[1], "buffer_lines") == 0)
{
demo_buffer_lines ();
return PLUGIN_RC_SUCCESS;
}
}
weechat_printf (NULL,
@@ -153,7 +177,7 @@ weechat_plugin_init (struct t_weechat_plugin *plugin)
weechat_hook_command ("demo", "demo command", "[action]",
"action: one of following actions:\n"
" buffer display infos about buffers",
"buffer", demo_command, NULL);
"buffer|buffer_lines", demo_command, NULL);
return PLUGIN_RC_SUCCESS;
}
+31 -6
View File
@@ -260,6 +260,28 @@ plugin_api_printf (struct t_weechat_plugin *plugin,
gui_chat_printf ((struct t_gui_buffer *)buffer, buf);
}
/*
* plugin_api_printf_date: print a message on a buffer with a specific date
*/
void
plugin_api_printf_date (struct t_weechat_plugin *plugin,
void *buffer, time_t date, char *format, ...)
{
va_list argptr;
char buf[8192];
if (!plugin || !format
|| !gui_buffer_valid ((struct t_gui_buffer *)buffer))
return;
va_start (argptr, format);
vsnprintf (buf, sizeof (buf) - 1, format, argptr);
va_end (argptr);
gui_chat_printf_date ((struct t_gui_buffer *)buffer, date, buf);
}
/*
* plugin_api_prefix: return a prefix for display with printf
*/
@@ -835,6 +857,8 @@ plugin_api_list_get_add_buffer_line (struct t_plugin_list *list,
if (!plugin_list_new_var_time (ptr_item, "date", line->date))
return 0;
if (!plugin_list_new_var_time (ptr_item, "date_printed", line->date))
return 0;
if (!plugin_list_new_var_string (ptr_item, "str_time", line->str_time))
return 0;
if (!plugin_list_new_var_string (ptr_item, "prefix", line->prefix))
@@ -901,13 +925,14 @@ plugin_api_list_get (struct t_weechat_plugin *plugin, char *name,
}
else if (string_strcasecmp (name, "buffer_lines") == 0)
{
/* buffer pointer is mandatory for this list */
if (!pointer)
return NULL;
/* invalid buffer pointer ? */
if (!gui_buffer_valid ((struct t_gui_buffer *)pointer))
return NULL;
pointer = gui_buffers;
else
{
/* invalid buffer pointer ? */
if (!gui_buffer_valid ((struct t_gui_buffer *)pointer))
return NULL;
}
ptr_list = plugin_list_new ();
if (ptr_list)
+2
View File
@@ -45,6 +45,8 @@ extern void plugin_api_exec_on_files (struct t_weechat_plugin *, char *,
/* display */
extern void plugin_api_printf (struct t_weechat_plugin *, void *,
char *, ...);
extern void plugin_api_printf_date (struct t_weechat_plugin *, void *,
time_t, char *, ...);
extern char *plugin_api_prefix (struct t_weechat_plugin *, char *);
extern char *plugin_api_color (struct t_weechat_plugin *, char *);
extern void plugin_api_print_infobar (struct t_weechat_plugin *, int,
+1
View File
@@ -238,6 +238,7 @@ plugin_load (char *filename)
new_plugin->exec_on_files = &plugin_api_exec_on_files;
new_plugin->printf = &plugin_api_printf;
new_plugin->printf_date = &plugin_api_printf_date;
new_plugin->prefix = &plugin_api_prefix;
new_plugin->color = &plugin_api_color;
new_plugin->print_infobar = &plugin_api_print_infobar;
+5
View File
@@ -74,6 +74,8 @@ struct t_weechat_plugin
/* display */
void (*printf) (struct t_weechat_plugin *, void *, char *, ...);
void (*printf_date) (struct t_weechat_plugin *, void *, time_t,
char *, ...);
char *(*prefix) (struct t_weechat_plugin *, char *);
char *(*color) (struct t_weechat_plugin *, char *);
void (*print_infobar) (struct t_weechat_plugin *, int, char *, ...);
@@ -158,6 +160,9 @@ struct t_weechat_plugin
#define weechat_printf(buffer, argz...) \
weechat_plugin->printf(weechat_plugin, buffer, ##argz)
#define weechat_printf_date(buffer, datetime, argz...) \
weechat_plugin->printf_date(weechat_plugin, buffer, datetime, \
##argz)
#define weechat_prefix(prefix_name) \
weechat_plugin->prefix(weechat_plugin, prefix_name)
#define weechat_color(color_name) \