mirror of
https://github.com/irssi/irssi.git
synced 2024-12-04 14:46:39 -05:00
commit
211e84c1e9
@ -56,7 +56,7 @@ static char *expando_userhost(SERVER_REC *server, void *item, int *free_ret)
|
|||||||
{
|
{
|
||||||
IRC_SERVER_REC *ircserver;
|
IRC_SERVER_REC *ircserver;
|
||||||
const char *username;
|
const char *username;
|
||||||
char hostname[100];
|
char hostname[HOST_NAME_MAX];
|
||||||
|
|
||||||
ircserver = IRC_SERVER(server);
|
ircserver = IRC_SERVER(server);
|
||||||
|
|
||||||
@ -72,10 +72,36 @@ static char *expando_userhost(SERVER_REC *server, void *item, int *free_ret)
|
|||||||
username = ircserver->connrec->username;
|
username = ircserver->connrec->username;
|
||||||
|
|
||||||
if (gethostname(hostname, sizeof(hostname)) != 0 || *hostname == '\0')
|
if (gethostname(hostname, sizeof(hostname)) != 0 || *hostname == '\0')
|
||||||
strcpy(hostname, "??");
|
strcpy(hostname, "(none)");
|
||||||
return g_strconcat(username, "@", hostname, NULL);;
|
return g_strconcat(username, "@", hostname, NULL);;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* your hostname address (host) */
|
||||||
|
static char *expando_hostname(SERVER_REC *server, void *item, int *free_ret)
|
||||||
|
{
|
||||||
|
IRC_SERVER_REC *ircserver;
|
||||||
|
char hostname[HOST_NAME_MAX];
|
||||||
|
char **list;
|
||||||
|
char *hostname_split;
|
||||||
|
|
||||||
|
ircserver = IRC_SERVER(server);
|
||||||
|
|
||||||
|
*free_ret = TRUE;
|
||||||
|
|
||||||
|
/* prefer the _real_ /userhost reply */
|
||||||
|
if (ircserver != NULL && ircserver->userhost != NULL) {
|
||||||
|
list = g_strsplit(ircserver->userhost, "@", -1);
|
||||||
|
hostname_split = g_strdup(list[1]);
|
||||||
|
g_strfreev(list);
|
||||||
|
return hostname_split;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* haven't received userhost reply yet. guess something */
|
||||||
|
if (gethostname(hostname, sizeof(hostname)) != 0 || *hostname == '\0')
|
||||||
|
strcpy(hostname, "(none)");
|
||||||
|
return g_strdup(hostname);
|
||||||
|
}
|
||||||
|
|
||||||
/* user mode in active server */
|
/* user mode in active server */
|
||||||
static char *expando_usermode(SERVER_REC *server, void *item, int *free_ret)
|
static char *expando_usermode(SERVER_REC *server, void *item, int *free_ret)
|
||||||
{
|
{
|
||||||
@ -136,6 +162,9 @@ void irc_expandos_init(void)
|
|||||||
expando_create("X", expando_userhost,
|
expando_create("X", expando_userhost,
|
||||||
"window changed", EXPANDO_ARG_NONE,
|
"window changed", EXPANDO_ARG_NONE,
|
||||||
"window server changed", EXPANDO_ARG_WINDOW, NULL);
|
"window server changed", EXPANDO_ARG_WINDOW, NULL);
|
||||||
|
expando_create("x", expando_hostname,
|
||||||
|
"window changed", EXPANDO_ARG_NONE,
|
||||||
|
"window server changed", EXPANDO_ARG_WINDOW, NULL);
|
||||||
expando_create("usermode", expando_usermode,
|
expando_create("usermode", expando_usermode,
|
||||||
"window changed", EXPANDO_ARG_NONE,
|
"window changed", EXPANDO_ARG_NONE,
|
||||||
"window server changed", EXPANDO_ARG_WINDOW,
|
"window server changed", EXPANDO_ARG_WINDOW,
|
||||||
@ -164,6 +193,7 @@ void irc_expandos_deinit(void)
|
|||||||
expando_destroy("H", expando_server_numeric);
|
expando_destroy("H", expando_server_numeric);
|
||||||
expando_destroy("S", expando_servername);
|
expando_destroy("S", expando_servername);
|
||||||
expando_destroy("X", expando_userhost);
|
expando_destroy("X", expando_userhost);
|
||||||
|
expando_destroy("x", expando_hostname);
|
||||||
expando_destroy("usermode", expando_usermode);
|
expando_destroy("usermode", expando_usermode);
|
||||||
expando_destroy("cumode", expando_cumode);
|
expando_destroy("cumode", expando_cumode);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user