mirror of
https://github.com/irssi/irssi.git
synced 2025-02-02 15:08:01 -05:00
/EXEC -out now sends /msg -nick | -channel so it works properly with silc
channels. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2668 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
dfed19a3c8
commit
d5c15a8ee3
@ -28,6 +28,9 @@
|
|||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "levels.h"
|
#include "levels.h"
|
||||||
|
|
||||||
|
#include "channels.h"
|
||||||
|
#include "queries.h"
|
||||||
|
|
||||||
#include "printtext.h"
|
#include "printtext.h"
|
||||||
#include "fe-exec.h"
|
#include "fe-exec.h"
|
||||||
#include "fe-windows.h"
|
#include "fe-windows.h"
|
||||||
@ -370,7 +373,7 @@ static void handle_exec(const char *args, GHashTable *optlist,
|
|||||||
{
|
{
|
||||||
PROCESS_REC *rec;
|
PROCESS_REC *rec;
|
||||||
char *target, *level;
|
char *target, *level;
|
||||||
int notice, signum, interactive;
|
int notice, signum, interactive, target_nick, target_channel;
|
||||||
|
|
||||||
/* check that there's no unknown options. we allowed them
|
/* check that there's no unknown options. we allowed them
|
||||||
because signals can be used as options, but there should be
|
because signals can be used as options, but there should be
|
||||||
@ -403,11 +406,14 @@ static void handle_exec(const char *args, GHashTable *optlist,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
/* common options */
|
/* common options */
|
||||||
|
target_channel = target_nick = FALSE;
|
||||||
if (g_hash_table_lookup(optlist, "out") != NULL) {
|
if (g_hash_table_lookup(optlist, "out") != NULL) {
|
||||||
/* redirect output to active channel/query */
|
/* redirect output to active channel/query */
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
cmd_return_error(CMDERR_NOT_JOINED);
|
cmd_return_error(CMDERR_NOT_JOINED);
|
||||||
target = item->name;
|
target = item->name;
|
||||||
|
target_channel = IS_CHANNEL(item);
|
||||||
|
target_nick = IS_QUERY(item);
|
||||||
} else if (g_hash_table_lookup(optlist, "msg") != NULL) {
|
} else if (g_hash_table_lookup(optlist, "msg") != NULL) {
|
||||||
/* redirect output to /msg <nick> */
|
/* redirect output to /msg <nick> */
|
||||||
target = g_hash_table_lookup(optlist, "msg");
|
target = g_hash_table_lookup(optlist, "msg");
|
||||||
@ -487,6 +493,8 @@ static void handle_exec(const char *args, GHashTable *optlist,
|
|||||||
rec->id = process_get_new_id();
|
rec->id = process_get_new_id();
|
||||||
rec->target = g_strdup(target);
|
rec->target = g_strdup(target);
|
||||||
rec->target_win = active_win;
|
rec->target_win = active_win;
|
||||||
|
rec->target_channel = target_channel;
|
||||||
|
rec->target_nick = target_nick;
|
||||||
rec->args = g_strdup(args);
|
rec->args = g_strdup(args);
|
||||||
rec->notice = notice;
|
rec->notice = notice;
|
||||||
rec->silent = g_hash_table_lookup(optlist, "-") != NULL;
|
rec->silent = g_hash_table_lookup(optlist, "-") != NULL;
|
||||||
@ -572,7 +580,9 @@ static void sig_exec_input(PROCESS_REC *rec, const char *text)
|
|||||||
server = item != NULL ? item->server :
|
server = item != NULL ? item->server :
|
||||||
active_win->active_server;
|
active_win->active_server;
|
||||||
|
|
||||||
str = g_strconcat(rec->target, " ", text, NULL);
|
str = g_strconcat(rec->target_nick ? "-nick " :
|
||||||
|
rec->target_channel ? "-channel " : "",
|
||||||
|
rec->target, " ", text, NULL);
|
||||||
signal_emit(rec->notice ? "command notice" : "command msg",
|
signal_emit(rec->notice ? "command notice" : "command msg",
|
||||||
3, str, server, item);
|
3, str, server, item);
|
||||||
g_free(str);
|
g_free(str);
|
||||||
|
@ -38,6 +38,8 @@ struct PROCESS_REC {
|
|||||||
unsigned int shell:1; /* start the program via /bin/sh */
|
unsigned int shell:1; /* start the program via /bin/sh */
|
||||||
unsigned int notice:1; /* send text with /notice, not /msg if target is set */
|
unsigned int notice:1; /* send text with /notice, not /msg if target is set */
|
||||||
unsigned int silent:1; /* don't print "process exited with level xx" */
|
unsigned int silent:1; /* don't print "process exited with level xx" */
|
||||||
|
unsigned int target_channel:1; /* target is a channel */
|
||||||
|
unsigned int target_nick:1; /* target is a nick */
|
||||||
};
|
};
|
||||||
|
|
||||||
extern GSList *processes;
|
extern GSList *processes;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user