Module Name: src
Committed By: rillig
Date: Sun May 22 08:18:49 UTC 2022
Modified Files:
src/games/gomoku: main.c
Log Message:
gomoku: extract parse_args from main
No functional change.
To generate a diff of this commit:
cvs rdiff -u -r1.50 -r1.51 src/games/gomoku/main.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/games/gomoku/main.c
diff -u src/games/gomoku/main.c:1.50 src/games/gomoku/main.c:1.51
--- src/games/gomoku/main.c:1.50 Sun May 22 08:12:15 2022
+++ src/games/gomoku/main.c Sun May 22 08:18:49 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.50 2022/05/22 08:12:15 rillig Exp $ */
+/* $NetBSD: main.c,v 1.51 2022/05/22 08:18:49 rillig Exp $ */
/*
* Copyright (c) 1994
@@ -36,7 +36,7 @@
__COPYRIGHT("@(#) Copyright (c) 1994\
The Regents of the University of California. All rights reserved.");
/* @(#)main.c 8.4 (Berkeley) 5/4/95 */
-__RCSID("$NetBSD: main.c,v 1.50 2022/05/22 08:12:15 rillig Exp $");
+__RCSID("$NetBSD: main.c,v 1.51 2022/05/22 08:18:49 rillig Exp $");
#include <sys/stat.h>
#include <curses.h>
@@ -114,23 +114,10 @@ save_game(void)
fclose(fp);
}
-int
-main(int argc, char **argv)
+static void
+parse_args(int argc, char **argv)
{
- char buf[128];
- char *user_name;
- int color, curmove, i, ch;
- enum input_source input[2];
-
- /* Revoke setgid privileges */
- setgid(getgid());
-
- setprogname(argv[0]);
-
- user_name = getlogin();
- strlcpy(user, user_name != NULL ? user_name : "you", sizeof(user));
-
- color = curmove = 0;
+ int ch;
prog = strrchr(argv[0], '/');
prog = prog != NULL ? prog + 1 : argv[0];
@@ -140,6 +127,9 @@ main(int argc, char **argv)
case 'b': /* background */
interactive = false;
break;
+ case 'c': /* testing: computer versus computer */
+ test = 2;
+ break;
case 'd':
debug++;
break;
@@ -150,14 +140,11 @@ main(int argc, char **argv)
case 'u': /* testing: user versus user */
test = 1;
break;
- case 'c': /* testing: computer versus computer */
- test = 2;
- break;
default:
usage:
fprintf(stderr, "usage: %s [-bcdu] [-Dfile] [file]\n",
getprogname());
- return EXIT_FAILURE;
+ exit(EXIT_FAILURE);
}
}
argc -= optind;
@@ -166,6 +153,27 @@ main(int argc, char **argv)
goto usage;
if (argc == 1 && (inputfp = fopen(*argv, "r")) == NULL)
err(1, "%s", *argv);
+}
+
+int
+main(int argc, char **argv)
+{
+ char buf[128];
+ char *user_name;
+ int color, curmove;
+ enum input_source input[2];
+
+ /* Revoke setgid privileges */
+ setgid(getgid());
+
+ setprogname(argv[0]);
+
+ user_name = getlogin();
+ strlcpy(user, user_name != NULL ? user_name : "you", sizeof(user));
+
+ color = curmove = 0;
+
+ parse_args(argc, argv);
if (debug == 0)
srandom((unsigned int)time(0));
@@ -187,7 +195,7 @@ again:
mvprintw(BSZ + 3, 0, "Black moves first. ");
ask("(B)lack or (W)hite? ");
for (;;) {
- ch = get_key(NULL);
+ int ch = get_key(NULL);
if (ch == 'b' || ch == 'B') {
color = BLACK;
break;
@@ -246,6 +254,7 @@ again:
refresh();
}
+ int outcome;
for (color = BLACK; ; color = color != BLACK ? BLACK : WHITE) {
top:
switch (input[color]) {
@@ -313,14 +322,14 @@ again:
misclog("%3d%*s%-6s", movenum,
color == BLACK ? 2 : 9, "", stoc(curmove));
}
- if ((i = makemove(color, curmove)) != MOVEOK)
+ if ((outcome = makemove(color, curmove)) != MOVEOK)
break;
if (interactive)
bdisp();
}
if (interactive) {
move(BSZ + 3, 0);
- switch (i) {
+ switch (outcome) {
case WIN:
if (input[color] == PROGRAM)
addstr("Ha ha, I won");
@@ -338,10 +347,10 @@ again:
}
clrtoeol();
bdisp();
- if (i != RESIGN) {
+ if (outcome != RESIGN) {
replay:
ask("Play again? ");
- ch = get_key("YyNnQqSs");
+ int ch = get_key("YyNnQqSs");
if (ch == 'Y' || ch == 'y')
goto again;
if (ch == 'S') {