58 (void) tcsetattr(fileno(stdin), TCSAFLUSH, &orig); |
55 (void) tcsetattr(fileno(stdin), TCSAFLUSH, &orig); |
59 |
56 |
60 return (ssize_t)nread; |
57 return (ssize_t)nread; |
61 } |
58 } |
62 |
59 |
|
60 char *compose_jid(const char *username, const char *servername, |
|
61 const char *resource) |
|
62 { |
|
63 char *jid = malloc(strlen(username)+strlen(servername)+strlen(resource)+3); |
|
64 strcpy(jid, username); |
|
65 strcat(jid, "@"); |
|
66 strcat(jid, servername); |
|
67 strcat(jid, "/"); |
|
68 strcat(jid, resource); |
|
69 return jid; |
|
70 } |
|
71 |
63 void credits(void) |
72 void credits(void) |
64 { |
73 { |
65 printf(VERSION "\n"); |
74 printf(VERSION "\n"); |
66 printf(EMAIL "\n"); |
75 printf(EMAIL "\n"); |
67 } |
76 } |
146 scr_InitCurses(); |
155 scr_InitCurses(); |
147 |
156 |
148 ut_WriteLog("Drawing main window...\n"); |
157 ut_WriteLog("Drawing main window...\n"); |
149 scr_DrawMainWindow(); |
158 scr_DrawMainWindow(); |
150 |
159 |
151 /* Connect to server */ |
|
152 portstring = cfg_read("port"); |
160 portstring = cfg_read("port"); |
153 port = (portstring != NULL) ? (unsigned int) atoi(portstring) : -1U; |
161 port = (portstring != NULL) ? (unsigned int) atoi(portstring) : -1U; |
154 |
162 |
|
163 /* Connect to server */ |
155 ut_WriteLog("Connecting to server: %s:%d\n", servername, port); |
164 ut_WriteLog("Connecting to server: %s:%d\n", servername, port); |
156 scr_LogPrint("Connecting to server: %s:%d", servername, port); |
165 scr_LogPrint("Connecting to server: %s:%d", servername, port); |
157 jc = jb_connect(servername, port, 0, username, password, resource); |
166 |
|
167 jid = compose_jid(username, servername, resource); |
|
168 jc = jb_connect(jid, port, 0, password); |
|
169 free(jid); |
158 if (!jc) { |
170 if (!jc) { |
159 ut_WriteLog("\terror!!!\n"); |
171 ut_WriteLog("\terror!!!\n"); |
160 fprintf(stderr, "Error connecting to (%s)\n", servername); |
172 fprintf(stderr, "Error connecting to (%s)\n", servername); |
161 scr_TerminateCurses(); |
173 scr_TerminateCurses(); |
162 return -2; |
174 return -2; |
176 ut_WriteLog("Ping interval stablished: %d secs\n", ping); |
188 ut_WriteLog("Ping interval stablished: %d secs\n", ping); |
177 |
189 |
178 ut_WriteLog("Entering into main loop...\n\n"); |
190 ut_WriteLog("Entering into main loop...\n\n"); |
179 ut_WriteLog("Ready to send/receive messages...\n"); |
191 ut_WriteLog("Ready to send/receive messages...\n"); |
180 |
192 |
181 sleep(1); |
|
182 jb_main(); |
|
183 sleep(1); |
|
184 jb_main(); |
|
185 sleep(2); |
|
186 jb_disconnect(); |
|
187 sleep(1); |
|
188 jb_main(); |
|
189 scr_TerminateCurses(); exit(0); // XXX |
|
190 while (ret != 255) { |
193 while (ret != 255) { |
191 int x; |
|
192 alarm(ping); |
194 alarm(ping); |
193 //x = check_io(sock, 0); |
195 keypad(scr_GetInputWindow(), TRUE); |
194 x = check_io(0, 0); // FIXME |
196 key = scr_Getch(); |
195 /* |
197 if (key != ERR) |
196 if ((x & 1) == 1) { |
|
197 srv_msg *incoming = readserver(sock); |
|
198 |
|
199 switch (incoming->m) { |
|
200 case SM_PRESENCE: |
|
201 bud_SetBuddyStatus(incoming->from, incoming->connected); |
|
202 break; |
|
203 |
|
204 case SM_MESSAGE: |
|
205 scr_WriteIncomingMessage(incoming->from, incoming->body); |
|
206 free(incoming->body); |
|
207 free(incoming->from); |
|
208 break; |
|
209 |
|
210 case SM_UNHANDLED: |
|
211 break; |
|
212 } |
|
213 free(incoming); |
|
214 } |
|
215 if ((x & 2) == 2) { |
|
216 */ |
|
217 if (x) { |
|
218 keypad(scr_GetInputWindow(), TRUE); |
|
219 key = scr_Getch(); |
|
220 ret = process_key(key); |
198 ret = process_key(key); |
221 /* |
199 jb_main(); |
222 switch (key) { |
|
223 case KEY_IC: |
|
224 bud_AddBuddy(sock); |
|
225 break; |
|
226 case KEY_DC: |
|
227 bud_DeleteBuddy(sock); |
|
228 break; |
|
229 |
|
230 case KEY_RESIZE: |
|
231 endwin(); |
|
232 printf("\nRedimensionado no implementado\n"); |
|
233 printf("Reinicie Cabber.\n\n\n"); |
|
234 exit(EXIT_FAILURE); |
|
235 break; |
|
236 } |
|
237 */ |
|
238 } |
|
239 if (update_roster) { |
200 if (update_roster) { |
240 // scr_LogPrint("Update roster"); |
201 // scr_LogPrint("Update roster"); |
241 bud_DrawRoster(scr_GetRosterWindow()); |
202 bud_DrawRoster(scr_GetRosterWindow()); |
242 } |
203 } |
243 } |
204 } |
244 |
205 |
|
206 jb_disconnect(); |
245 bud_TerminateBuddies(); |
207 bud_TerminateBuddies(); |
246 scr_TerminateCurses(); |
208 scr_TerminateCurses(); |
247 |
209 |
248 //srv_setpresence(sock, "unavailable"); |
210 //srv_setpresence(sock, "unavailable"); |
249 //close(sock); |
211 //close(sock); |