aboutsummaryrefslogtreecommitdiffstats
path: root/irc.c
diff options
context:
space:
mode:
Diffstat (limited to 'irc.c')
-rw-r--r--irc.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/irc.c b/irc.c
index f5448495..29ac2a11 100644
--- a/irc.c
+++ b/irc.c
@@ -31,6 +31,12 @@ static gboolean irc_userping( gpointer _irc );
GSList *irc_connection_list = NULL;
+static char *passchange (irc_t *irc, void *set, char *value)
+{
+ irc_setpass (irc, value);
+ return (NULL);
+}
+
irc_t *irc_new( int fd )
{
irc_t *irc = g_new0( irc_t, 1 );
@@ -128,6 +134,7 @@ irc_t *irc_new( int fd )
set_add( irc, "strip_html", "true", NULL );
set_add( irc, "to_char", ": ", set_eval_to_char );
set_add( irc, "typing_notice", "false", set_eval_bool );
+ set_add( irc, "password", NULL, passchange);
conf_loaddefaults( irc );
@@ -153,7 +160,7 @@ void irc_free(irc_t * irc)
log_message( LOGLVL_INFO, "Destroying connection with fd %d", irc->fd );
if( irc->status >= USTATUS_IDENTIFIED && set_getint( irc, "save_on_quit" ) )
- if( !bitlbee_save( irc ) )
+ if( storage_save( irc, TRUE ) != STORAGE_OK )
irc_usermsg( irc, "Error while saving settings!" );
if( irc->ping_source_id > 0 )
@@ -260,6 +267,20 @@ void irc_free(irc_t * irc)
g_main_quit( global.loop );
}
+/* USE WITH CAUTION!
+ Sets pass without checking */
+void irc_setpass (irc_t *irc, const char *pass)
+{
+ if (irc->password) g_free (irc->password);
+
+ if (pass) {
+ irc->password = g_strdup (pass);
+ irc_usermsg (irc, "Password successfully changed");
+ } else {
+ irc->password = NULL;
+ }
+}
+
int irc_process( irc_t *irc )
{
char **lines, *temp;
@@ -1509,7 +1530,7 @@ int irc_privmsg( irc_t *irc, user_t *u, char *type, char *to, char *prefix, char
else
{
irc_write( irc, ":%s!%s@%s %s %s :%s%s", u->nick, u->user, u->host,
- type, to, prefix, line );
+ type, to, prefix ? prefix : "", line );
}
line = s + 1;
}