Exemplo n.º 1
0
/* Send text to DCC chat */
static void cmd_msg(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
{
	CHAT_DCC_REC *dcc;
        GHashTable *optlist;
	char *text, *target;
	void *free_arg;

	g_return_if_fail(data != NULL);

	if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_UNKNOWN_OPTIONS |
			    PARAM_FLAG_OPTIONS | PARAM_FLAG_GETREST, "msg",
			    &optlist, &target, &text))
		return;

	/* handle only DCC messages */
	if (g_strcmp0(target, "*") == 0)
		dcc = item_get_dcc(item);
	else if (*target == '=')
		dcc = dcc_chat_find_id(target+1);
	else
		dcc = NULL;

	if (dcc != NULL && dcc->sendbuf != NULL) {
		char *recoded;

		recoded = recode_out(server, text, dcc->nick);
		dcc_chat_send(dcc, recoded);
		g_free(recoded);
	}

	if (dcc != NULL || *target == '=')
		signal_stop();

	cmd_params_free(free_arg);
}
Exemplo n.º 2
0
static PyObject *PyDccChat_chat_send(PyDccChat *self, PyObject *args, PyObject *kwds)
{
    static char *kwlist[] = {"data", NULL};
    char *data = "";

    RET_NULL_IF_INVALID(self->data);

    if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, 
           &data))
        return NULL;

    dcc_chat_send(self->data, data);
    
    Py_RETURN_NONE;
}
Exemplo n.º 3
0
void dcc_ctcp_message(const char *target, IRC_SERVER_REC *server, DCC_REC *chat, int notice, const char *msg)
{
	char *str;

	if (chat != NULL) {
		/* send it via open DCC chat */
		str = g_strdup_printf("%s\001%s\001", chat->mirc_ctcp ? "" :
				      notice ? "CTCP_REPLY " : "CTCP_MESSAGE ", msg);
                dcc_chat_send(chat, str);
	} else {
		str = g_strdup_printf("%s %s :\001%s\001",
				      notice ? "NOTICE" : "PRIVMSG", target, msg);
		irc_send_cmd(server, str);
	}

	g_free(str);
}
Exemplo n.º 4
0
/* Send text to DCC chat */
static void cmd_msg(const char *data)
{
	DCC_REC *dcc;
	char *params, *text, *target;

	g_return_if_fail(text != NULL);

	if (*data != '=') {
		/* handle only DCC messages */
		return;
	}

	params = cmd_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &text);

	dcc = dcc_find_item(DCC_TYPE_CHAT, ++target, NULL);
	if (dcc != NULL) dcc_chat_send(dcc, text);

	g_free(params);
	signal_stop();
}
Exemplo n.º 5
0
/* Send a CTCP message/notify to target.
   Send the CTCP via DCC chat if `chat' is specified. */
void dcc_ctcp_message(IRC_SERVER_REC *server, const char *target,
		      CHAT_DCC_REC *chat, int notice, const char *msg)
{
	char *str;
	char *recoded;

	if (chat != NULL && chat->sendbuf != NULL) {
		/* send it via open DCC chat */
		recoded = recode_out(SERVER(server), msg, chat->nick);
		str = g_strdup_printf("%s\001%s\001", chat->mirc_ctcp ? "" :
				      notice ? "CTCP_REPLY " :
				      "CTCP_MESSAGE ", recoded);
                dcc_chat_send(chat, str);
		g_free(str);
	} else {
		recoded = recode_out(SERVER(server), msg, target);
		irc_send_cmdv(server, "%s %s :\001%s\001",
			      notice ? "NOTICE" : "PRIVMSG", target, recoded);
	}
	g_free(recoded);
}