Backport changes from epic5 to make recv_nick, sent_nick and sent_body
per-server, and apply new version of do_oops from flewid (the BX2 version). This means that /oops, "/query .", "/query ,", "/msg ." and "/msg ," are now per-server, along with the $. $, and $B aliases. git-svn-id: svn://svn.code.sf.net/p/bitchx/code/trunk@87 13b04d17-f746-0410-82c6-800466cd88b0
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
[Changes 1.2c01]
|
||||
|
||||
* Handle error return from getcwd() in /cd (caf).
|
||||
* Backport changes from epic5 to make recv_nick, sent_nick and sent_body
|
||||
per-server, and apply new version of do_oops from flewid. This means
|
||||
that /oops, "/query .", "/query ,", "/msg ." and "/msg ," are per-server,
|
||||
along with the $. $, and $B aliases. (caf)
|
||||
|
||||
* Handle error return from getcwd() in /cd. (caf)
|
||||
|
||||
* Fix alloca warnings on freebsd. (caf)
|
||||
|
||||
|
||||
@@ -616,8 +616,8 @@ enum FUNCTION_VALUE
|
||||
SCREEN_LIST,
|
||||
IRCLOG_FP,
|
||||
DOING_NOTICE,
|
||||
LAST_SENT_MSG_BODY,
|
||||
SENT_NICK,
|
||||
LAST_SENT_MSG_BODY, /* NO LONGER USED */
|
||||
SENT_NICK, /* NO LONGER USED */
|
||||
|
||||
DLL_FUNCTIONS,
|
||||
DLL_NUMERIC,
|
||||
|
||||
@@ -678,8 +678,6 @@ extern Function_ptr *global;
|
||||
#define autoreply_array (*((NickTab *)global[AUTOREPLY_ARRAY]))
|
||||
#define identd (*((int *)global[IDENTD_SOCKET]))
|
||||
#define doing_notice ((int) *((int *)global[DOING_NOTICE]))
|
||||
#define last_sent_msg_body (*((char **)global[LAST_SENT_MSG_BODY]))
|
||||
#define sent_nick (*((char **)global[SENT_NICK]))
|
||||
|
||||
#define default_output_function (*(void (**)(char *))global[DEFAULT_OUTPUT_FUNCTION])
|
||||
|
||||
|
||||
@@ -165,6 +165,12 @@ typedef struct
|
||||
int ssl_error;
|
||||
SSL* ssl_fd;
|
||||
#endif
|
||||
|
||||
/* recv_nick: the nickname of the last person to send you a privmsg */
|
||||
char *recv_nick;
|
||||
/* sent_nick: the nickname of the last person to whom you sent a privmsg */
|
||||
char *sent_nick;
|
||||
char *sent_body;
|
||||
} Server;
|
||||
|
||||
typedef struct ser_group_list
|
||||
@@ -251,6 +257,13 @@ extern SGroup *server_group_list;
|
||||
time_t get_server_awaytime (int);
|
||||
void set_server_awaytime (int, time_t);
|
||||
|
||||
void set_server_recv_nick(int server, const char *nick);
|
||||
char *get_server_recv_nick(int server);
|
||||
void set_server_sent_nick(int server, const char *nick);
|
||||
char *get_server_sent_nick(int server);
|
||||
void set_server_sent_body(int server, const char *msg_body);
|
||||
char *get_server_sent_body(int server);
|
||||
|
||||
void server_redirect (int, char *);
|
||||
int BX_check_server_redirect (char *);
|
||||
char * BX_get_server_network (int);
|
||||
|
||||
@@ -119,7 +119,6 @@ extern int doing_notice;
|
||||
static void oper_password_received (char *, char *);
|
||||
|
||||
int no_hook_notify = 0;
|
||||
char *last_sent_msg_body = NULL;
|
||||
int load_depth = -1;
|
||||
|
||||
extern char cx_function[];
|
||||
@@ -139,13 +138,6 @@ extern char cx_function[];
|
||||
/* The maximum number of recursive LOAD levels allowed */
|
||||
#define MAX_LOAD_DEPTH 10
|
||||
|
||||
/* recv_nick: the nickname of the last person to send you a privmsg */
|
||||
char *recv_nick = NULL;
|
||||
|
||||
/* sent_nick: the nickname of the last person to whom you sent a privmsg */
|
||||
char *sent_nick = NULL;
|
||||
char *sent_body = NULL;
|
||||
|
||||
int interactive = 0;
|
||||
|
||||
|
||||
@@ -1085,18 +1077,18 @@ BUILT_IN_COMMAND(blesscmd)
|
||||
|
||||
BUILT_IN_COMMAND(do_oops)
|
||||
{
|
||||
char *newmsg;
|
||||
const char *to = next_arg(args, &args);
|
||||
const char *sent_nick = get_server_sent_nick(from_server);
|
||||
const char *sent_body = get_server_sent_body(from_server);
|
||||
|
||||
|
||||
if (args && *args && last_sent_msg_body)
|
||||
if (sent_nick && sent_body && to && *to)
|
||||
{
|
||||
newmsg = next_arg(args, &args);
|
||||
send_to_server("PRIVMSG %s :Oops, that /msg wasn't for you", sent_nick);
|
||||
send_to_server("PRIVMSG %s :%s", newmsg, last_sent_msg_body);
|
||||
if (window_display && do_hook(SEND_MSG_LIST, "%s %s", newmsg, last_sent_msg_body))
|
||||
put_it("%s", convert_output_format(fget_string_var(FORMAT_SEND_MSG_FSET),"%s %s %s %s", update_clock(GET_TIME), newmsg, get_server_nickname(from_server), last_sent_msg_body));
|
||||
send_to_server("PRIVMSG %s :%s", to, sent_body);
|
||||
if (window_display && do_hook(SEND_MSG_LIST, "%s %s", to, sent_body))
|
||||
put_it("%s", convert_output_format(fget_string_var(FORMAT_SEND_MSG_FSET), "%s %s %s %s", update_clock(GET_TIME),
|
||||
to, get_server_nickname(from_server), sent_body));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1640,7 +1632,7 @@ BUILT_IN_COMMAND(my_whois)
|
||||
{
|
||||
char *nick = NULL;
|
||||
if (!strcmp(command, "WILM"))
|
||||
nick = recv_nick;
|
||||
nick = get_server_recv_nick(from_server);
|
||||
else if (!strcmp(command, "WILN"))
|
||||
nick = last_notice[0].to;
|
||||
else if (!strcmp(command, "WILC"))
|
||||
@@ -3312,7 +3304,7 @@ BUILT_IN_COMMAND(e_privmsg)
|
||||
{
|
||||
if (!strcmp(nick, "."))
|
||||
{
|
||||
if (!(nick = sent_nick))
|
||||
if (!(nick = get_server_sent_nick(from_server)))
|
||||
{
|
||||
bitchsay("You have not sent a message to anyone yet");
|
||||
return;
|
||||
@@ -3320,7 +3312,7 @@ BUILT_IN_COMMAND(e_privmsg)
|
||||
}
|
||||
else if (!strcmp(nick, ","))
|
||||
{
|
||||
if (!(nick = recv_nick))
|
||||
if (!(nick = get_server_recv_nick(from_server)))
|
||||
{
|
||||
bitchsay("You have not received a message from anyone yet");
|
||||
return;
|
||||
@@ -4004,8 +3996,6 @@ struct target_type target[4] =
|
||||
logmsg(LOG_SEND_MSG, target[i].nick_list, 0, "%s", copy);
|
||||
/* save this for /oops */
|
||||
|
||||
malloc_strcpy(&last_sent_msg_body, copy);
|
||||
|
||||
if (i == 1 || i == 3)
|
||||
{
|
||||
char *channel;
|
||||
@@ -4040,7 +4030,8 @@ struct target_type target[4] =
|
||||
|
||||
if ((i == 0))
|
||||
{
|
||||
malloc_strcpy(&sent_nick, target[0].nick_list);
|
||||
set_server_sent_nick(from_server, target[0].nick_list);
|
||||
set_server_sent_body(from_server, copy);
|
||||
add_last_type(&last_sent_msg[0], MAX_LAST_MSG, NULL, NULL, target[i].nick_list, copy);
|
||||
}
|
||||
else if ((i == 2) || (i == 3))
|
||||
|
||||
@@ -1084,9 +1084,9 @@ static char *alias_dollar (void) { return m_strdup("$"); }
|
||||
static char *alias_detected (void) { return m_strdup(last_notify_nick); }
|
||||
static char *alias_nick (void) { return m_strdup((current_window->server != -1? get_server_nickname(current_window->server) : empty_string)); }
|
||||
char *alias_away (void) { return m_strdup(get_server_away(from_server)); }
|
||||
static char *alias_sent_nick (void) { return m_strdup((sent_nick) ? sent_nick : empty_string); }
|
||||
static char *alias_recv_nick (void) { return m_strdup((recv_nick) ? recv_nick : empty_string); }
|
||||
static char *alias_msg_body (void) { return m_strdup((sent_body) ? sent_body : empty_string); }
|
||||
static char *alias_sent_nick (void) { return m_strdup(get_server_sent_nick(from_server)); }
|
||||
static char *alias_recv_nick (void) { return m_strdup(get_server_recv_nick(from_server)); }
|
||||
static char *alias_msg_body (void) { return m_strdup(get_server_sent_body(from_server)); }
|
||||
static char *alias_joined_nick (void) { return m_strdup((joined_nick) ? joined_nick : empty_string); }
|
||||
static char *alias_public_nick (void) { return m_strdup((public_nick) ? public_nick : empty_string); }
|
||||
static char *alias_show_realname (void) { return m_strdup(realname); }
|
||||
|
||||
@@ -77,7 +77,6 @@ Packages *install_pack = NULL;
|
||||
extern int BX_read_sockets();
|
||||
extern int identd;
|
||||
extern int doing_notice;
|
||||
extern char *sent_nick, *last_sent_msg_body;
|
||||
|
||||
extern int (*dcc_open_func) (int, int, unsigned long, int);
|
||||
extern int (*dcc_output_func) (int, int, char *, int);
|
||||
@@ -661,8 +660,8 @@ static int already_done = 0;
|
||||
global_table[OUTPUT_SCREEN] = (Function_ptr) &output_screen;
|
||||
global_table[SCREEN_LIST] = (Function_ptr) &screen_list;
|
||||
global_table[DOING_NOTICE] = (Function_ptr) &doing_notice;
|
||||
global_table[SENT_NICK] = (Function_ptr) &sent_nick;
|
||||
global_table[LAST_SENT_MSG_BODY] = (Function_ptr) &last_sent_msg_body;
|
||||
global_table[SENT_NICK] = 0; /* No longer used */
|
||||
global_table[LAST_SENT_MSG_BODY] = 0; /* No longer used */
|
||||
|
||||
global_table[IRCLOG_FP] = (Function_ptr) &irclog_fp;
|
||||
#ifdef WANT_DLL
|
||||
|
||||
@@ -627,7 +627,7 @@ static void p_privmsg(char *from, char **Args)
|
||||
{
|
||||
if (!no_flood)
|
||||
break;
|
||||
malloc_strcpy(&recv_nick, from);
|
||||
set_server_recv_nick(from_server, from);
|
||||
#ifdef WANT_CDCC
|
||||
if ((msgcdcc(from, to, ptr)) == NULL)
|
||||
break;
|
||||
@@ -1179,7 +1179,6 @@ static void p_invite(char *from, char **ArgList)
|
||||
}
|
||||
if (!(chan = lookup_channel(invite_channel, from_server, 0)))
|
||||
check_auto_join(from_server, from, invite_channel, ArgList[2]);
|
||||
malloc_strcpy(&recv_nick, from);
|
||||
add_last_type(&last_invite_channel[0], 1, from, FromUserHost, ArgList[1], ArgList[2]?ArgList[2]:empty_string);
|
||||
reset_display_target();
|
||||
}
|
||||
|
||||
@@ -143,6 +143,10 @@ void BX_close_server (int cs_index, char *message)
|
||||
|
||||
server_list[cs_index].awaytime = 0;
|
||||
new_free(&server_list[cs_index].away);
|
||||
new_free(&server_list[cs_index].recv_nick);
|
||||
new_free(&server_list[cs_index].sent_nick);
|
||||
new_free(&server_list[cs_index].sent_body);
|
||||
|
||||
if (server_list[cs_index].write > -1)
|
||||
{
|
||||
if (message && *message && !server_list[cs_index].closing)
|
||||
@@ -830,6 +834,9 @@ void remove_from_server_list (int i)
|
||||
new_free(&server_list[i].s_nickname);
|
||||
new_free(&server_list[i].d_nickname);
|
||||
new_free(&server_list[i].umodes);
|
||||
new_free(&server_list[i].recv_nick);
|
||||
new_free(&server_list[i].sent_nick);
|
||||
new_free(&server_list[i].sent_body);
|
||||
#ifdef HAVE_SSL
|
||||
SSL_CTX_free(server_list[i].ctx);
|
||||
#endif
|
||||
@@ -3071,6 +3078,57 @@ unsigned short port = 113;
|
||||
#endif
|
||||
}
|
||||
|
||||
void set_server_recv_nick(int server, const char *nick)
|
||||
{
|
||||
if (server <= -1 || server >= number_of_servers)
|
||||
return;
|
||||
if (nick)
|
||||
malloc_strcpy(&server_list[server].recv_nick, nick);
|
||||
else
|
||||
new_free(&server_list[server].recv_nick);
|
||||
}
|
||||
|
||||
char *get_server_recv_nick(int server)
|
||||
{
|
||||
if (server <= -1 || server >= number_of_servers)
|
||||
return NULL;
|
||||
return server_list[server].recv_nick;
|
||||
}
|
||||
|
||||
void set_server_sent_nick(int server, const char *nick)
|
||||
{
|
||||
if (server <= -1 || server >= number_of_servers)
|
||||
return;
|
||||
if (nick)
|
||||
malloc_strcpy(&server_list[server].sent_nick, nick);
|
||||
else
|
||||
new_free(&server_list[server].sent_nick);
|
||||
}
|
||||
|
||||
char *get_server_sent_nick(int server)
|
||||
{
|
||||
if (server <= -1 || server >= number_of_servers)
|
||||
return NULL;
|
||||
return server_list[server].sent_nick;
|
||||
}
|
||||
|
||||
void set_server_sent_body(int server, const char *msg_body)
|
||||
{
|
||||
if (server <= -1 || server >= number_of_servers)
|
||||
return;
|
||||
if (msg_body)
|
||||
malloc_strcpy(&server_list[server].sent_body, msg_body);
|
||||
else
|
||||
new_free(&server_list[server].sent_body);
|
||||
}
|
||||
|
||||
char *get_server_sent_body(int server)
|
||||
{
|
||||
if (server <= -1 || server >= number_of_servers)
|
||||
return NULL;
|
||||
return server_list[server].sent_body;
|
||||
}
|
||||
|
||||
Sping *get_server_sping(int server, char *sname)
|
||||
{
|
||||
if (server <= -1)
|
||||
|
||||
@@ -3744,12 +3744,12 @@ Window *window_query (Window *window, char **args, char *usage)
|
||||
host = *args;
|
||||
if (!strcmp(nick, "."))
|
||||
{
|
||||
if (!(nick = sent_nick))
|
||||
if (!(nick = get_server_sent_nick(window->server)))
|
||||
say("You have not messaged anyone yet");
|
||||
}
|
||||
else if (!strcmp(nick, ","))
|
||||
{
|
||||
if (!(nick = recv_nick))
|
||||
if (!(nick = get_server_recv_nick(window->server)))
|
||||
say("You have not recieved a message yet");
|
||||
}
|
||||
else if (!strcmp(nick, "*") &&
|
||||
|
||||
Reference in New Issue
Block a user