Skip to content

Commit fb3ac78

Browse files
committed
move user input event handler to separate function
1 parent e8fb106 commit fb3ac78

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

kirc.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ kbhit(void) {
4747

4848
static void
4949
raw(char *s, char *fmt, ...) {
50-
//raw(char s[], char *fmt, ...) {
5150

5251
va_list ap;
5352

@@ -59,7 +58,6 @@ raw(char *s, char *fmt, ...) {
5958
}
6059

6160
static void
62-
//con(char s[]) {
6361
con(char *s) {
6462

6563
struct addrinfo *res, hints = {
@@ -151,6 +149,21 @@ pars(int sl, char *s) {
151149
}
152150
}
153151

152+
static char *
153+
input_handler(size_t size) {
154+
155+
char *usrin = malloc(sizeof(char) * (size + 1));
156+
struct termios tp, save;
157+
158+
tcgetattr(STDIN_FILENO, &tp);
159+
save = tp;
160+
tp.c_cc[VERASE] = 127;
161+
tcsetattr(STDIN_FILENO, TCSANOW, &tp);
162+
fgets(usrin, size, stdin);
163+
tcsetattr(STDIN_FILENO, TCSANOW, &save);
164+
return usrin;
165+
}
166+
154167
int
155168
main(int argc, char **argv) {
156169

@@ -202,20 +215,13 @@ main(int argc, char **argv) {
202215
}
203216
else {
204217
char usrin[BUFF], v1[BUFF-20], v2[20], c1;
205-
struct termios tp, save;
206-
207-
tcgetattr(STDIN_FILENO, &tp);
208-
save = tp;
209-
tp.c_cc[VERASE] = 127;
210218

211219
while (waitpid(pid, NULL, WNOHANG) == 0) {
212220
while (!kbhit() && waitpid(pid, NULL, WNOHANG) == 0) {
213221
dprintf(fd[1], ":\n");
214222
}
215223

216-
tcsetattr(STDIN_FILENO, TCSANOW, &tp);
217-
fgets(usrin, BUFF, stdin);
218-
tcsetattr(STDIN_FILENO, TCSANOW, &save);
224+
strcpy(usrin, input_handler(BUFF));
219225

220226
if (sscanf(usrin, ":%[M] %s %[^\n]\n", &c1, v2, v1) == 3 ||
221227
sscanf(usrin, ":%[Qnjpm] %[^\n]\n", &c1, v1) == 2 ||
@@ -232,8 +238,6 @@ main(int argc, char **argv) {
232238
}
233239
}
234240
else dprintf(fd[1], "%s", usrin);
235-
236-
fflush(stdout);
237241
}
238242
}
239243
return 0;

0 commit comments

Comments
 (0)