1
0
mirror of https://github.com/irssi/irssi.git synced 2024-12-04 14:46:39 -05:00

Merge pull request #267 from kyak/master

Add expandos for hostname
This commit is contained in:
ailin-nemui 2015-09-21 18:47:09 +02:00
commit 211e84c1e9

View File

@ -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);