dont always initialize ncurses

このコミットが含まれているのは:
woosh 2023-11-15 04:54:53 +00:00
コミット f5c31f72a8
1個のファイルの変更25行の追加20行の削除

45
uttt.c
ファイルの表示

@ -37,7 +37,7 @@ struct ut_socket_buffer {
size_t stop;
};
const char *HELP_TEXT = "\
const char HELP_TEXT[] = "\
Usage: uttt (--local | --host | --join)\n\
\n\
--local play non-network game\n\
@ -45,9 +45,9 @@ Usage: uttt (--local | --host | --join)\n\
--join join game at 127.0.0.1:6669\n\
";
const char *arg_local = "--local";
const char *arg_host = "--host";
const char *arg_join = "--join";
const char arg_local[] = "--local";
const char arg_host[] = "--host";
const char arg_join[] = "--join";
char ut_turn(char player)
@ -707,6 +707,16 @@ int ut_join_game(struct ut_state *state) {
return ut_network_game(state, &sockbuf, *player);
}
void begin(void)
{
signal(SIGINT, finish);
initscr();
keypad(stdscr, TRUE);
nonl(); // \r instead of \r\n
cbreak();
noecho();
mousemask(BUTTON1_CLICKED, NULL);
}
void finish(int sig)
{
// putchar('\n');
@ -757,28 +767,23 @@ void finish(int sig)
}*/
int main(int argc, char **argv) {
signal(SIGINT, finish);
initscr();
keypad(stdscr, TRUE);
nonl(); // \r instead of \r\n
cbreak();
noecho();
mousemask(BUTTON1_CLICKED, NULL);
struct ut_state state = ut_initial;
if (argc != 2) {
printf(HELP_TEXT);
finish(1);
} else if (strncmp(argv[1], arg_local, strlen(arg_local)) == 0) {
return ut_local_game(&state);
} else if (strncmp(argv[1], arg_host, strlen(arg_host)) == 0) {
return ut_host_game(&state);
} else if (strncmp(argv[1], arg_join, strlen(arg_join)) == 0) {
return ut_join_game(&state);
return 1;
} else if (strncmp(argv[1], arg_local, sizeof(arg_local)) == 0) {
begin();
finish(ut_local_game(&state));
} else if (strncmp(argv[1], arg_host, sizeof(arg_host)) == 0) {
begin();
finish(ut_host_game(&state));
} else if (strncmp(argv[1], arg_join, sizeof(arg_join)) == 0) {
begin();
finish(ut_join_game(&state));
} else {
printf(HELP_TEXT);
finish(1);
return 1;
}
finish(0);
return 0;
}