4 #include <sys/select.h>
18 static int need_resize
= 0;
27 do_refresh(void *win
, mud_conn_t
*conn
)
29 if (cb_length(conn
->input_buffer
)) {
30 pmc_buffer(win
, conn
->input_buffer
, cb_length(conn
->input_buffer
));
31 cb_reset(conn
->input_buffer
);
38 main(int argc
, const char **argv
)
50 printf("usage: %s host port %d\n", argv
[0], COLOR_PAIRS
);
55 conn
= mud_create("name", argv
[1], atoi(argv
[2]), 4096, 4096);
57 printf("Failed to connect to %s:%s: %s\n",
58 argv
[1], argv
[2], strerror(errno
));
61 } else if (argc
== 4) {
62 conn
= mud_connect("name", argv
[1], atoi(argv
[2]), 4096, 4096, atoi(argv
[3]));
64 printf("Failed to reconnect to %s:%s: %s\n",
65 argv
[1], argv
[2], strerror(errno
));
70 signal(SIGWINCH
, sig_resize
);
71 signal(SIGPIPE
, SIG_IGN
);
75 snprintf(buf
, sizeof(buf
), " %s:%s - pmc", argv
[1], argv
[2]);
76 pmc_write_bar(win
, BAR_TOP
, buf
);
81 FD_SET(conn
->sockfd
, &rfds
);
85 ret
= select(conn
->sockfd
+1, &rfds
, 0, 0, NULL
);
86 if (need_resize
== 1) {
91 if (FD_ISSET(0, &rfds
)) {
93 ret
= pmc_listen(win
);
95 pmc_copyout(win
, conn
->output_buffer
);
96 if (!strcmp(conn
->output_buffer
, "/log\n")) {
98 f
= fopen("foo.log", "w+");
99 fprintf(f
, "%s\n", pmc_get_scrollback(win
));
100 cb_reset(conn
->output_buffer
);
101 pmc_write_bar(win
, BAR_BOTTOM
, "Dumped Log");
104 if (!strcmp(conn
->output_buffer
, "/restart\n")) {
106 pmc_write_bar(win
, BAR_BOTTOM
, " RESTARTING ");
107 do_refresh(win
,conn
);
111 snprintf(fdbuf
, sizeof(fdbuf
), "%d", conn
->sockfd
);
112 execlp(argv
[0], argv
[0], argv
[1], argv
[2],
118 if (mud_io(conn
) < 0)
121 snprintf(rtt
, sizeof(rtt
), " RTT %5d", conn
->rtt
);
122 pmc_write_bar(win
, BAR_BOTTOM
, rtt
);
126 pmc_write_bar(win
, BAR_BOTTOM
, "Press any key to exit");
127 do_refresh(win
,conn
);