@@ -120,7 +120,10 @@ connection_initialize(void) {
120
120
return -1 ;
121
121
}
122
122
123
- fcntl (conn , F_SETFL , O_NONBLOCK );
123
+ int flags = fcntl (conn , F_GETFL , 0 );
124
+ flags |= O_NONBLOCK ;
125
+ fcntl (conn , F_SETFL , flags );
126
+
124
127
return 0 ;
125
128
}
126
129
@@ -231,26 +234,26 @@ handle_server_message(void) {
231
234
static void
232
235
handle_user_input (void ) {
233
236
char usrin [MSG_MAX ], v1 [MSG_MAX - CHA_MAX ], v2 [CHA_MAX ], c1 ;
234
- if ( fgets (usrin , MSG_MAX , stdin ) != NULL &&
235
- (sscanf (usrin , "/%[m] %s %[^\n]\n" , & c1 , v2 , v1 ) > 2 ||
236
- sscanf (usrin , "/%[a-zA-Z] %[^\n]\n" , & c1 , v1 ) > 0 ) ) {
237
+ fgets (usrin , MSG_MAX , stdin );
238
+ if (sscanf (usrin , "/%[m] %s %[^\n]\n" , & c1 , v2 , v1 ) > 2 ||
239
+ sscanf (usrin , "/%[a-zA-Z] %[^\n]\n" , & c1 , v1 ) > 0 ) {
237
240
switch (c1 ) {
238
241
case 'x' : raw ("%s\r\n" , v1 ); break ;
239
242
case 'q' : raw ("quit\r\n" ); break ;
240
- case 'u' : strcpy (chan , v1 ); break ;
241
243
case 'Q' : raw ("quit %s\r\n" , v1 ); break ;
242
244
case 'j' : raw ("join %s\r\n" , v1 ); break ;
243
245
case 'p' : raw ("part %s\r\n" , v1 ); break ;
244
246
case 'n' : raw ("names #%s\r\n" , chan ); break ;
245
247
case 'M' : raw ("privmsg nickserv :%s\r\n" , v1 ); break ;
246
248
case 'm' : raw ("privmsg %s :%s\r\n" , v2 , v1 ); break ;
249
+ case 'u' : strcpy (chan , v1 ); break ;
247
250
default : puts (HELP ); break ;
248
251
}
249
252
} else {
250
253
size_t msg_len = strlen (usrin );
251
254
if (usrin [msg_len - 1 ] == '\n' ) {
252
255
usrin [msg_len - 1 ] = '\0' ;
253
- }
256
+ }
254
257
raw ("privmsg #%s :%s\r\n" , chan , usrin );
255
258
}
256
259
}
@@ -303,12 +306,10 @@ main(int argc, char **argv) {
303
306
304
307
for (;;) {
305
308
int poll_res = poll (fds , 2 , -1 );
306
-
307
309
if (poll_res != -1 ) {
308
310
if (fds [0 ].revents & POLLIN ) {
309
311
handle_user_input ();
310
312
}
311
-
312
313
if (fds [1 ].revents & POLLIN ) {
313
314
int rc = handle_server_message ();
314
315
if (rc != 0 ) {
0 commit comments