annotate mcabber/src/main.c @ 830:80434fde7cfa

Display presence notification timestamps when they exist These timestamps were used in the roster, but not in the buffer window message nor in the history logfile. Reported by "ze".
author Mikael Berthe <mikael@lilotux.net>
date Wed, 03 May 2006 11:28:41 +0200
parents 04edcb6d7ee3
children a9161d2dc414
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
307
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
1 /*
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
2 * main.c
393
f8f3c7493457 Whitespace cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 389
diff changeset
3 *
699
ee03b56b93ee Update Copyright (2006)
Mikael Berthe <mikael@lilotux.net>
parents: 676
diff changeset
4 * Copyright (C) 2005, 2006 Mikael Berthe <bmikael@lists.lilotux.net>
307
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
5 * Parts of this file come from Cabber <cabber@ajmacias.com>
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
6 *
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
7 * This program is free software; you can redistribute it and/or modify
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
8 * it under the terms of the GNU General Public License as published by
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or (at
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
10 * your option) any later version.
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
11 *
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
12 * This program is distributed in the hope that it will be useful, but
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
15 * General Public License for more details.
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
16 *
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
17 * You should have received a copy of the GNU General Public License
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
18 * along with this program; if not, write to the Free Software
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
20 * USA
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
21 */
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
22
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
23 #include <stdio.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
24 #include <stdlib.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
25 #include <unistd.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
26 #include <string.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
27 #include <signal.h>
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
28 #include <termios.h>
28
0cd8025eebee [/trunk] Changeset 44 by mikael
mikael
parents: 27
diff changeset
29 #include <getopt.h>
163
a8f7dc0a56cb [/trunk] Changeset 175 by mikael
mikael
parents: 160
diff changeset
30 #include <sys/types.h>
a8f7dc0a56cb [/trunk] Changeset 175 by mikael
mikael
parents: 160
diff changeset
31 #include <sys/wait.h>
169
0ed6099b5a54 [/trunk] Changeset 181 by mikael
mikael
parents: 165
diff changeset
32 #include <glib.h>
404
fb2325d24d13 Drop harddefines.h
Mikael Berthe <mikael@lilotux.net>
parents: 403
diff changeset
33 #include <config.h>
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
34
81
0bd578421ce9 [/trunk] Changeset 95 by mikael
mikael
parents: 77
diff changeset
35 #include "jabglue.h"
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
36 #include "screen.h"
279
f5dd437c057b Rewrite the settings system
Mikael Berthe <mikael@lilotux.net>
parents: 272
diff changeset
37 #include "settings.h"
102
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 96
diff changeset
38 #include "roster.h"
96
8b2703ccc4be [/trunk] Changeset 110 by mikael
mikael
parents: 88
diff changeset
39 #include "commands.h"
113
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 112
diff changeset
40 #include "histolog.h"
163
a8f7dc0a56cb [/trunk] Changeset 175 by mikael
mikael
parents: 160
diff changeset
41 #include "hooks.h"
81
0bd578421ce9 [/trunk] Changeset 95 by mikael
mikael
parents: 77
diff changeset
42 #include "utils.h"
781
d3af6877a7df Add --enable-hgcset to configure script
Mikael Berthe <mikael@lilotux.net>
parents: 779
diff changeset
43
d3af6877a7df Add --enable-hgcset to configure script
Mikael Berthe <mikael@lilotux.net>
parents: 779
diff changeset
44 #ifdef ENABLE_HGCSET
d3af6877a7df Add --enable-hgcset to configure script
Mikael Berthe <mikael@lilotux.net>
parents: 779
diff changeset
45 # include "hgcset.h"
d3af6877a7df Add --enable-hgcset to configure script
Mikael Berthe <mikael@lilotux.net>
parents: 779
diff changeset
46 #endif
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
47
801
d8e0a1ce3e8a Define WAIT_ANY if needed.
Soren Andersen <somian@pobox.com>
parents: 789
diff changeset
48 #ifndef WAIT_ANY
d8e0a1ce3e8a Define WAIT_ANY if needed.
Soren Andersen <somian@pobox.com>
parents: 789
diff changeset
49 # define WAIT_ANY -1
d8e0a1ce3e8a Define WAIT_ANY if needed.
Soren Andersen <somian@pobox.com>
parents: 789
diff changeset
50 #endif
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
51
789
1fa93cc6f5e3 Correctly restore term settings when interrupting the password query
Mikael Berthe <mikael@lilotux.net>
parents: 784
diff changeset
52 static struct termios *backup_termios;
1fa93cc6f5e3 Correctly restore term settings when interrupting the password query
Mikael Berthe <mikael@lilotux.net>
parents: 784
diff changeset
53
777
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
54 char *mcabber_version(void)
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
55 {
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
56 char *ver;
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
57 #ifdef HGCSET
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
58 ver = g_strdup_printf("%s (%s)", PACKAGE_VERSION, HGCSET);
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
59 #else
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
60 ver = g_strdup(PACKAGE_VERSION);
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
61 #endif
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
62 return ver;
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
63 }
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
64
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
65 void mcabber_connect(void)
35
a8ceaa3005fd [/trunk] Changeset 51 by mikael
mikael
parents: 30
diff changeset
66 {
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
67 const char *username, *password, *resource, *servername;
429
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
68 const char *proxy_host;
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
69 char *jid;
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
70 int ssl;
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
71 unsigned int port;
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
72
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
73 servername = settings_opt_get("server");
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
74 username = settings_opt_get("username");
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
75 password = settings_opt_get("password");
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
76 resource = settings_opt_get("resource");
429
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
77 proxy_host = settings_opt_get("proxy_host");
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
78
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
79 if (!servername) {
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
80 scr_LogPrint(LPRINT_NORMAL, "Server name has not been specified!");
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
81 return;
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
82 }
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
83 if (!username) {
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
84 scr_LogPrint(LPRINT_NORMAL, "User name has not been specified!");
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
85 return;
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
86 }
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
87 if (!password) {
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
88 scr_LogPrint(LPRINT_NORMAL, "Password has not been specified!");
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
89 return;
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
90 }
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
91 if (!resource)
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
92 resource = "mcabber";
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
93
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
94 ssl = (settings_opt_get_int("ssl") > 0);
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
95 port = (unsigned int) settings_opt_get_int("port");
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
96
815
04edcb6d7ee3 Warn when ssl is request but not compiled in
Mikael Berthe <mikael@lilotux.net>
parents: 801
diff changeset
97 #if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS)
04edcb6d7ee3 Warn when ssl is request but not compiled in
Mikael Berthe <mikael@lilotux.net>
parents: 801
diff changeset
98 if (ssl) {
04edcb6d7ee3 Warn when ssl is request but not compiled in
Mikael Berthe <mikael@lilotux.net>
parents: 801
diff changeset
99 scr_LogPrint(LPRINT_LOGNORM,
04edcb6d7ee3 Warn when ssl is request but not compiled in
Mikael Berthe <mikael@lilotux.net>
parents: 801
diff changeset
100 "** Warning: SSL is NOT available, ignoring 'ssl' value");
04edcb6d7ee3 Warn when ssl is request but not compiled in
Mikael Berthe <mikael@lilotux.net>
parents: 801
diff changeset
101 ssl = 0;
04edcb6d7ee3 Warn when ssl is request but not compiled in
Mikael Berthe <mikael@lilotux.net>
parents: 801
diff changeset
102 }
04edcb6d7ee3 Warn when ssl is request but not compiled in
Mikael Berthe <mikael@lilotux.net>
parents: 801
diff changeset
103 #endif
04edcb6d7ee3 Warn when ssl is request but not compiled in
Mikael Berthe <mikael@lilotux.net>
parents: 801
diff changeset
104
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
105 /* Connect to server */
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
106 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, "Connecting to server: %s",
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
107 servername);
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
108 if (port)
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
109 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " using port %d", port);
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
110
429
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
111 if (proxy_host) {
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
112 int proxy_port = settings_opt_get_int("proxy_port");
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
113 if (proxy_port <= 0 || proxy_port > 65535) {
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
114 scr_LogPrint(LPRINT_LOGNORM, "Invalid proxy port: %d", proxy_port);
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
115 } else {
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
116 const char *proxy_user, *proxy_pass;
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
117 proxy_user = settings_opt_get("proxy_user");
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
118 proxy_pass = settings_opt_get("proxy_pass");
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
119 // Proxy initialization
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
120 cw_setproxy(proxy_host, proxy_port, proxy_user, proxy_pass);
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
121 scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " using proxy %s:%d",
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
122 proxy_host, proxy_port);
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
123 }
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
124 }
0bb3d37579aa Enable proxy support
Mikael Berthe <mikael@lilotux.net>
parents: 415
diff changeset
125
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
126 jid = compose_jid(username, servername, resource);
403
17aa60c6dc63 Allow a different server name than the jid domain name
Mikael Berthe <mikael@lilotux.net>
parents: 393
diff changeset
127 jc = jb_connect(jid, servername, port, ssl, password);
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
128 g_free(jid);
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
129
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
130 if (!jc)
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
131 scr_LogPrint(LPRINT_LOGNORM, "Error connecting to (%s)", servername);
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
132
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
133 jb_reset_keepalive();
35
a8ceaa3005fd [/trunk] Changeset 51 by mikael
mikael
parents: 30
diff changeset
134 }
a8ceaa3005fd [/trunk] Changeset 51 by mikael
mikael
parents: 30
diff changeset
135
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
136 void mcabber_disconnect(const char *msg)
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
137 {
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
138 jb_disconnect();
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
139 scr_TerminateCurses();
789
1fa93cc6f5e3 Correctly restore term settings when interrupting the password query
Mikael Berthe <mikael@lilotux.net>
parents: 784
diff changeset
140
1fa93cc6f5e3 Correctly restore term settings when interrupting the password query
Mikael Berthe <mikael@lilotux.net>
parents: 784
diff changeset
141 // Restore term settings, if needed.
1fa93cc6f5e3 Correctly restore term settings when interrupting the password query
Mikael Berthe <mikael@lilotux.net>
parents: 784
diff changeset
142 if (backup_termios)
1fa93cc6f5e3 Correctly restore term settings when interrupting the password query
Mikael Berthe <mikael@lilotux.net>
parents: 784
diff changeset
143 tcsetattr(fileno(stdin), TCSAFLUSH, backup_termios);
1fa93cc6f5e3 Correctly restore term settings when interrupting the password query
Mikael Berthe <mikael@lilotux.net>
parents: 784
diff changeset
144
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
145 if (msg)
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
146 fprintf(stderr, "%s\n", msg);
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
147 printf("Bye!\n");
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
148 exit(EXIT_SUCCESS);
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
149 }
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
150
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
151 void sig_handler(int signum)
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
152 {
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
153 if (signum == SIGCHLD) {
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
154 int status;
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
155 pid_t pid;
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
156 do {
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
157 pid = waitpid (WAIT_ANY, &status, WNOHANG);
676
80d4959422ca New "eventcmd_checkstatus" option
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
158 // Check the exit status value if 'eventcmd_checkstatus' is set
80d4959422ca New "eventcmd_checkstatus" option
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
159 if (settings_opt_get_int("eventcmd_checkstatus")) {
80d4959422ca New "eventcmd_checkstatus" option
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
160 if (pid > 0) {
80d4959422ca New "eventcmd_checkstatus" option
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
161 // exit status 2 -> beep
80d4959422ca New "eventcmd_checkstatus" option
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
162 if (WIFEXITED(status) && WEXITSTATUS(status) == 2) {
80d4959422ca New "eventcmd_checkstatus" option
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
163 scr_Beep();
80d4959422ca New "eventcmd_checkstatus" option
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
164 }
80d4959422ca New "eventcmd_checkstatus" option
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
165 }
80d4959422ca New "eventcmd_checkstatus" option
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
166 }
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
167 } while (pid > 0);
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
168 signal(SIGCHLD, sig_handler);
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
169 } else if (signum == SIGTERM) {
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
170 mcabber_disconnect("Killed by SIGTERM");
389
6e895f397474 Ncurses changes + Ctrl-C does not send a signal anylore
Mikael Berthe <mikael@lilotux.net>
parents: 374
diff changeset
171 } else if (signum == SIGINT) {
6e895f397474 Ncurses changes + Ctrl-C does not send a signal anylore
Mikael Berthe <mikael@lilotux.net>
parents: 374
diff changeset
172 mcabber_disconnect("Killed by SIGINT");
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
173 } else {
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
174 scr_LogPrint(LPRINT_LOGNORM, "Caught signal: %d", signum);
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
175 }
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
176 }
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
177
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 333
diff changeset
178 static void ask_password(void)
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
179 {
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
180 char *password, *p;
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
181 size_t passsize = 128;
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
182 struct termios orig, new;
482
2ea7591584ab Use fgets() instead of getline()
Mikael Berthe <mikael@lilotux.net>
parents: 429
diff changeset
183
2ea7591584ab Use fgets() instead of getline()
Mikael Berthe <mikael@lilotux.net>
parents: 429
diff changeset
184 password = g_new0(char, passsize);
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
185
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
186 /* Turn echoing off and fail if we can't. */
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
187 if (tcgetattr(fileno(stdin), &orig) != 0) return;
789
1fa93cc6f5e3 Correctly restore term settings when interrupting the password query
Mikael Berthe <mikael@lilotux.net>
parents: 784
diff changeset
188 backup_termios = &orig;
1fa93cc6f5e3 Correctly restore term settings when interrupting the password query
Mikael Berthe <mikael@lilotux.net>
parents: 784
diff changeset
189
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
190 new = orig;
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
191 new.c_lflag &= ~ECHO;
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
192 if (tcsetattr(fileno(stdin), TCSAFLUSH, &new) != 0) return;
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
193
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
194 /* Read the password. */
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
195 printf("Please enter password: ");
482
2ea7591584ab Use fgets() instead of getline()
Mikael Berthe <mikael@lilotux.net>
parents: 429
diff changeset
196 fgets(password, passsize, stdin);
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
197
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
198 /* Restore terminal. */
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
199 tcsetattr(fileno(stdin), TCSAFLUSH, &orig);
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
200 printf("\n");
789
1fa93cc6f5e3 Correctly restore term settings when interrupting the password query
Mikael Berthe <mikael@lilotux.net>
parents: 784
diff changeset
201 backup_termios = NULL;
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
202
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
203 for (p = (char*)password; *p; p++)
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
204 ;
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
205 for ( ; p > (char*)password ; p--)
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
206 if (*p == '\n' || *p == '\r') *p = 0;
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
207
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
208 settings_set(SETTINGS_TYPE_OPTION, "password", password);
482
2ea7591584ab Use fgets() instead of getline()
Mikael Berthe <mikael@lilotux.net>
parents: 429
diff changeset
209 g_free(password);
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
210 return;
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
211 }
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
212
784
d7f3b58db522 Display hgcset (if defined) at startup
Mikael Berthe <mikael@lilotux.net>
parents: 781
diff changeset
213 static void credits(void)
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
214 {
784
d7f3b58db522 Display hgcset (if defined) at startup
Mikael Berthe <mikael@lilotux.net>
parents: 781
diff changeset
215 char *v = mcabber_version();
d7f3b58db522 Display hgcset (if defined) at startup
Mikael Berthe <mikael@lilotux.net>
parents: 781
diff changeset
216 printf("MCabber %s -- Email: mcabber [at] lilotux [dot] net\n", v);
d7f3b58db522 Display hgcset (if defined) at startup
Mikael Berthe <mikael@lilotux.net>
parents: 781
diff changeset
217 g_free(v);
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
218 }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
219
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
220 int main(int argc, char **argv)
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
221 {
169
0ed6099b5a54 [/trunk] Changeset 181 by mikael
mikael
parents: 165
diff changeset
222 char *configFile = NULL;
281
f562b9af2de7 Add "const" specifier in prototypes
Mikael Berthe <mikael@lilotux.net>
parents: 279
diff changeset
223 const char *optstring;
177
a51ce78a0e2a [/trunk] Changeset 189 by mikael
mikael
parents: 170
diff changeset
224 int optval, optval2;
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
225 int key;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
226 unsigned int ping;
333
db5bebe96c89 New config. file parsing
Mikael Berthe <mikael@lilotux.net>
parents: 322
diff changeset
227 int ret;
151
b69c0b7a23e3 [/trunk] Changeset 163 by mikael
mikael
parents: 149
diff changeset
228 unsigned int refresh = 0;
761
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 699
diff changeset
229 keycode kcode;
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
230
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
231 credits();
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
232
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
233 signal(SIGTERM, sig_handler);
312
f0b7ff2df7e8 Ctrl-C does not terminate mcabber
Mikael Berthe <mikael@lilotux.net>
parents: 307
diff changeset
234 signal(SIGINT, sig_handler);
163
a8f7dc0a56cb [/trunk] Changeset 175 by mikael
mikael
parents: 160
diff changeset
235 signal(SIGCHLD, sig_handler);
413
f7e4b0424081 Ignore SIGPIPE
Mikael Berthe <mikael@lilotux.net>
parents: 404
diff changeset
236 signal(SIGPIPE, SIG_IGN);
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
237
77
32f54ad6d729 [/trunk] Changeset 91 by mikael
mikael
parents: 70
diff changeset
238 /* Parse command line options */
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
239 while (1) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
240 int c = getopt(argc, argv, "hf:");
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
241 if (c == -1) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
242 break;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
243 } else
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
244 switch (c) {
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
245 case 'h':
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
246 printf("Usage: %s [-f mcabberrc_file]\n\n", argv[0]);
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
247 printf("Thanks to AjMacias for cabber!\n\n");
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
248 return 0;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
249 case 'f':
169
0ed6099b5a54 [/trunk] Changeset 181 by mikael
mikael
parents: 165
diff changeset
250 configFile = g_strdup(optarg);
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
251 break;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
252 }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
253 }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
254
333
db5bebe96c89 New config. file parsing
Mikael Berthe <mikael@lilotux.net>
parents: 322
diff changeset
255 /* Initialize commands system */
db5bebe96c89 New config. file parsing
Mikael Berthe <mikael@lilotux.net>
parents: 322
diff changeset
256 cmd_init();
779
057ffe7c43dc Initialize locale charset earlier
Mikael Berthe <mikael@lilotux.net>
parents: 777
diff changeset
257 /* Initialize charset */
057ffe7c43dc Initialize locale charset earlier
Mikael Berthe <mikael@lilotux.net>
parents: 777
diff changeset
258 scr_InitLocaleCharSet();
333
db5bebe96c89 New config. file parsing
Mikael Berthe <mikael@lilotux.net>
parents: 322
diff changeset
259
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
260 /* Parsing config file... */
341
dea407d53fe6 Improve configuration file reading
Mikael Berthe <mikael@lilotux.net>
parents: 336
diff changeset
261 ret = cfg_read_file(configFile);
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
262 /* free() configFile if it has been allocated during options parsing */
774
46304b773a44 Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents: 772
diff changeset
263 g_free(configFile);
333
db5bebe96c89 New config. file parsing
Mikael Berthe <mikael@lilotux.net>
parents: 322
diff changeset
264 /* Leave if there was an error in the config. file */
db5bebe96c89 New config. file parsing
Mikael Berthe <mikael@lilotux.net>
parents: 322
diff changeset
265 if (ret)
db5bebe96c89 New config. file parsing
Mikael Berthe <mikael@lilotux.net>
parents: 322
diff changeset
266 exit(EXIT_FAILURE);
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
267
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
268 optstring = settings_opt_get("tracelog_file");
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
269 if (optstring)
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
270 ut_InitDebug(settings_opt_get_int("tracelog_level"), optstring);
138
250f872c722f [/trunk] Changeset 150 by mikael
mikael
parents: 135
diff changeset
271
306
b2d11b11675f Fix interactive password prompt
Mikael Berthe <mikael@lilotux.net>
parents: 300
diff changeset
272 /* If no password is stored, we ask for it before entering
b2d11b11675f Fix interactive password prompt
Mikael Berthe <mikael@lilotux.net>
parents: 300
diff changeset
273 ncurses mode */
415
5692c3a13202 Display the server name/IP before asking for password
Mikael Berthe <mikael@lilotux.net>
parents: 413
diff changeset
274 if (!settings_opt_get("password")) {
5692c3a13202 Display the server name/IP before asking for password
Mikael Berthe <mikael@lilotux.net>
parents: 413
diff changeset
275 if (settings_opt_get("server"))
5692c3a13202 Display the server name/IP before asking for password
Mikael Berthe <mikael@lilotux.net>
parents: 413
diff changeset
276 printf("Server: %s\n", settings_opt_get("server"));
306
b2d11b11675f Fix interactive password prompt
Mikael Berthe <mikael@lilotux.net>
parents: 300
diff changeset
277 ask_password();
415
5692c3a13202 Display the server name/IP before asking for password
Mikael Berthe <mikael@lilotux.net>
parents: 413
diff changeset
278 }
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
279
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
280 /* Initialize N-Curses */
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
281 scr_LogPrint(LPRINT_DEBUG, "Initializing N-Curses...");
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
282 scr_InitCurses();
151
b69c0b7a23e3 [/trunk] Changeset 163 by mikael
mikael
parents: 149
diff changeset
283 scr_DrawMainWindow(TRUE);
29
86837ff0554c [/trunk] Changeset 45 by mikael
mikael
parents: 28
diff changeset
284
279
f5dd437c057b Rewrite the settings system
Mikael Berthe <mikael@lilotux.net>
parents: 272
diff changeset
285 optval = (settings_opt_get_int("logging") > 0);
f5dd437c057b Rewrite the settings system
Mikael Berthe <mikael@lilotux.net>
parents: 272
diff changeset
286 optval2 = (settings_opt_get_int("load_logs") > 0);
177
a51ce78a0e2a [/trunk] Changeset 189 by mikael
mikael
parents: 170
diff changeset
287 if (optval || optval2)
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
288 hlog_enable(optval, settings_opt_get("logging_dir"), optval2);
113
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 112
diff changeset
289
279
f5dd437c057b Rewrite the settings system
Mikael Berthe <mikael@lilotux.net>
parents: 272
diff changeset
290 optstring = settings_opt_get("events_command");
f5dd437c057b Rewrite the settings system
Mikael Berthe <mikael@lilotux.net>
parents: 272
diff changeset
291 if (optstring)
160
44c6410b4845 [/trunk] Changeset 172 by mikael
mikael
parents: 156
diff changeset
292 hk_ext_cmd_init(optstring);
44c6410b4845 [/trunk] Changeset 172 by mikael
mikael
parents: 156
diff changeset
293
112
edb5591e2e64 [/trunk] Changeset 126 by mikael
mikael
parents: 102
diff changeset
294 ping = 40;
279
f5dd437c057b Rewrite the settings system
Mikael Berthe <mikael@lilotux.net>
parents: 272
diff changeset
295 if (settings_opt_get("pinginterval"))
f5dd437c057b Rewrite the settings system
Mikael Berthe <mikael@lilotux.net>
parents: 272
diff changeset
296 ping = (unsigned int) settings_opt_get_int("pinginterval");
112
edb5591e2e64 [/trunk] Changeset 126 by mikael
mikael
parents: 102
diff changeset
297 jb_set_keepalive_delay(ping);
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
298 scr_LogPrint(LPRINT_DEBUG, "Ping interval established: %d secs", ping);
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
299
279
f5dd437c057b Rewrite the settings system
Mikael Berthe <mikael@lilotux.net>
parents: 272
diff changeset
300 if (settings_opt_get_int("hide_offline_buddies") > 0)
120
cfd3df636d5f [/trunk] Changeset 133 by mikael
mikael
parents: 113
diff changeset
301 buddylist_set_hide_offline_buddies(TRUE);
87
f600615c490d [/trunk] Changeset 101 by mikael
mikael
parents: 81
diff changeset
302
306
b2d11b11675f Fix interactive password prompt
Mikael Berthe <mikael@lilotux.net>
parents: 300
diff changeset
303 /* Connection */
b2d11b11675f Fix interactive password prompt
Mikael Berthe <mikael@lilotux.net>
parents: 300
diff changeset
304 if (settings_opt_get("password"))
b2d11b11675f Fix interactive password prompt
Mikael Berthe <mikael@lilotux.net>
parents: 300
diff changeset
305 mcabber_connect();
b2d11b11675f Fix interactive password prompt
Mikael Berthe <mikael@lilotux.net>
parents: 300
diff changeset
306 else
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
307 scr_LogPrint(LPRINT_LOGNORM, "Can't connect: no password supplied");
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 281
diff changeset
308
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 364
diff changeset
309 scr_LogPrint(LPRINT_DEBUG, "Entering into main loop...");
112
edb5591e2e64 [/trunk] Changeset 126 by mikael
mikael
parents: 102
diff changeset
310
333
db5bebe96c89 New config. file parsing
Mikael Berthe <mikael@lilotux.net>
parents: 322
diff changeset
311 for (ret = 0 ; ret != 255 ; ) {
761
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 699
diff changeset
312 scr_Getch(&kcode);
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 699
diff changeset
313 key = kcode.value;
151
b69c0b7a23e3 [/trunk] Changeset 163 by mikael
mikael
parents: 149
diff changeset
314
307
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
315 /* The refresh is really an ugly hack, but we need to call doupdate()
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
316 from time to time to catch the RESIZE events, because getch keep
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
317 returning ERR until a real key is pressed :-(
322
da138cdebf04 Implement auto-away mode
Mikael Berthe <mikael@lilotux.net>
parents: 314
diff changeset
318 However, it allows us to handle an autoaway check here...
307
566818afee1c Add headers to C files
Mikael Berthe <mikael@lilotux.net>
parents: 306
diff changeset
319 */
156
439b750d99fa [/trunk] Changeset 168 by mikael
mikael
parents: 152
diff changeset
320 if (key != ERR) {
761
4532a9fe0e8c Handle some keyboard escape sequences
Mikael Berthe <mikael@lilotux.net>
parents: 699
diff changeset
321 ret = process_key(kcode);
156
439b750d99fa [/trunk] Changeset 168 by mikael
mikael
parents: 152
diff changeset
322 refresh = 0;
439b750d99fa [/trunk] Changeset 168 by mikael
mikael
parents: 152
diff changeset
323 } else if (refresh++ > 1) {
151
b69c0b7a23e3 [/trunk] Changeset 163 by mikael
mikael
parents: 149
diff changeset
324 doupdate();
152
05f606cfb9e4 [/trunk] Changeset 164 by mikael
mikael
parents: 151
diff changeset
325 refresh = 0;
322
da138cdebf04 Implement auto-away mode
Mikael Berthe <mikael@lilotux.net>
parents: 314
diff changeset
326 scr_CheckAutoAway(FALSE);
152
05f606cfb9e4 [/trunk] Changeset 164 by mikael
mikael
parents: 151
diff changeset
327 }
151
b69c0b7a23e3 [/trunk] Changeset 163 by mikael
mikael
parents: 149
diff changeset
328
152
05f606cfb9e4 [/trunk] Changeset 164 by mikael
mikael
parents: 151
diff changeset
329 if (key != KEY_RESIZE)
05f606cfb9e4 [/trunk] Changeset 164 by mikael
mikael
parents: 151
diff changeset
330 jb_main();
36
8f1a5e79ca40 [/trunk] Changeset 52 by mikael
mikael
parents: 35
diff changeset
331 if (update_roster)
81
0bd578421ce9 [/trunk] Changeset 95 by mikael
mikael
parents: 77
diff changeset
332 scr_DrawRoster();
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
333 }
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
334
35
a8ceaa3005fd [/trunk] Changeset 51 by mikael
mikael
parents: 30
diff changeset
335 jb_disconnect();
24
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
336 scr_TerminateCurses();
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
337
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
338 printf("\n\nHave a nice day!\nBye!\n");
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
339
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
340 return 0;
e88b15cbf2de [/trunk] Changeset 40 by mikael
mikael
parents:
diff changeset
341 }
576
8b3db0b555a1 Add Vim modelines
Mikael Berthe <mikael@lilotux.net>
parents: 542
diff changeset
342
580
fed6d1e4d7a9 Fix modelines
Mikael Berthe <mikael@lilotux.net>
parents: 576
diff changeset
343 /* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */