@@ -78,19 +78,20 @@ printw(const char *format, ...)
78
78
{
79
79
int s1 = 0 , s2 , i , o ;
80
80
va_list argptr ;
81
- char * line = malloc ( sizeof ( char ) * ( BUFF + 1 )) ;
81
+ char line [ BUFF + 1 ] ;
82
82
va_start (argptr , format );
83
83
vsnprintf (line , BUFF + 1 , format , argptr );
84
- if (strlen (line ) <= CMAX ) printf (line );
84
+ va_end (argptr );
85
+ if (strlen (line ) <= CMAX ) printf ("%s" , line );
85
86
else if (strlen (line ) > CMAX )
86
87
{
87
88
88
- for (i = 0 ; i < CMAX ; i ++ )
89
- {
89
+ for (i = 0 ; i < CMAX ; i ++ )
90
+ {
90
91
if (line [i ] == ' ' ) s1 = i ;
91
- if (i == CMAX - 1 ) printf ("%-*.*s\n" , s1 , s1 , line );
92
- }
93
- s2 = o = s1 ;
92
+ if (i == CMAX - 1 ) printf ("%-*.*s\n" , s1 , s1 , line );
93
+ }
94
+ s2 = o = s1 ;
94
95
for (i = s1 ; line [i ] != '\0' ; i ++ )
95
96
{
96
97
if (line [i ] == ' ' ) s2 = i ;
@@ -99,14 +100,13 @@ printw(const char *format, ...)
99
100
printf ("%*s %-*.*s\n" , GUTL , " " , s2 - o , s2 - o , & line [o + 1 ]);
100
101
o = i = s2 ;
101
102
}
102
- else if (line [i + 1 ] == '\0' )
103
+ else if (line [i + 1 ] == '\0' )
103
104
{
104
105
printf ("%*s %-*.*s" , GUTL , " " , i - o , i - o , & line [o + 1 ]);
105
106
}
106
107
}
107
108
}
108
- va_end (argptr );
109
- free (line );
109
+
110
110
}
111
111
112
112
static void
@@ -166,20 +166,24 @@ pars(int sl, char *buf)
166
166
int
167
167
main (int argc , char * * argv )
168
168
{
169
- extern char * optarg ;
170
- extern int optind , optopt ;
171
169
int fd [2 ], cval ;
172
170
173
171
while ((cval = getopt (argc , argv , "s:p:n:k:c:vV" )) != -1 )
174
172
{
175
173
switch (cval )
176
174
{
177
- case 'v' : printf ("kirc 0.0.1\n" ); break ;
178
- case 'V' : verb = 1 ; break ;
179
- case 's' : host = optarg ; break ;
180
- case 'p' : port = optarg ; break ;
181
- case 'n' : nick = optarg ; break ;
182
- case 'c' : chan = optarg ; break ;
175
+ case 'v' : printf ("kirc 0.0.1\n" ); break ;
176
+ case 'V' : verb = 1 ; break ;
177
+ case 's' : host = optarg ; break ;
178
+ case 'p' : port = optarg ; break ;
179
+ case 'n' : nick = optarg ; break ;
180
+ case 'c' : chan = optarg ; break ;
181
+ case '?' :
182
+ fprintf (stderr , "Unrecognized option: -%c\n" , optopt );
183
+ break ;
184
+ case ':' :
185
+ fprintf (stderr , "-%c requires and operand\n" , optopt );
186
+ break ;
183
187
}
184
188
}
185
189
@@ -230,18 +234,18 @@ main(int argc, char **argv)
230
234
switch (cmd )
231
235
{
232
236
case 'q' :
233
- snprintf ( usrin , CMAX , "quit" );
237
+ write ( fd [ 1 ], "quit" , sizeof ( "quit" ));
234
238
break ;
235
239
case 'm' :
236
- while (isspace (* cmd_val ))
237
- cmd_val ++ ;
238
- cmd_val = strdup (cmd_val );
239
- snprintf (usrin , CMAX , "privmsg #%s :%s" , chan , cmd_val );
240
- free (cmd_val );
240
+ while (isspace (* cmd_val )) cmd_val ++ ;
241
+ dprintf (fd [1 ], "privmsg #%s :%s" , chan , cmd_val );
241
242
break ;
242
243
}
243
244
}
244
- write (fd [1 ], usrin , CMAX );
245
+ else
246
+ {
247
+ write (fd [1 ], usrin , CMAX );
248
+ }
245
249
fflush (stdout );
246
250
}
247
251
}
0 commit comments