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]
|
[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)
|
* Fix alloca warnings on freebsd. (caf)
|
||||||
|
|
||||||
|
|||||||
@@ -616,8 +616,8 @@ enum FUNCTION_VALUE
|
|||||||
SCREEN_LIST,
|
SCREEN_LIST,
|
||||||
IRCLOG_FP,
|
IRCLOG_FP,
|
||||||
DOING_NOTICE,
|
DOING_NOTICE,
|
||||||
LAST_SENT_MSG_BODY,
|
LAST_SENT_MSG_BODY, /* NO LONGER USED */
|
||||||
SENT_NICK,
|
SENT_NICK, /* NO LONGER USED */
|
||||||
|
|
||||||
DLL_FUNCTIONS,
|
DLL_FUNCTIONS,
|
||||||
DLL_NUMERIC,
|
DLL_NUMERIC,
|
||||||
|
|||||||
@@ -678,8 +678,6 @@ extern Function_ptr *global;
|
|||||||
#define autoreply_array (*((NickTab *)global[AUTOREPLY_ARRAY]))
|
#define autoreply_array (*((NickTab *)global[AUTOREPLY_ARRAY]))
|
||||||
#define identd (*((int *)global[IDENTD_SOCKET]))
|
#define identd (*((int *)global[IDENTD_SOCKET]))
|
||||||
#define doing_notice ((int) *((int *)global[DOING_NOTICE]))
|
#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])
|
#define default_output_function (*(void (**)(char *))global[DEFAULT_OUTPUT_FUNCTION])
|
||||||
|
|
||||||
|
|||||||
@@ -165,6 +165,12 @@ typedef struct
|
|||||||
int ssl_error;
|
int ssl_error;
|
||||||
SSL* ssl_fd;
|
SSL* ssl_fd;
|
||||||
#endif
|
#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;
|
} Server;
|
||||||
|
|
||||||
typedef struct ser_group_list
|
typedef struct ser_group_list
|
||||||
@@ -251,6 +257,13 @@ extern SGroup *server_group_list;
|
|||||||
time_t get_server_awaytime (int);
|
time_t get_server_awaytime (int);
|
||||||
void set_server_awaytime (int, time_t);
|
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 *);
|
void server_redirect (int, char *);
|
||||||
int BX_check_server_redirect (char *);
|
int BX_check_server_redirect (char *);
|
||||||
char * BX_get_server_network (int);
|
char * BX_get_server_network (int);
|
||||||
|
|||||||
@@ -119,7 +119,6 @@ extern int doing_notice;
|
|||||||
static void oper_password_received (char *, char *);
|
static void oper_password_received (char *, char *);
|
||||||
|
|
||||||
int no_hook_notify = 0;
|
int no_hook_notify = 0;
|
||||||
char *last_sent_msg_body = NULL;
|
|
||||||
int load_depth = -1;
|
int load_depth = -1;
|
||||||
|
|
||||||
extern char cx_function[];
|
extern char cx_function[];
|
||||||
@@ -139,13 +138,6 @@ extern char cx_function[];
|
|||||||
/* The maximum number of recursive LOAD levels allowed */
|
/* The maximum number of recursive LOAD levels allowed */
|
||||||
#define MAX_LOAD_DEPTH 10
|
#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;
|
int interactive = 0;
|
||||||
|
|
||||||
|
|
||||||
@@ -1085,18 +1077,18 @@ BUILT_IN_COMMAND(blesscmd)
|
|||||||
|
|
||||||
BUILT_IN_COMMAND(do_oops)
|
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 (sent_nick && sent_body && to && *to)
|
||||||
if (args && *args && last_sent_msg_body)
|
|
||||||
{
|
{
|
||||||
newmsg = next_arg(args, &args);
|
|
||||||
send_to_server("PRIVMSG %s :Oops, that /msg wasn't for you", sent_nick);
|
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);
|
send_to_server("PRIVMSG %s :%s", to, sent_body);
|
||||||
if (window_display && do_hook(SEND_MSG_LIST, "%s %s", newmsg, last_sent_msg_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), newmsg, get_server_nickname(from_server), 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),
|
||||||
|
to, get_server_nickname(from_server), sent_body));
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1640,7 +1632,7 @@ BUILT_IN_COMMAND(my_whois)
|
|||||||
{
|
{
|
||||||
char *nick = NULL;
|
char *nick = NULL;
|
||||||
if (!strcmp(command, "WILM"))
|
if (!strcmp(command, "WILM"))
|
||||||
nick = recv_nick;
|
nick = get_server_recv_nick(from_server);
|
||||||
else if (!strcmp(command, "WILN"))
|
else if (!strcmp(command, "WILN"))
|
||||||
nick = last_notice[0].to;
|
nick = last_notice[0].to;
|
||||||
else if (!strcmp(command, "WILC"))
|
else if (!strcmp(command, "WILC"))
|
||||||
@@ -3312,7 +3304,7 @@ BUILT_IN_COMMAND(e_privmsg)
|
|||||||
{
|
{
|
||||||
if (!strcmp(nick, "."))
|
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");
|
bitchsay("You have not sent a message to anyone yet");
|
||||||
return;
|
return;
|
||||||
@@ -3320,7 +3312,7 @@ BUILT_IN_COMMAND(e_privmsg)
|
|||||||
}
|
}
|
||||||
else if (!strcmp(nick, ","))
|
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");
|
bitchsay("You have not received a message from anyone yet");
|
||||||
return;
|
return;
|
||||||
@@ -4004,8 +3996,6 @@ struct target_type target[4] =
|
|||||||
logmsg(LOG_SEND_MSG, target[i].nick_list, 0, "%s", copy);
|
logmsg(LOG_SEND_MSG, target[i].nick_list, 0, "%s", copy);
|
||||||
/* save this for /oops */
|
/* save this for /oops */
|
||||||
|
|
||||||
malloc_strcpy(&last_sent_msg_body, copy);
|
|
||||||
|
|
||||||
if (i == 1 || i == 3)
|
if (i == 1 || i == 3)
|
||||||
{
|
{
|
||||||
char *channel;
|
char *channel;
|
||||||
@@ -4040,7 +4030,8 @@ struct target_type target[4] =
|
|||||||
|
|
||||||
if ((i == 0))
|
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);
|
add_last_type(&last_sent_msg[0], MAX_LAST_MSG, NULL, NULL, target[i].nick_list, copy);
|
||||||
}
|
}
|
||||||
else if ((i == 2) || (i == 3))
|
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_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)); }
|
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)); }
|
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_sent_nick (void) { return m_strdup(get_server_sent_nick(from_server)); }
|
||||||
static char *alias_recv_nick (void) { return m_strdup((recv_nick) ? recv_nick : empty_string); }
|
static char *alias_recv_nick (void) { return m_strdup(get_server_recv_nick(from_server)); }
|
||||||
static char *alias_msg_body (void) { return m_strdup((sent_body) ? sent_body : empty_string); }
|
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_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_public_nick (void) { return m_strdup((public_nick) ? public_nick : empty_string); }
|
||||||
static char *alias_show_realname (void) { return m_strdup(realname); }
|
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 BX_read_sockets();
|
||||||
extern int identd;
|
extern int identd;
|
||||||
extern int doing_notice;
|
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_open_func) (int, int, unsigned long, int);
|
||||||
extern int (*dcc_output_func) (int, int, char *, 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[OUTPUT_SCREEN] = (Function_ptr) &output_screen;
|
||||||
global_table[SCREEN_LIST] = (Function_ptr) &screen_list;
|
global_table[SCREEN_LIST] = (Function_ptr) &screen_list;
|
||||||
global_table[DOING_NOTICE] = (Function_ptr) &doing_notice;
|
global_table[DOING_NOTICE] = (Function_ptr) &doing_notice;
|
||||||
global_table[SENT_NICK] = (Function_ptr) &sent_nick;
|
global_table[SENT_NICK] = 0; /* No longer used */
|
||||||
global_table[LAST_SENT_MSG_BODY] = (Function_ptr) &last_sent_msg_body;
|
global_table[LAST_SENT_MSG_BODY] = 0; /* No longer used */
|
||||||
|
|
||||||
global_table[IRCLOG_FP] = (Function_ptr) &irclog_fp;
|
global_table[IRCLOG_FP] = (Function_ptr) &irclog_fp;
|
||||||
#ifdef WANT_DLL
|
#ifdef WANT_DLL
|
||||||
|
|||||||
@@ -627,7 +627,7 @@ static void p_privmsg(char *from, char **Args)
|
|||||||
{
|
{
|
||||||
if (!no_flood)
|
if (!no_flood)
|
||||||
break;
|
break;
|
||||||
malloc_strcpy(&recv_nick, from);
|
set_server_recv_nick(from_server, from);
|
||||||
#ifdef WANT_CDCC
|
#ifdef WANT_CDCC
|
||||||
if ((msgcdcc(from, to, ptr)) == NULL)
|
if ((msgcdcc(from, to, ptr)) == NULL)
|
||||||
break;
|
break;
|
||||||
@@ -1179,7 +1179,6 @@ static void p_invite(char *from, char **ArgList)
|
|||||||
}
|
}
|
||||||
if (!(chan = lookup_channel(invite_channel, from_server, 0)))
|
if (!(chan = lookup_channel(invite_channel, from_server, 0)))
|
||||||
check_auto_join(from_server, from, invite_channel, ArgList[2]);
|
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);
|
add_last_type(&last_invite_channel[0], 1, from, FromUserHost, ArgList[1], ArgList[2]?ArgList[2]:empty_string);
|
||||||
reset_display_target();
|
reset_display_target();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,6 +143,10 @@ void BX_close_server (int cs_index, char *message)
|
|||||||
|
|
||||||
server_list[cs_index].awaytime = 0;
|
server_list[cs_index].awaytime = 0;
|
||||||
new_free(&server_list[cs_index].away);
|
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 (server_list[cs_index].write > -1)
|
||||||
{
|
{
|
||||||
if (message && *message && !server_list[cs_index].closing)
|
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].s_nickname);
|
||||||
new_free(&server_list[i].d_nickname);
|
new_free(&server_list[i].d_nickname);
|
||||||
new_free(&server_list[i].umodes);
|
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
|
#ifdef HAVE_SSL
|
||||||
SSL_CTX_free(server_list[i].ctx);
|
SSL_CTX_free(server_list[i].ctx);
|
||||||
#endif
|
#endif
|
||||||
@@ -3071,6 +3078,57 @@ unsigned short port = 113;
|
|||||||
#endif
|
#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)
|
Sping *get_server_sping(int server, char *sname)
|
||||||
{
|
{
|
||||||
if (server <= -1)
|
if (server <= -1)
|
||||||
|
|||||||
@@ -3744,12 +3744,12 @@ Window *window_query (Window *window, char **args, char *usage)
|
|||||||
host = *args;
|
host = *args;
|
||||||
if (!strcmp(nick, "."))
|
if (!strcmp(nick, "."))
|
||||||
{
|
{
|
||||||
if (!(nick = sent_nick))
|
if (!(nick = get_server_sent_nick(window->server)))
|
||||||
say("You have not messaged anyone yet");
|
say("You have not messaged anyone yet");
|
||||||
}
|
}
|
||||||
else if (!strcmp(nick, ","))
|
else if (!strcmp(nick, ","))
|
||||||
{
|
{
|
||||||
if (!(nick = recv_nick))
|
if (!(nick = get_server_recv_nick(window->server)))
|
||||||
say("You have not recieved a message yet");
|
say("You have not recieved a message yet");
|
||||||
}
|
}
|
||||||
else if (!strcmp(nick, "*") &&
|
else if (!strcmp(nick, "*") &&
|
||||||
|
|||||||
Reference in New Issue
Block a user