diff options
author | Sebastien Helleu <flashcode@flashtux.org> | 2006-08-05 19:33:48 +0000 |
---|---|---|
committer | Sebastien Helleu <flashcode@flashtux.org> | 2006-08-05 19:33:48 +0000 |
commit | fb607cb4abe142758e68062110fd1480d319d84a (patch) | |
tree | 8161d9aff1d0a93790f69b5ce0b8b122f8a38983 /src | |
parent | b2183ee3edbfceb66a5705fcfc601c6e72728049 (diff) | |
download | weechat-fb607cb4abe142758e68062110fd1480d319d84a.zip |
Fixed DCC restore after /upgrade (now order is saved)
Diffstat (limited to 'src')
-rw-r--r-- | src/common/session.c | 4 | ||||
-rw-r--r-- | src/irc/irc-dcc.c | 5 | ||||
-rw-r--r-- | src/irc/irc.h | 1 |
3 files changed, 8 insertions, 2 deletions
diff --git a/src/common/session.c b/src/common/session.c index 6d84d4335..788d1bda8 100644 --- a/src/common/session.c +++ b/src/common/session.c @@ -293,8 +293,8 @@ session_save_dcc (FILE *file) rc = 1; - for (ptr_dcc = dcc_list; ptr_dcc; - ptr_dcc = ptr_dcc->next_dcc) + for (ptr_dcc = last_dcc; ptr_dcc; + ptr_dcc = ptr_dcc->prev_dcc) { rc = rc && (session_write_id (file, SESSION_OBJ_DCC)); rc = rc && (session_write_str (file, SESSION_DCC_SERVER, (ptr_dcc->server) ? ptr_dcc->server->name : NULL)); diff --git a/src/irc/irc-dcc.c b/src/irc/irc-dcc.c index 985c7160e..9c4d17893 100644 --- a/src/irc/irc-dcc.c +++ b/src/irc/irc-dcc.c @@ -50,6 +50,7 @@ t_irc_dcc *dcc_list = NULL; /* DCC files & chat list */ +t_irc_dcc *last_dcc = NULL; /* last DCC in list */ char *dcc_status_string[] = /* strings for DCC status */ { N_("Waiting"), N_("Connecting"), N_("Active"), N_("Done"), N_("Failed"), N_("Aborted") }; @@ -385,6 +386,8 @@ dcc_free (t_irc_dcc *ptr_dcc) } /* remove DCC from list */ + if (last_dcc == ptr_dcc) + last_dcc = ptr_dcc->prev_dcc; if (ptr_dcc->prev_dcc) { (ptr_dcc->prev_dcc)->next_dcc = ptr_dcc->next_dcc; @@ -749,6 +752,8 @@ dcc_alloc () new_dcc->next_dcc = dcc_list; if (dcc_list) dcc_list->prev_dcc = new_dcc; + else + last_dcc = new_dcc; dcc_list = new_dcc; return new_dcc; diff --git a/src/irc/irc.h b/src/irc/irc.h index 45f59b16c..17822cf1d 100644 --- a/src/irc/irc.h +++ b/src/irc/irc.h @@ -344,6 +344,7 @@ extern t_irc_server *irc_servers; extern t_irc_message *recv_msgq, *msgq_last_msg; extern int check_away; extern t_irc_dcc *dcc_list; +extern t_irc_dcc *last_dcc; extern char *dcc_status_string[6]; extern char *channel_modes; extern char *nick_modes; |