#include "kernel/action.h"
#include "kernel/event.h"
-#define TIMED_MENU(m) ((Menu *)m)
-#define TIMED_MENU_DATA(m) ((Timed_Menu_Data *)((Menu *)m)->plugin_data)
+#define TIMED_MENU(m) ((ObMenu *)m)
+#define TIMED_MENU_DATA(m) ((Timed_Menu_Data *)((ObMenu *)m)->plugin_data)
static char *PLUGIN_NAME = "timed_menu";
typedef enum {
typedef struct {
Timed_Menu_Type type;
- Timer *timer;
+ ObTimer *timer;
char *command; /* for the PIPE */
char *buf; /* buffer to hold partially read menu */
unsigned long buflen; /* how many bytes are in the buffer */
{ }
void plugin_shutdown() { }
-void timed_menu_clean_up(Menu *m) {
+void timed_menu_clean_up(ObMenu *m) {
if (TIMED_MENU_DATA(m)->buf != NULL) {
fprintf(stderr, "%s", TIMED_MENU_DATA(m)->buf);
g_free(TIMED_MENU_DATA(m)->buf);
TIMED_MENU_DATA(m)->mtime = 0;
}
-void timed_menu_read_pipe(int fd, Menu *menu)
+void timed_menu_read_pipe(int fd, void *d)
{
+ ObMenu *menu = d;
char *tmpbuf = NULL;
unsigned long num_read;
#ifdef DEBUG
/* because gdb is dumb */
+#if 0
Timed_Menu_Data *d = TIMED_MENU_DATA(menu);
+#endif
#endif
unsigned long num_realloc;
}
}
-void timed_menu_timeout_handler(Menu *data)
+void timed_menu_timeout_handler(void *d)
{
- Action *a;
-
+ ObMenu *data = d;
if (!data->shown && TIMED_MENU_DATA(data)->fd == -1) {
switch (TIMED_MENU_DATA(data)->type) {
case (TIMED_MENU_PIPE): {
as menu */
/* I hate you glib in all your hideous forms */
- char *args[] = {"/bin/sh", "-c", TIMED_MENU_DATA(data)->command,
- NULL};
+ char *args[4];
int child_stdout;
int child_pid;
+ args[0] = "/bin/sh";
+ args[1] = "-c";
+ args[2] = TIMED_MENU_DATA(data)->command;
+ args[3] = NULL;
if (g_spawn_async_with_pipes(
NULL,
args,
void *plugin_create()
{
Timed_Menu_Data *d = g_new(Timed_Menu_Data, 1);
- Menu *m = menu_new("", PLUGIN_NAME, NULL);
+ ObMenu *m = menu_new("", PLUGIN_NAME, NULL);
m->plugin = PLUGIN_NAME;