comparison pidgin/gtkmain.c @ 18119:59aec2d6ec43

propagate from branch 'im.pidgin.pidgin.2.1.0' (head 86fd5e0d8b80a9da3103e850c97f1e04a2333961) to branch 'im.pidgin.pidgin' (head 999df812d342023b977c17afda10ed0238f1f80d)
author Richard Laager <rlaager@wiktel.com>
date Sat, 16 Jun 2007 19:48:23 +0000
parents ee0899360e8b 40d51793f2d7
children 5114739a4169
comparison
equal deleted inserted replaced
18118:ab6d2763b8d8 18119:59aec2d6ec43
106 SIGPIPE, 106 SIGPIPE,
107 -1 107 -1
108 }; 108 };
109 #endif 109 #endif
110 110
111 static int 111 static void
112 dologin_named(const char *name) 112 dologin_named(const char *name)
113 { 113 {
114 PurpleAccount *account; 114 PurpleAccount *account;
115 char **names; 115 char **names;
116 int i; 116 int i;
117 int ret = -1;
118 117
119 if (name != NULL) { /* list of names given */ 118 if (name != NULL) { /* list of names given */
120 names = g_strsplit(name, ",", 64); 119 names = g_strsplit(name, ",", 64);
121 for (i = 0; names[i] != NULL; i++) { 120 for (i = 0; names[i] != NULL; i++) {
122 account = purple_accounts_find(names[i], NULL); 121 account = purple_accounts_find(names[i], NULL);
123 if (account != NULL) { /* found a user */ 122 if (account != NULL) { /* found a user */
124 ret = 0; 123 purple_account_set_enabled(account, PIDGIN_UI, TRUE);
125 purple_account_connect(account);
126 } 124 }
127 } 125 }
128 g_strfreev(names); 126 g_strfreev(names);
129 } else { /* no name given, use the first account */ 127 } else { /* no name given, use the first account */
130 GList *accounts; 128 GList *accounts;
131 129
132 accounts = purple_accounts_get_all(); 130 accounts = purple_accounts_get_all();
133 if (accounts != NULL) 131 if (accounts != NULL)
134 { 132 {
135 account = (PurpleAccount *)accounts->data; 133 account = (PurpleAccount *)accounts->data;
136 ret = 0; 134 purple_account_set_enabled(account, PIDGIN_UI, TRUE);
137 purple_account_connect(account); 135 }
138 } 136 }
139 }
140
141 return ret;
142 } 137 }
143 138
144 #ifdef HAVE_SIGNAL_H 139 #ifdef HAVE_SIGNAL_H
145 static void sighandler(int sig); 140 static void sighandler(int sig);
146 141
437 gboolean opt_nologin = FALSE; 432 gboolean opt_nologin = FALSE;
438 gboolean opt_version = FALSE; 433 gboolean opt_version = FALSE;
439 char *opt_config_dir_arg = NULL; 434 char *opt_config_dir_arg = NULL;
440 char *opt_login_arg = NULL; 435 char *opt_login_arg = NULL;
441 char *opt_session_arg = NULL; 436 char *opt_session_arg = NULL;
442 int dologin_ret = -1;
443 char *search_path; 437 char *search_path;
444 GList *accounts; 438 GList *accounts;
445 #ifdef HAVE_SIGNAL_H 439 #ifdef HAVE_SIGNAL_H
446 int sig_indx; /* for setting up signal catching */ 440 int sig_indx; /* for setting up signal catching */
447 sigset_t sigset; 441 sigset_t sigset;
796 790
797 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled")) 791 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled"))
798 pidgin_debug_window_show(); 792 pidgin_debug_window_show();
799 793
800 if (opt_login) { 794 if (opt_login) {
801 dologin_ret = dologin_named(opt_login_arg); 795 /* disable all accounts */
796 for (accounts = purple_accounts_get_all(); accounts != NULL; accounts = accounts->next) {
797 PurpleAccount *account = accounts->data;
798 purple_account_set_enabled(account, PIDGIN_UI, FALSE);
799 }
800 /* honor the startup status preference */
801 if (!purple_prefs_get_bool("/purple/savedstatus/startup_current_status"))
802 purple_savedstatus_activate(purple_savedstatus_get_startup());
803 /* now enable the requested ones */
804 dologin_named(opt_login_arg);
802 if (opt_login_arg != NULL) { 805 if (opt_login_arg != NULL) {
803 g_free(opt_login_arg); 806 g_free(opt_login_arg);
804 opt_login_arg = NULL; 807 opt_login_arg = NULL;
805 } 808 }
806 } 809 }
807 810
808 if (opt_nologin) 811 if (opt_nologin && !opt_login)
809 { 812 {
810 /* Set all accounts to "offline" */ 813 /* Set all accounts to "offline" */
811 PurpleSavedStatus *saved_status; 814 PurpleSavedStatus *saved_status;
812 815
813 /* If we've used this type+message before, lookup the transient status */ 816 /* If we've used this type+message before, lookup the transient status */
819 saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_OFFLINE); 822 saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_OFFLINE);
820 823
821 /* Set the status for each account */ 824 /* Set the status for each account */
822 purple_savedstatus_activate(saved_status); 825 purple_savedstatus_activate(saved_status);
823 } 826 }
824 else 827 else if (!opt_login)
825 { 828 {
826 /* Everything is good to go--sign on already */ 829 /* Everything is good to go--sign on already */
827 if (!purple_prefs_get_bool("/purple/savedstatus/startup_current_status")) 830 if (!purple_prefs_get_bool("/purple/savedstatus/startup_current_status"))
828 purple_savedstatus_activate(purple_savedstatus_get_startup()); 831 purple_savedstatus_activate(purple_savedstatus_get_startup());
829 purple_accounts_restore_current_statuses(); 832 purple_accounts_restore_current_statuses();