Mercurial > ~mikael > mcabber > hg
comparison mcabber/src/main.c @ 374:bd5638c21834
Improve logging system (traces)
There are now two trace logging levels:
* tracelog_level = 1:
Most messages from the log window are written to disk (LPRINT_LOG)
* tracelog_level =2:
LPRINT_LOG & LPRINT_DEBUG messages are written to disk
The trace file name is set with the "tracelog_file" option.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Mon, 25 Jul 2005 21:46:35 +0100 |
parents | 33b8e801ffa6 |
children | 6e895f397474 |
comparison
equal
deleted
inserted
replaced
373:af2f8ddf6a1b | 374:bd5638c21834 |
---|---|
54 username = settings_opt_get("username"); | 54 username = settings_opt_get("username"); |
55 password = settings_opt_get("password"); | 55 password = settings_opt_get("password"); |
56 resource = settings_opt_get("resource"); | 56 resource = settings_opt_get("resource"); |
57 | 57 |
58 if (!servername) { | 58 if (!servername) { |
59 scr_LogPrint("Server name has not been specified!\n"); | 59 scr_LogPrint(LPRINT_NORMAL, "Server name has not been specified!"); |
60 return; | 60 return; |
61 } | 61 } |
62 if (!username) { | 62 if (!username) { |
63 scr_LogPrint("User name has not been specified!\n"); | 63 scr_LogPrint(LPRINT_NORMAL, "User name has not been specified!"); |
64 return; | 64 return; |
65 } | 65 } |
66 if (!password) { | 66 if (!password) { |
67 scr_LogPrint("Password has not been specified!\n"); | 67 scr_LogPrint(LPRINT_NORMAL, "Password has not been specified!"); |
68 return; | 68 return; |
69 } | 69 } |
70 if (!resource) | 70 if (!resource) |
71 resource = "mcabber"; | 71 resource = "mcabber"; |
72 | 72 |
74 port = (unsigned int) settings_opt_get_int("port"); | 74 port = (unsigned int) settings_opt_get_int("port"); |
75 | 75 |
76 jb_set_priority(settings_opt_get_int("priority")); | 76 jb_set_priority(settings_opt_get_int("priority")); |
77 | 77 |
78 /* Connect to server */ | 78 /* Connect to server */ |
79 ut_WriteLog("Connecting to server: %s\n", servername); | 79 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, "Connecting to server: %s", |
80 scr_LogPrint("Connecting to server: %s", servername); | 80 servername); |
81 if (port) { | 81 if (port) |
82 ut_WriteLog(" using port %d\n", port); | 82 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " using port %d", port); |
83 scr_LogPrint(" using port %d", port); | |
84 } | |
85 | 83 |
86 jid = compose_jid(username, servername, resource); | 84 jid = compose_jid(username, servername, resource); |
87 jc = jb_connect(jid, port, ssl, password); | 85 jc = jb_connect(jid, port, ssl, password); |
88 g_free(jid); | 86 g_free(jid); |
89 | 87 |
90 if (!jc) { | 88 if (!jc) |
91 ut_WriteLog("\tConnection error!!!\n"); | 89 scr_LogPrint(LPRINT_LOGNORM, "Error connecting to (%s)", servername); |
92 scr_LogPrint("Error connecting to (%s)\n", servername); | |
93 } | |
94 | 90 |
95 jb_reset_keepalive(); | 91 jb_reset_keepalive(); |
96 } | 92 } |
97 | 93 |
98 void mcabber_disconnect(const char *msg) | 94 void mcabber_disconnect(const char *msg) |
112 pid_t pid; | 108 pid_t pid; |
113 do { | 109 do { |
114 pid = waitpid (WAIT_ANY, &status, WNOHANG); | 110 pid = waitpid (WAIT_ANY, &status, WNOHANG); |
115 } while (pid > 0); | 111 } while (pid > 0); |
116 //if (pid < 0) | 112 //if (pid < 0) |
117 // ut_WriteLog("Error in waitpid: errno=%d\n", errno); | 113 // scr_LogPrint(LPRINT_LOGNORM, "Error in waitpid: errno=%d", errno); |
118 signal(SIGCHLD, sig_handler); | 114 signal(SIGCHLD, sig_handler); |
119 } else if (signum == SIGTERM) { | 115 } else if (signum == SIGTERM) { |
120 mcabber_disconnect("Killed by SIGTERM"); | 116 mcabber_disconnect("Killed by SIGTERM"); |
121 } else if (signum == SIGINT) { // Ctrl-C | 117 } else if (signum == SIGINT) { // Ctrl-C |
122 static time_t LastSigtermTime; | 118 static time_t LastSigtermTime; |
126 if (now - LastSigtermTime < 2) | 122 if (now - LastSigtermTime < 2) |
127 mcabber_disconnect("Killed by SIGINT"); | 123 mcabber_disconnect("Killed by SIGINT"); |
128 LastSigtermTime = now; | 124 LastSigtermTime = now; |
129 signal(SIGINT, sig_handler); | 125 signal(SIGINT, sig_handler); |
130 scr_handle_sigint(); | 126 scr_handle_sigint(); |
131 scr_LogPrint("Hit Ctrl-C twice to leave mcabber"); | 127 scr_LogPrint(LPRINT_NORMAL, "Hit Ctrl-C twice to leave mcabber"); |
132 } else { | 128 } else { |
133 ut_WriteLog("Caught signal: %d\n", signum); | 129 scr_LogPrint(LPRINT_LOGNORM, "Caught signal: %d", signum); |
134 } | 130 } |
135 } | 131 } |
136 | 132 |
137 static void ask_password(void) | 133 static void ask_password(void) |
138 { | 134 { |
184 int ret; | 180 int ret; |
185 unsigned int refresh = 0; | 181 unsigned int refresh = 0; |
186 | 182 |
187 credits(); | 183 credits(); |
188 | 184 |
189 /* Set this >0 to enable log */ | |
190 /* Note: debug can be enabled via the config file */ | |
191 ut_InitDebug(0, NULL); | |
192 | |
193 ut_WriteLog("Setting signals handlers...\n"); | |
194 signal(SIGTERM, sig_handler); | 185 signal(SIGTERM, sig_handler); |
195 signal(SIGINT, sig_handler); | 186 signal(SIGINT, sig_handler); |
196 signal(SIGCHLD, sig_handler); | 187 signal(SIGCHLD, sig_handler); |
197 | 188 |
198 /* Parse command line options */ | 189 /* Parse command line options */ |
213 } | 204 } |
214 | 205 |
215 /* Initialize commands system */ | 206 /* Initialize commands system */ |
216 cmd_init(); | 207 cmd_init(); |
217 | 208 |
218 if (configFile) | |
219 ut_WriteLog("Setting config file: %s\n", configFile); | |
220 | |
221 /* Parsing config file... */ | 209 /* Parsing config file... */ |
222 ut_WriteLog("Parsing config file...\n"); | |
223 ret = cfg_read_file(configFile); | 210 ret = cfg_read_file(configFile); |
211 /* free() configFile if it has been allocated during options parsing */ | |
224 if (configFile) g_free(configFile); | 212 if (configFile) g_free(configFile); |
225 /* Leave if there was an error in the config. file */ | 213 /* Leave if there was an error in the config. file */ |
226 if (ret) | 214 if (ret) |
227 exit(EXIT_FAILURE); | 215 exit(EXIT_FAILURE); |
228 | 216 |
229 optstring = settings_opt_get("debug"); | 217 optstring = settings_opt_get("tracelog_file"); |
230 if (optstring) ut_InitDebug(1, optstring); | 218 if (optstring) |
219 ut_InitDebug(settings_opt_get_int("tracelog_level"), optstring); | |
231 | 220 |
232 /* If no password is stored, we ask for it before entering | 221 /* If no password is stored, we ask for it before entering |
233 ncurses mode */ | 222 ncurses mode */ |
234 if (!settings_opt_get("password")) | 223 if (!settings_opt_get("password")) |
235 ask_password(); | 224 ask_password(); |
236 | 225 |
237 /* Initialize N-Curses */ | 226 /* Initialize N-Curses */ |
238 ut_WriteLog("Initializing N-Curses...\n"); | 227 scr_LogPrint(LPRINT_DEBUG, "Initializing N-Curses..."); |
239 scr_InitCurses(); | 228 scr_InitCurses(); |
240 | 229 |
241 ut_WriteLog("Drawing main window...\n"); | 230 scr_LogPrint(LPRINT_DEBUG, "Drawing main window..."); |
242 scr_DrawMainWindow(TRUE); | 231 scr_DrawMainWindow(TRUE); |
243 | 232 |
244 optval = (settings_opt_get_int("logging") > 0); | 233 optval = (settings_opt_get_int("logging") > 0); |
245 optval2 = (settings_opt_get_int("load_logs") > 0); | 234 optval2 = (settings_opt_get_int("load_logs") > 0); |
246 if (optval || optval2) | 235 if (optval || optval2) |
252 | 241 |
253 ping = 40; | 242 ping = 40; |
254 if (settings_opt_get("pinginterval")) | 243 if (settings_opt_get("pinginterval")) |
255 ping = (unsigned int) settings_opt_get_int("pinginterval"); | 244 ping = (unsigned int) settings_opt_get_int("pinginterval"); |
256 jb_set_keepalive_delay(ping); | 245 jb_set_keepalive_delay(ping); |
257 ut_WriteLog("Ping interval stablished: %d secs\n", ping); | 246 scr_LogPrint(LPRINT_DEBUG, "Ping interval established: %d secs", ping); |
258 | 247 |
259 if (settings_opt_get_int("hide_offline_buddies") > 0) | 248 if (settings_opt_get_int("hide_offline_buddies") > 0) |
260 buddylist_set_hide_offline_buddies(TRUE); | 249 buddylist_set_hide_offline_buddies(TRUE); |
261 | 250 |
262 /* Connection */ | 251 /* Connection */ |
263 if (settings_opt_get("password")) | 252 if (settings_opt_get("password")) |
264 mcabber_connect(); | 253 mcabber_connect(); |
265 else | 254 else |
266 scr_LogPrint("Can't connect: no password supplied"); | 255 scr_LogPrint(LPRINT_LOGNORM, "Can't connect: no password supplied"); |
267 | 256 |
268 ut_WriteLog("Entering into main loop...\n\n"); | 257 scr_LogPrint(LPRINT_DEBUG, "Entering into main loop..."); |
269 ut_WriteLog("Ready to send/receive messages...\n"); | |
270 | 258 |
271 for (ret = 0 ; ret != 255 ; ) { | 259 for (ret = 0 ; ret != 255 ; ) { |
272 key = scr_Getch(); | 260 key = scr_Getch(); |
273 | 261 |
274 /* The refresh is really an ugly hack, but we need to call doupdate() | 262 /* The refresh is really an ugly hack, but we need to call doupdate() |