@@ -32,7 +32,6 @@ kbhit(void) {
32
32
tcgetattr (0 , & term );
33
33
fd_set fds ;
34
34
struct timespec ts = {0 };
35
-
36
35
struct termios term2 = term ;
37
36
38
37
term2 .c_lflag &= ~ICANON ;
@@ -76,7 +75,6 @@ con(void) {
76
75
fcntl (conn , F_SETFL , O_NONBLOCK );
77
76
}
78
77
79
- /* printf, using hanging indent and greedy algortihm for word wrapping */
80
78
static void
81
79
printw (const char * format , ...) {
82
80
@@ -87,11 +85,9 @@ printw(const char *format, ...) {
87
85
va_start (argptr , format );
88
86
vsnprintf (line , BUFF + 1 , format , argptr );
89
87
va_end (argptr );
90
- /* need to pad first tok since strtok removes duplicate whitespace */
91
88
for (i = 0 ; isspace (line [i ]); i ++ ) printf ("%c" , line [i ]);
92
89
93
90
s = cmax + gutl - (i - 1 );
94
- //s = cmax - (i - 1);
95
91
96
92
for (tok = strtok (& line [i ], " " ); tok != NULL ; tok = strtok (NULL , " " )) {
97
93
len = strlen (tok );
@@ -109,11 +105,11 @@ printw(const char *format, ...) {
109
105
static void
110
106
pars (int sl , char * buf ) {
111
107
112
- char buf_c [BUFF + 1 ], ltr [200 ], cha [200 ], nic [200 ], hos [200 ], \
108
+ int len , i , o = -1 ;
109
+ char buf_c [BUFF + 1 ], ltr [200 ], cha [50 ], nic [200 ], hos [200 ], \
113
110
usr [200 ], cmd [200 ], msg [200 ], pre [200 ];
114
- int o = -1 ;
115
111
116
- for (int i = 0 ; i < sl ; i ++ ) {
112
+ for (i = 0 ; i < sl ; i ++ ) {
117
113
o ++ ;
118
114
buf_c [o ] = buf [i ];
119
115
@@ -141,9 +137,9 @@ pars(int sl, char *buf) {
141
137
printw ("%*.*s \x1b[32;1m%s\x1b[0m\n" , gutl , gutl , "-->" , nic );
142
138
}
143
139
else {
140
+ len = strlen (nic );
144
141
printw ("%*s\x1b[33;1m%-.*s\x1b[0m %s\n" , \
145
- gutl - (strlen (nic ) <= gutl ? strlen (nic ) : gutl ), \
146
- "" , gutl , nic , msg );
142
+ gutl - (len <= gutl ? len : gutl ), "" , gutl , nic , msg );
147
143
}
148
144
}
149
145
}
@@ -195,10 +191,10 @@ main(int argc, char **argv) {
195
191
if (u [0 ] != ':' ) raw ("%-*.*s\r\n" , i , i , u );
196
192
}
197
193
}
198
- printf ("%*s \x1b[31mpress <RETURN> key to exit\x1b[0m\n " , gutl , " " );
194
+ printf ("%*s press <RETURN> key to exit" , gutl , " " );
199
195
}
200
196
else {
201
- char usrin [cmax ], val1 [cmax ], val2 [20 ];
197
+ char usrin [cmax ], v1 [cmax ], v2 [20 ];
202
198
struct termios tp , save ;
203
199
204
200
tcgetattr (STDIN_FILENO , & tp );
@@ -215,40 +211,21 @@ main(int argc, char **argv) {
215
211
tcsetattr (STDIN_FILENO , TCSANOW , & save );
216
212
217
213
if (usrin [0 ] == ':' ) {
214
+ if (sscanf (usrin , ":%*[M] %s %[^\n]\n" , v2 , v1 ) != 3 ) {
215
+ sscanf (usrin , ":%*[njpm] %[^\n]\n" , v1 );
216
+ }
218
217
switch (usrin [1 ]) {
219
- case 'q' :
220
- dprintf (fd [1 ],"quit\n" );
221
- break ;
222
- case 'm' :
223
- sscanf (usrin , ":m %[^\n]\n" , val1 );
224
- dprintf (fd [1 ], "privmsg #%s :%s\n" , chan , val1 );
225
- break ;
226
- case 'n' :
227
- sscanf (usrin , ":n %[^\n]\n" , val1 );
228
- dprintf (fd [1 ], "privmsg nickserv :%s\n" , val1 );
229
- break ;
230
- case 'j' :
231
- sscanf (usrin , ":j %[^\n]\n" , val1 );
232
- dprintf (fd [1 ], "join %s\n" , val1 );
233
- break ;
234
- case 'p' :
235
- sscanf (usrin , ":p %[^\n]\n" , val1 );
236
- dprintf (fd [1 ], "part %s\n" , val1 );
237
- break ;
238
- case 'M' :
239
- sscanf (usrin , ":M %s %[^\n]\n" , val2 , val1 );
240
- dprintf (fd [1 ], "privmsg %s :%s\n" , val2 , val1 );
241
- break ;
242
- case '\n' :
243
- break ;
244
- default :
245
- printf ("\x1b[31munknown ':%c' \x1b[0m\n" , usrin [1 ]);
246
- break ;
218
+ case 'q' : dprintf (fd [1 ], "quit\n" ); break ;
219
+ case 'j' : dprintf (fd [1 ], "join %s\n" , v1 ); break ;
220
+ case 'p' : dprintf (fd [1 ], "part %s\n" , v1 ); break ;
221
+ case 'm' : dprintf (fd [1 ], "privmsg #%s :%s\n" , chan , v1 ); break ;
222
+ case 'n' : dprintf (fd [1 ], "privmsg nickserv :%s\n" , v1 ); break ;
223
+ case 'M' : dprintf (fd [1 ], "privmsg %s :%s\n" , v2 , v1 ); break ;
224
+ case '?' : break ;
247
225
}
248
226
}
249
- else {
250
- dprintf (fd [1 ], "%s" , usrin );
251
- }
227
+ else dprintf (fd [1 ], "%s" , usrin );
228
+
252
229
fflush (stdout );
253
230
}
254
231
}
0 commit comments