@@ -109,24 +109,25 @@ printw(const char *format, ...) {
109
109
110
110
va_list argptr ;
111
111
char * tok , line [IRC_MSG_MAX + 1 ];
112
- int len , i , s ;
112
+ int i , wordwidth , spaceleft , spacewidth = 1 ;
113
113
114
114
va_start (argptr , format );
115
115
vsnprintf (line , IRC_MSG_MAX + 1 , format , argptr );
116
116
va_end (argptr );
117
+
117
118
for (i = 0 ; isspace (line [i ]); i ++ ) printf ("%c" , line [i ]);
118
119
119
- s = cmax + gutl - (i - 1 );
120
+ spaceleft = cmax + gutl - (i - 1 );
120
121
121
122
for (tok = strtok (& line [i ], " " ); tok != NULL ; tok = strtok (NULL , " " )) {
122
- len = strlen (tok );
123
- if ((len + 1 ) > s ) {
123
+ wordwidth = strlen (tok );
124
+ if ((wordwidth + spacewidth ) > spaceleft ) {
124
125
printf ("\n%*.s%s" , gutl + 2 , "" , tok );
125
- s = cmax - (gutl + 2 + len );
126
+ spaceleft = cmax - (gutl + 2 + wordwidth );
126
127
}
127
128
else {
128
129
printf (" %s" , tok );
129
- s = s - (len + 1 );
130
+ spaceleft = spaceleft - (wordwidth + spacewidth );
130
131
}
131
132
}
132
133
}
@@ -223,34 +224,34 @@ main(int argc, char **argv) {
223
224
if (u [0 ] != ':' ) raw (s , "%-*.*s\r\n" , i , i , u );
224
225
}
225
226
}
226
- fprintf (stderr , "%*s <<irc server connection closed>>" , gutl , "" );
227
227
}
228
228
else {
229
229
char usrin [IRC_MSG_MAX ], v1 [IRC_MSG_MAX - 20 ], v2 [20 ], c1 ;
230
230
231
231
while (waitpid (pid , NULL , WNOHANG ) == 0 ) {
232
- while (!kbhit () && waitpid (pid , NULL , WNOHANG ) == 0 ) {
233
- dprintf (fd [1 ], ":\n" );
234
- }
235
-
236
- strcpy (usrin , input_handler (IRC_MSG_MAX ));
237
-
238
- if (sscanf (usrin , ":%[M] %s %[^\n]\n" , & c1 , v2 , v1 ) == 3 ||
239
- sscanf (usrin , ":%[Qnjpm] %[^\n]\n" , & c1 , v1 ) == 2 ||
240
- sscanf (usrin , ":%[q]\n" , & c1 ) == 1 ) {
241
- switch (c1 ) {
242
- case 'q' : dprintf (fd [1 ], "quit\n" ); break ;
243
- case 'Q' : dprintf (fd [1 ], "quit %s\n" , v1 ); break ;
244
- case 'j' : dprintf (fd [1 ], "join %s\n" , v1 ); break ;
245
- case 'p' : dprintf (fd [1 ], "part %s\n" , v1 ); break ;
246
- case 'm' : dprintf (fd [1 ], "privmsg #%s :%s\n" , chan , v1 ); break ;
247
- case 'n' : dprintf (fd [1 ], "privmsg nickserv :%s\n" , v1 ); break ;
248
- case 'M' : dprintf (fd [1 ], "privmsg %s :%s\n" , v2 , v1 ); break ;
249
- case '?' : break ;
232
+ if (!kbhit ()) dprintf (fd [1 ], ":\n" );
233
+ else {
234
+ strcpy (usrin , input_handler (IRC_MSG_MAX ));
235
+
236
+ if (sscanf (usrin , ":%[M] %s %[^\n]\n" , & c1 , v2 , v1 ) == 3 ||
237
+ sscanf (usrin , ":%[Qnjpm] %[^\n]\n" , & c1 , v1 ) == 2 ||
238
+ sscanf (usrin , ":%[q]\n" , & c1 ) == 1 ) {
239
+ switch (c1 ) {
240
+ case 'q' : dprintf (fd [1 ], "quit\n" ); break ;
241
+ case 'Q' : dprintf (fd [1 ], "quit %s\n" , v1 ); break ;
242
+ case 'j' : dprintf (fd [1 ], "join %s\n" , v1 ); break ;
243
+ case 'p' : dprintf (fd [1 ], "part %s\n" , v1 ); break ;
244
+ case 'm' : dprintf (fd [1 ], "privmsg #%s :%s\n" , chan , v1 ); break ;
245
+ case 'n' : dprintf (fd [1 ], "privmsg nickserv :%s\n" , v1 ); break ;
246
+ case 'M' : dprintf (fd [1 ], "privmsg %s :%s\n" , v2 , v1 ); break ;
247
+ case '?' : break ;
248
+ }
250
249
}
250
+ else dprintf (fd [1 ], "%s" , usrin );
251
251
}
252
- else dprintf (fd [1 ], "%s" , usrin );
253
252
}
253
+
254
+ fprintf (stderr , "%*s <<irc server connection closed>>\n" , gutl , "" );
254
255
}
255
256
return 0 ;
256
257
}
0 commit comments