43 .uninit = extsayng_uninit, |
43 .uninit = extsayng_uninit, |
44 .next = NULL, |
44 .next = NULL, |
45 }; |
45 }; |
46 |
46 |
47 // Forks and run the external helper script |
47 // Forks and run the external helper script |
48 static void screen_run_script(const char *args) |
48 static void screen_run_script(const gchar *args) |
49 { |
49 { |
50 GError *err = NULL; |
50 GError *err = NULL; |
51 gchar *argv[] = { "screen", "-r", "-X", "screen", NULL, NULL, NULL }; |
51 gchar *argv[] = { "screen", "-r", "-X", "screen", NULL, NULL, NULL }; |
52 gboolean ret; |
52 gboolean ret; |
53 |
53 |
63 argv[5] = (gchar*)args; |
63 argv[5] = (gchar*)args; |
64 else |
64 else |
65 argv[5] = "."; |
65 argv[5] = "."; |
66 |
66 |
67 ret = g_spawn_async(NULL, argv, NULL, |
67 ret = g_spawn_async(NULL, argv, NULL, |
68 G_SPAWN_SEARCH_PATH, //| |
68 G_SPAWN_SEARCH_PATH | |
69 // G_SPAWN_STDOUT_TO_DEV_NULL|G_SPAWN_STDERR_TO_DEV_NULL, |
69 G_SPAWN_STDOUT_TO_DEV_NULL|G_SPAWN_STDERR_TO_DEV_NULL, |
70 NULL, NULL, NULL, &err); |
70 NULL, NULL, NULL, &err); |
71 |
71 |
72 if (!ret) |
72 if (!ret) |
73 scr_LogPrint(LPRINT_NORMAL, err->message); |
73 scr_LogPrint(LPRINT_NORMAL, err->message); |
74 } |
74 } |
75 |
75 |
76 static void do_extsayng(char *args) |
76 static void do_extsayng(gchar *args) |
77 { |
77 { |
78 // TODO - check the selected item is a real contact |
78 gpointer bud; |
79 // (not a special buffer, nor a group...) |
79 |
80 // TODO provide JID if it isn't provided |
80 if (!args || !*args || !g_strcmp0(args, ".")) { |
|
81 if (!current_buddy) { |
|
82 scr_LogPrint(LPRINT_NORMAL, "Please select a buddy."); |
|
83 return; |
|
84 } |
|
85 |
|
86 bud = BUDDATA(current_buddy); |
|
87 if (!(buddy_gettype(bud) & |
|
88 (ROSTER_TYPE_USER|ROSTER_TYPE_AGENT|ROSTER_TYPE_ROOM))) { |
|
89 scr_LogPrint(LPRINT_NORMAL, "This is not a user."); |
|
90 return; |
|
91 } |
|
92 |
|
93 args = (gchar*)buddy_getjid(bud); |
|
94 } |
|
95 |
81 screen_run_script(args); |
96 screen_run_script(args); |
82 } |
97 } |
83 |
98 |
84 static void extsayng_init(void) |
99 static void extsayng_init(void) |
85 { |
100 { |