gnu: Add bsd-games.
* gnu/packages/games.scm (bsd-games): New variable. New patches, taken from Arch and Debian: * gnu/packages/patches/bsd-games-2.17-64bit.patch * gnu/packages/patches/bsd-games-bad-ntohl-cast.patch * gnu/packages/patches/bsd-games-gamescreen.h.patch * gnu/packages/patches/bsd-games-getline.patch * gnu/packages/patches/bsd-games-null-check.patch * gnu/packages/patches/bsd-games-number.c-and-test.patch * gnu/packages/patches/bsd-games-prevent-name-collisions.patch * gnu/packages/patches/bsd-games-stdio.h.patch New patches with our customizations (configure-config built after Arch's): * gnu/packages/patches/bsd-games-add-configure-config.patch * gnu/packages/patches/bsd-games-add-wrapper.patch * gnu/packages/patches/bsd-games-dont-install-empty-files.patch Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr>master
parent
dd2330a89b
commit
95024494f3
11
gnu/local.mk
11
gnu/local.mk
|
@ -822,6 +822,17 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/bastet-change-source-of-unordered_set.patch \
|
||||
%D%/packages/patches/bazaar-CVE-2017-14176.patch \
|
||||
%D%/packages/patches/bc-fix-cross-compilation.patch \
|
||||
%D%/packages/patches/bsd-games-2.17-64bit.patch \
|
||||
%D%/packages/patches/bsd-games-add-configure-config.patch \
|
||||
%D%/packages/patches/bsd-games-add-wrapper.patch \
|
||||
%D%/packages/patches/bsd-games-bad-ntohl-cast.patch \
|
||||
%D%/packages/patches/bsd-games-dont-install-empty-files.patch \
|
||||
%D%/packages/patches/bsd-games-gamescreen.h.patch \
|
||||
%D%/packages/patches/bsd-games-getline.patch \
|
||||
%D%/packages/patches/bsd-games-null-check.patch \
|
||||
%D%/packages/patches/bsd-games-number.c-and-test.patch \
|
||||
%D%/packages/patches/bsd-games-prevent-name-collisions.patch \
|
||||
%D%/packages/patches/bsd-games-stdio.h.patch \
|
||||
%D%/packages/patches/beancount-disable-googleapis-fonts.patch \
|
||||
%D%/packages/patches/beets-werkzeug-compat.patch \
|
||||
%D%/packages/patches/behave-skip-a-couple-of-tests.patch \
|
||||
|
|
|
@ -116,6 +116,7 @@
|
|||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages gnu-doc)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages gnuzilla)
|
||||
#:use-module (gnu packages gperf)
|
||||
|
@ -589,6 +590,139 @@ possible, while battling many vicious aliens.")
|
|||
license:lgpl2.1+
|
||||
license:bsd-2))))
|
||||
|
||||
(define-public bsd-games
|
||||
(package
|
||||
(name "bsd-games")
|
||||
(version "2.17.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri "https://ibiblio.org/pub/linux/games/bsd-games-2.17.tar.gz")
|
||||
(sha256
|
||||
(base32 "0q7zdyyfvn15y0w4g54kq3gza89h61py727m8slmw73cxx594vq6"))
|
||||
(patches
|
||||
(search-patches
|
||||
;; thanks Arch, and Debian
|
||||
"bsd-games-2.17-64bit.patch"
|
||||
"bsd-games-bad-ntohl-cast.patch"
|
||||
"bsd-games-gamescreen.h.patch"
|
||||
"bsd-games-getline.patch"
|
||||
"bsd-games-null-check.patch"
|
||||
"bsd-games-number.c-and-test.patch"
|
||||
"bsd-games-stdio.h.patch"
|
||||
"bsd-games-prevent-name-collisions.patch"
|
||||
;; Guix customizations
|
||||
"bsd-games-add-configure-config.patch"
|
||||
"bsd-games-dont-install-empty-files.patch"
|
||||
"bsd-games-add-wrapper.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("flex" ,flex)
|
||||
("bison" ,bison)))
|
||||
(inputs
|
||||
`(("curses" ,ncurses)
|
||||
("pager" ,less)
|
||||
("miscfiles" ,miscfiles)
|
||||
("openssl" ,openssl))) ;used only by 'factor'
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda* (#:key outputs inputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(doc (string-append out "/share/doc/bsd-games-" ,version))
|
||||
(man (string-append out "/share/man"))
|
||||
(word-list (string-append (assoc-ref inputs "miscfiles")
|
||||
"/share/web2"))
|
||||
(static-data (string-append out "/share/games/bsd-games"))
|
||||
;; Not a "./" because of substitute* in 'patch-install
|
||||
;; below. The .// allow us not to mess with the games'
|
||||
;; code any further: we just use a wrapper script that
|
||||
;; cd's to a BSD_GAMES_DIR. :]
|
||||
(save-files ".//"))
|
||||
(substitute* "configure"
|
||||
(("/usr/share/man") man)
|
||||
(("/usr/share/doc/bsd-games") doc)
|
||||
(("/usr/share/[^\n/]*") static-data)
|
||||
(("/var/games") save-files)
|
||||
(("/usr/bin/less") (which "less"))
|
||||
(("(/usr/bin|/usr/games)") bin))
|
||||
(substitute* "config.params" (("WORD_LIST") word-list))
|
||||
(substitute* "wrapper" (("STATIC_DATA") static-data))
|
||||
(invoke "./configure"))
|
||||
#t))
|
||||
(add-before 'install 'patch-install
|
||||
;; Some games need a writable directory containing pre-maded files.
|
||||
;; The files get installed to the Store. Then the wrapper kicks in.
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(static-data (string-append out "/share/games/bsd-games"))
|
||||
(save-files ".//"))
|
||||
(substitute* "Makeconfig" ((save-files) static-data)))
|
||||
#t))
|
||||
(add-after 'install 'install-documents
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(doc (string-append out "/share/doc/bsd-games-" ,version)))
|
||||
(rename-file "phantasia/COPYRIGHT" "phantasia-COPYRIGHT")
|
||||
(for-each
|
||||
(lambda(file) (install-file file doc))
|
||||
'("AUTHORS" "BUGS" "README" "SECURITY" "THANKS"
|
||||
"phantasia-COPYRIGHT")))
|
||||
#t)))))
|
||||
(home-page "https://github.com/vattam/BSDGames")
|
||||
(synopsis "Collection of the old text-based games and amusements")
|
||||
(description
|
||||
"These are the BSD games. See the fortune-mod package for fortunes.
|
||||
|
||||
Action: atc (keep the airplanes safe), hack (explore the dangerous Dungeon),
|
||||
hunt (kill the others for the Pair of Boots, multi-player only), robots (avoid
|
||||
the evil robots), sail (game of naval warfare with wooden ships), snake (steal
|
||||
the $$ from the cave, anger the snake, and get out alive), tetris (game of
|
||||
lining up the falling bricks of different shapes), and worm (eat, grow big,
|
||||
and neither bite your tail, nor ram the wall).
|
||||
|
||||
Amusements: banner (prints a large banner), bcd & morse & ppt (print a punch
|
||||
card, or paper tape, or Morse codes), caesar & rot13 (ciphers and deciphers
|
||||
the input), factor (factorizes a number), number (translates numbers into
|
||||
text), pig (translates from English to Pig Latin), pom (should print the
|
||||
Moon's phase), primes (generates primes), rain & worms (plays an screen-saver
|
||||
in terminal), random (prints randomly choosen lines from files, or returns a
|
||||
random exit-code), and wtf (explains what do some acronyms mean).
|
||||
|
||||
Board: backgammon (lead the men out of board faster than the friend do),
|
||||
boggle (find the words in the square of letters), dab (game of dots and
|
||||
boxes), gomoku (game of five in a row), hangman (guess a word before man is
|
||||
hanged), and monop (game of monopoly, hot-seat only). Also the card-games:
|
||||
canfield, cribbage, fish (juniors game), and mille.
|
||||
|
||||
Quests: adventure (search for treasures with the help of wizard),
|
||||
battlestar (explore the world around, starting from dying spaceship),
|
||||
phantasia (role-play as an rogue), trek (hunt the Klingons, and save the
|
||||
Federation), and wump (hunt the big smelly Wumpus in a dark cave).
|
||||
|
||||
Quizes: arithmetic, and quiz.")
|
||||
;; "Auxiliary and data files, distributed with the games in NetBSD, but
|
||||
;; not bearing copyright notices, probably fall under the terms of the UCB
|
||||
;; or NetBSD copyrights and licences. The file "fortune/Notes" contains a
|
||||
;; warning in regard to the fortune databases."
|
||||
(license (list
|
||||
;; Most games. Files: countmail/countmail.6, dab/dab.6,
|
||||
;; lib/strlcpy.c, wargames/wargames.6
|
||||
license:bsd-3
|
||||
;; dab and hunt. Files: adventure/extern.h,
|
||||
;; backgammon/backgammon/backlocal.h, caesar/rot13.in,
|
||||
;; countmail/countmail, dm/utmpentry.c, dm/utmpentry.h,
|
||||
;; hack/extern.h, robots/auto.c, sail/display.h,
|
||||
;; sail/restart.h, wargames/wargames
|
||||
license:bsd-4
|
||||
;; wtf (the game)
|
||||
license:public-domain
|
||||
;; phantasia (all but phantasia/pathnames.h.in, which is bsd-3)
|
||||
(license:fsf-free "file:///phantasia/COPYRIGHT")))))
|
||||
|
||||
|
||||
(define-public bzflag
|
||||
(package
|
||||
(name "bzflag")
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
David Leverton writes about adventure/crc.c:
|
||||
|
||||
The 'adventure' game from the games-misc/bsd-games-2.13 package crashes
|
||||
when saving the game on AMD64 (and probably other 64-bit systems, but I
|
||||
haven't checked). Find attached to fix this.
|
||||
|
||||
http://bugs.gentoo.org/show_bug.cgi?id=77032
|
||||
|
||||
|
||||
About utmpentry.c:
|
||||
|
||||
the utmpx structure defines the ut_tv member a little differently on
|
||||
64bit hosts so that a 32bit and 64bit structure can be shared. So the
|
||||
ut_tv is a custom 32bit structure rather than the native 64bit timeval
|
||||
structure. Work around is to assign the submembers instead.
|
||||
|
||||
http://bugs.gentoo.org/show_bug.cgi?id=102667
|
||||
|
||||
--- bsd-games/adventure/crc.c
|
||||
+++ bsd-games/adventure/crc.c
|
||||
@@ -134,7 +134,8 @@
|
||||
if (step >= sizeof(crctab) / sizeof(crctab[0]))
|
||||
step = 0;
|
||||
}
|
||||
- crcval = (crcval << 8) ^ crctab[i];
|
||||
+ /* Mask to 32 bits. */
|
||||
+ crcval = ((crcval << 8) ^ crctab[i]) & 0xffffffff;
|
||||
}
|
||||
- return crcval & 0xffffffff; /* Mask to 32 bits. */
|
||||
+ return crcval;
|
||||
}
|
||||
--- bsd-games/dm/utmpentry.c
|
||||
+++ bsd-games/dm/utmpentry.c
|
||||
@@ -291,7 +291,8 @@
|
||||
e->line[sizeof(e->line) - 1] = '\0';
|
||||
(void)strncpy(e->host, up->ut_host, sizeof(up->ut_host));
|
||||
e->name[sizeof(e->host) - 1] = '\0';
|
||||
- e->tv = up->ut_tv;
|
||||
+ e->tv.tv_sec = up->ut_tv.tv_sec;
|
||||
+ e->tv.tv_usec = up->ut_tv.tv_usec;
|
||||
adjust_size(e);
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,22 @@
|
|||
Remove a few 'setenv's from the definition.
|
||||
|
||||
diff -Naur bsd-games-2.17/config.params bsd-games-patch/config.params
|
||||
--- bsd-games-2.17/config.params 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/config.params 2020-04-22 20:49:40.809695248 +0700
|
||||
@@ -0,0 +1,16 @@
|
||||
+bsd_games_cfg_do_chown=n
|
||||
+bsd_games_cfg_non_interactive=y
|
||||
+
|
||||
+# Fix some man-pages: cfscores, morse, ppt, rot13, snscore, teachgammon.
|
||||
+bsd_games_cfg_use_dot_so=syml
|
||||
+
|
||||
+# Don't build some games:
|
||||
+# Countmail require some BSD-package called `from`.
|
||||
+# DM is a toy to restrict access to bsd-games.
|
||||
+# Fortune seems to be already packaged (fortune-mod).
|
||||
+# Wargames isn't convenient as a game launcher.
|
||||
+bsd_games_cfg_no_build_dirs="countmail dm fortune wargames"
|
||||
+
|
||||
+# Those are substitute*'d with GNU miscfiles.
|
||||
+bsd_games_cfg_hangman_wordsfile=WORD_LIST
|
||||
+bsd_games_cfg_dictionary_src=WORD_LIST
|
|
@ -0,0 +1,251 @@
|
|||
As we cannot install outside the Store, and those games do not create the
|
||||
needed writable files on their own, we need a wrapper script.
|
||||
|
||||
diff -Naur bsd-games-2.17/atc/Makefrag bsd-games-patch/atc/Makefrag
|
||||
--- bsd-games-2.17/atc/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/atc/Makefrag 2020-04-23 20:24:04.446176222 +0700
|
||||
@@ -47,7 +47,8 @@
|
||||
mv atc/lex.yy.c $@
|
||||
|
||||
atc_install: atc_all
|
||||
- $(INSTALL_SCORE_GAME) atc/atc $(INSTALL_PREFIX)$(GAMESDIR)/atc
|
||||
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/atc
|
||||
+ $(INSTALL_SCORE_GAME) atc/atc $(INSTALL_PREFIX)$(GAMESDIR)/.atc-real
|
||||
$(HIDE_GAME) atc
|
||||
$(INSTALL_SCORE_FILE) $(ATC_SCOREFILE)
|
||||
$(INSTALL_MANUAL) atc/atc.6
|
||||
diff -Naur bsd-games-2.17/battlestar/Makefrag bsd-games-patch/battlestar/Makefrag
|
||||
--- bsd-games-2.17/battlestar/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/battlestar/Makefrag 2020-04-23 20:24:04.482175771 +0700
|
||||
@@ -32,7 +32,8 @@
|
||||
battlestar_all: battlestar/battlestar battlestar/battlestar.6
|
||||
|
||||
battlestar_install: battlestar_all
|
||||
- $(INSTALL_SCORE_GAME) battlestar/battlestar $(INSTALL_PREFIX)$(GAMESDIR)/battlestar
|
||||
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/battlestar
|
||||
+ $(INSTALL_SCORE_GAME) battlestar/battlestar $(INSTALL_PREFIX)$(GAMESDIR)/.battlestar-real
|
||||
$(HIDE_GAME) battlestar
|
||||
$(INSTALL_MANUAL) battlestar/battlestar.6
|
||||
$(INSTALL_SCORE_FILE) $(BATTLESTAR_SCOREFILE)
|
||||
diff -Naur bsd-games-2.17/canfield/canfield/Makefrag bsd-games-patch/canfield/canfield/Makefrag
|
||||
--- bsd-games-2.17/canfield/canfield/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/canfield/canfield/Makefrag 2020-04-23 20:24:04.522175270 +0700
|
||||
@@ -31,7 +31,8 @@
|
||||
canfield_canfield_all: canfield/canfield/canfield canfield/canfield/canfield.6
|
||||
|
||||
canfield_canfield_install: canfield_canfield_all
|
||||
- $(INSTALL_SCORE_GAME) canfield/canfield/canfield $(INSTALL_PREFIX)$(GAMESDIR)/canfield
|
||||
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/canfield
|
||||
+ $(INSTALL_SCORE_GAME) canfield/canfield/canfield $(INSTALL_PREFIX)$(GAMESDIR)/.canfield-real
|
||||
$(HIDE_GAME) canfield
|
||||
$(INSTALL_MANUAL) canfield/canfield/canfield.6
|
||||
$(INSTALL_SCORE_FILE) $(CANFIELD_SCOREFILE)
|
||||
diff -ur bsd-games-2.17.orig/canfield/cfscores/Makefrag bsd-games-2.17/canfield/cfscores/Makefrag
|
||||
--- bsd-games-2.17.orig/canfield/cfscores/Makefrag 1970-01-01 07:00:01.000000000 +0700
|
||||
+++ bsd-games-2.17/canfield/cfscores/Makefrag 2020-08-06 12:20:10.592076477 +0700
|
||||
@@ -32,6 +32,7 @@
|
||||
canfield_cfscores_all: canfield/cfscores/cfscores
|
||||
|
||||
canfield_cfscores_install: canfield_cfscores_all
|
||||
- $(INSTALL_BINARY) canfield/cfscores/cfscores $(INSTALL_PREFIX)$(GAMESDIR)/cfscores
|
||||
+ $(INSTALL_BINARY) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/cfscores
|
||||
+ $(INSTALL_BINARY) canfield/cfscores/cfscores $(INSTALL_PREFIX)$(GAMESDIR)/.cfscores-real
|
||||
$(HIDE_GAME) cfscores
|
||||
$(INSTALL_MANUAL) canfield.6 cfscores.6
|
||||
diff -Naur bsd-games-2.17/cribbage/Makefrag bsd-games-patch/cribbage/Makefrag
|
||||
--- bsd-games-2.17/cribbage/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/cribbage/Makefrag 2020-04-23 20:24:04.534175120 +0700
|
||||
@@ -31,7 +31,8 @@
|
||||
cribbage_all: cribbage/cribbage cribbage/cribbage.n cribbage/cribbage.6
|
||||
|
||||
cribbage_install: cribbage_all
|
||||
- $(INSTALL_SCORE_GAME) cribbage/cribbage $(INSTALL_PREFIX)$(GAMESDIR)/cribbage
|
||||
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/cribbage
|
||||
+ $(INSTALL_SCORE_GAME) cribbage/cribbage $(INSTALL_PREFIX)$(GAMESDIR)/.cribbage-real
|
||||
$(HIDE_GAME) cribbage
|
||||
$(INSTALL_DATA) cribbage/cribbage.n $(INSTALL_PREFIX)$(CRIBBAGE_INSTRFILE)
|
||||
$(INSTALL_SCORE_FILE) $(CRIBBAGE_SCOREFILE)
|
||||
diff -Naur bsd-games-2.17/hack/Makefrag bsd-games-patch/hack/Makefrag
|
||||
--- bsd-games-2.17/hack/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/hack/Makefrag 2020-04-23 20:24:04.590174419 +0700
|
||||
@@ -53,7 +53,8 @@
|
||||
hack/hack.zap.d hack/rnd.d: hack/hack.onames.h
|
||||
|
||||
hack_install: hack_all
|
||||
- $(INSTALL_SCORE_GAME) hack/hack $(INSTALL_PREFIX)$(GAMESDIR)/hack
|
||||
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/hack
|
||||
+ $(INSTALL_SCORE_GAME) hack/hack $(INSTALL_PREFIX)$(GAMESDIR)/.hack-real
|
||||
$(HIDE_GAME) hack
|
||||
$(INSTALL_HACK_DIR) $(INSTALL_PREFIX)$(HACK_DIR)
|
||||
set -e; for f in data help hh rumors; do $(INSTALL_DATA) hack/$$f $(INSTALL_PREFIX)$(HACK_DIR)/$$f; done
|
||||
diff -Naur bsd-games-2.17/phantasia/Makefrag bsd-games-patch/phantasia/Makefrag
|
||||
--- bsd-games-2.17/phantasia/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/phantasia/Makefrag 2020-04-23 20:24:04.650173667 +0700
|
||||
@@ -38,7 +38,8 @@
|
||||
touch phantasia/scorefiles.stamp
|
||||
|
||||
phantasia_install: phantasia_all
|
||||
- $(INSTALL_SCORE_GAME) phantasia/phantasia $(INSTALL_PREFIX)$(GAMESDIR)/phantasia
|
||||
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/phantasia
|
||||
+ $(INSTALL_SCORE_GAME) phantasia/phantasia $(INSTALL_PREFIX)$(GAMESDIR)/.phantasia-real
|
||||
$(HIDE_GAME) phantasia
|
||||
(set -e; for f in $(phantasia_VFILES1); do \
|
||||
cp phantasia/$$f $(INSTALL_PREFIX)$(PHANTASIA_DIR)/$$f; \
|
||||
diff -Naur bsd-games-2.17/robots/Makefrag bsd-games-patch/robots/Makefrag
|
||||
--- bsd-games-2.17/robots/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/robots/Makefrag 2020-04-23 20:24:04.702173016 +0700
|
||||
@@ -32,7 +32,8 @@
|
||||
robots_all: robots/robots robots/robots.6
|
||||
|
||||
robots_install: robots_all
|
||||
- $(INSTALL_SCORE_GAME) robots/robots $(INSTALL_PREFIX)$(GAMESDIR)/robots
|
||||
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/robots
|
||||
+ $(INSTALL_SCORE_GAME) robots/robots $(INSTALL_PREFIX)$(GAMESDIR)/.robots-real
|
||||
$(HIDE_GAME) robots
|
||||
$(INSTALL_SCORE_FILE) $(ROBOTS_SCOREFILE)
|
||||
$(INSTALL_MANUAL) robots/robots.6
|
||||
diff -Naur bsd-games-2.17/sail/Makefrag bsd-games-patch/sail/Makefrag
|
||||
--- bsd-games-2.17/sail/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/sail/Makefrag 2020-04-23 20:24:04.710172917 +0700
|
||||
@@ -31,7 +31,8 @@
|
||||
sail_all: sail/sail sail/sail.6
|
||||
|
||||
sail_install: sail_all
|
||||
- $(INSTALL_SCORE_GAME) sail/sail $(INSTALL_PREFIX)$(GAMESDIR)/sail
|
||||
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/sail
|
||||
+ $(INSTALL_SCORE_GAME) sail/sail $(INSTALL_PREFIX)$(GAMESDIR)/.sail-real
|
||||
$(HIDE_GAME) sail
|
||||
$(INSTALL_SCORE_FILE) $(SAIL_SCOREFILE)
|
||||
$(INSTALL_SAIL_DIR) $(INSTALL_PREFIX)$(SAIL_DIR)
|
||||
diff -Naur bsd-games-2.17/snake/snake/Makefrag bsd-games-patch/snake/snake/Makefrag
|
||||
--- bsd-games-2.17/snake/snake/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/snake/snake/Makefrag 2020-04-23 20:24:04.722172766 +0700
|
||||
@@ -31,7 +31,8 @@
|
||||
snake_snake_all: snake/snake/snake snake/snake/snake.6
|
||||
|
||||
snake_snake_install: snake_snake_all
|
||||
- $(INSTALL_SCORE_GAME) snake/snake/snake $(INSTALL_PREFIX)$(GAMESDIR)/snake
|
||||
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/snake
|
||||
+ $(INSTALL_SCORE_GAME) snake/snake/snake $(INSTALL_PREFIX)$(GAMESDIR)/.snake-real
|
||||
$(HIDE_GAME) snake
|
||||
$(INSTALL_SCORE_FILE) $(SNAKE_SCOREFILE)
|
||||
$(INSTALL_SCORE_FILE) $(SNAKE_RAWSCOREFILE)
|
||||
--- bsd-games-2.17.orig/snake/snscore/Makefrag 1970-01-01 07:00:01.000000000 +0700
|
||||
+++ bsd-games-2.17/snake/snscore/Makefrag 2020-08-06 12:33:09.636089394 +0700
|
||||
@@ -32,6 +32,7 @@
|
||||
snake_snscore_all: snake/snscore/snscore
|
||||
|
||||
snake_snscore_install: snake_snscore_all
|
||||
- $(INSTALL_BINARY) snake/snscore/snscore $(INSTALL_PREFIX)$(GAMESDIR)/snscore
|
||||
+ $(INSTALL_BINARY) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/snscore
|
||||
+ $(INSTALL_BINARY) snake/snscore/snscore $(INSTALL_PREFIX)$(GAMESDIR)/.snscore-real
|
||||
$(HIDE_GAME) snscore
|
||||
$(INSTALL_MANUAL) snake.6 snscore.6
|
||||
diff -Naur bsd-games-2.17/tetris/Makefrag bsd-games-patch/tetris/Makefrag
|
||||
--- bsd-games-2.17/tetris/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/tetris/Makefrag 2020-04-23 20:24:04.734172616 +0700
|
||||
@@ -32,7 +32,8 @@
|
||||
tetris_all: tetris/tetris tetris/tetris.6
|
||||
|
||||
tetris_install: tetris_all
|
||||
- $(INSTALL_SCORE_GAME) tetris/tetris $(INSTALL_PREFIX)$(GAMESDIR)/tetris-bsd
|
||||
+ $(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/tetris-bsd
|
||||
+ $(INSTALL_SCORE_GAME) tetris/tetris $(INSTALL_PREFIX)$(GAMESDIR)/.tetris-bsd-real
|
||||
$(HIDE_GAME) tetris-bsd
|
||||
$(INSTALL_SCORE_FILE) $(TETRIS_SCOREFILE)
|
||||
ln -f tetris/tetris.6 tetris/tetris-bsd.6
|
||||
diff -Naur bsd-games-2.17/wrapper bsd-games-patch/wrapper
|
||||
--- bsd-games-2.17/wrapper 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/wrapper 2020-04-23 20:24:37.153766719 +0700
|
||||
@@ -0,0 +1,91 @@
|
||||
+#!/bin/sh
|
||||
+# This file works around limitations of our read-only Store.
|
||||
+
|
||||
+set -e
|
||||
+
|
||||
+check_empty_files () {
|
||||
+ # those start empty
|
||||
+ for f in ${@}
|
||||
+ do
|
||||
+ if [[ ! -f ${f} ]]
|
||||
+ then
|
||||
+ touch ${f}
|
||||
+ echo "$(pwd)/${f} RESTORED"
|
||||
+ fi
|
||||
+ done
|
||||
+}
|
||||
+check_data_files () {
|
||||
+ # those start with some initial data
|
||||
+ for f in ${@}
|
||||
+ do
|
||||
+ if [[ ! -f ${f} ]]
|
||||
+ then
|
||||
+ cp STATIC_DATA/${game}/${f} ${f}
|
||||
+ chmod u+w ${f}
|
||||
+ echo "$(pwd)/${f} RESTORED"
|
||||
+ fi
|
||||
+ done
|
||||
+}
|
||||
+visit_dir () {
|
||||
+ mkdir -p ${1}
|
||||
+ cd ${1}
|
||||
+}
|
||||
+exit_with_variable_error () {
|
||||
+ variables="${1}${2:+ or ${2}}"
|
||||
+ echo "Guix: Please set up the ${variables} variable."
|
||||
+ echo "Examples:"
|
||||
+ echo " export ${1}=/var/multiplayer"
|
||||
+ echo " export ${2:-${1}}=~/.local/share/bsd-games"
|
||||
+ echo "You can place this in ~/.bashrc or a similar file for Your shell."
|
||||
+ echo "For multiplayer this directory should be writable for all players."
|
||||
+ exit 1
|
||||
+}
|
||||
+
|
||||
+game=$(basename $0)
|
||||
+if [[ ${game} == "hack" ]]
|
||||
+then
|
||||
+ if [[ -n ${HACKDIR} ]]; then visit_dir "${HACKDIR}"
|
||||
+ elif [[ -n ${BSD_GAMES_DIR} ]]; then visit_dir "${BSD_GAMES_DIR}/hack"
|
||||
+ else exit_with_variable_error "HACKDIR" "BSD_GAMES_DIR"
|
||||
+ fi
|
||||
+else
|
||||
+ if [[ -n ${BSD_GAMES_DIR} ]]; then visit_dir "${BSD_GAMES_DIR}"
|
||||
+ else exit_with_variable_error "BSD_GAMES_DIR"
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
+case ${game} in
|
||||
+ ### Games with score-files
|
||||
+ atc)
|
||||
+ check_empty_files "atc_score";;
|
||||
+ battlestar)
|
||||
+ check_empty_files "battlestar.log";;
|
||||
+ canfield)
|
||||
+ check_empty_files "cfscores";;
|
||||
+ cribbage)
|
||||
+ check_empty_files "criblog";;
|
||||
+ robots)
|
||||
+ check_empty_files "robots_roll";;
|
||||
+ snake)
|
||||
+ check_empty_files "snakerawscores" "snake.log";;
|
||||
+ tetris)
|
||||
+ check_empty_files "tetris-bsd.scores";;
|
||||
+ ### Games with saved state
|
||||
+ hack)
|
||||
+ check_empty_files "record" "perm"
|
||||
+ check_data_files "data" "help" "hh" "rumors"
|
||||
+ visit_dir "save"
|
||||
+ cd ../../;;
|
||||
+ phantasia)
|
||||
+ visit_dir "phantasia"
|
||||
+ check_empty_files "characs" "gold" "lastdead"\
|
||||
+ "mess" "motd" "scoreboard" "void"
|
||||
+ check_data_files "monsters"
|
||||
+ cd ../;;
|
||||
+ sail)
|
||||
+ visit_dir "sail"
|
||||
+ check_empty_files "log" "syncfile"
|
||||
+ cd ../;;
|
||||
+esac
|
||||
+
|
||||
+exec .${game}-real ${@}
|
|
@ -0,0 +1,22 @@
|
|||
diff --git a/hunt/hunt/playit.c b/hunt/hunt/playit.c
|
||||
index 9acf86e..881a4e7 100644
|
||||
--- a/hunt/hunt/playit.c
|
||||
+++ b/hunt/hunt/playit.c
|
||||
@@ -114,7 +114,7 @@ playit()
|
||||
bad_con();
|
||||
/* NOTREACHED */
|
||||
}
|
||||
- if (ntohl(version) != (unsigned long)HUNT_VERSION) {
|
||||
+ if (ntohl(version) != (uint32_t)HUNT_VERSION) {
|
||||
bad_ver();
|
||||
/* NOTREACHED */
|
||||
}
|
||||
@@ -649,7 +649,7 @@ do_message()
|
||||
bad_con();
|
||||
/* NOTREACHED */
|
||||
}
|
||||
- if (ntohl(version) != (unsigned long)HUNT_VERSION) {
|
||||
+ if (ntohl(version) != (uint32_t)HUNT_VERSION) {
|
||||
bad_ver();
|
||||
/* NOTREACHED */
|
||||
}
|
|
@ -0,0 +1,87 @@
|
|||
Those games rely on user to provide the files to write scores in.
|
||||
Those score-files are initially empty. Anyway, the Store is read-only.
|
||||
So we do not install those empty files.
|
||||
|
||||
diff -Naur bsd-games-2.17/install-score.in bsd-games-patch/install-score.in
|
||||
--- bsd-games-2.17/install-score.in 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/install-score.in 2020-04-22 21:41:47.810544804 +0700
|
||||
@@ -1,45 +0,0 @@
|
||||
-# install-score.in - install a score file
|
||||
-#
|
||||
-# Copyright (c) 1997, 1998, 1999 Joseph Samuel Myers.
|
||||
-# All rights reserved.
|
||||
-#
|
||||
-# Redistribution and use in source and binary forms, with or without
|
||||
-# modification, are permitted provided that the following conditions
|
||||
-# are met:
|
||||
-# 1. Redistributions of source code must retain the above copyright
|
||||
-# notice, this list of conditions and the following disclaimer.
|
||||
-# 2. Redistributions in binary form must reproduce the above copyright
|
||||
-# notice, this list of conditions and the following disclaimer in the
|
||||
-# documentation and/or other materials provided with the distribution.
|
||||
-# 3. The name of the author may not be used to endorse or promote products
|
||||
-# derived from this software without specific prior written permission.
|
||||
-#
|
||||
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
-# SUCH DAMAGE.
|
||||
-
|
||||
-set -e
|
||||
-
|
||||
-if [ "$1" = "-p" ]; then
|
||||
- scorefile="@install_prefix@$2"
|
||||
- perms=@vardata_perms_priv@
|
||||
-else
|
||||
- scorefile="@install_prefix@$1"
|
||||
- perms=@vardata_perms@
|
||||
-fi
|
||||
-
|
||||
-mkdir -p "$(dirname "$scorefile")"
|
||||
-
|
||||
-test -e "$scorefile" || touch "$scorefile"
|
||||
-if [ @do_chown@ = y ]; then
|
||||
- chown @vardata_owner@:@vardata_group@ "$scorefile"
|
||||
-fi
|
||||
-chmod "$perms" "$scorefile"
|
||||
diff -Naur bsd-games-2.17/phantasia/Makefrag bsd-games-patch/phantasia/Makefrag
|
||||
--- bsd-games-2.17/phantasia/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/phantasia/Makefrag 2020-04-22 21:26:00.162409464 +0700
|
||||
@@ -27,9 +27,8 @@
|
||||
# SUCH DAMAGE.
|
||||
|
||||
phantasia_DIRS := $(GAMESDIR) $(MAN6DIR) $(PHANTASIA_DIR)
|
||||
-phantasia_VFILES1 := gold lastdead mess monsters motd void
|
||||
-phantasia_VFILES2 := scoreboard characs
|
||||
-phantasia_CLEANFILES := $(phantasia_VFILES1) $(phantasia_VFILES2) scorefiles.stamp
|
||||
+phantasia_VFILES1 := monsters
|
||||
+phantasia_CLEANFILES := $(phantasia_VFILES1) scorefiles.stamp
|
||||
|
||||
phantasia_all: phantasia/phantasia phantasia/phantasia.6 phantasia/scorefiles.stamp
|
||||
|
||||
@@ -43,9 +42,4 @@
|
||||
(set -e; for f in $(phantasia_VFILES1); do \
|
||||
cp phantasia/$$f $(INSTALL_PREFIX)$(PHANTASIA_DIR)/$$f; \
|
||||
$(INSTALL_SCORE_FILE) $(PHANTASIA_DIR)/$$f; done)
|
||||
- (set -e; for f in $(phantasia_VFILES2); do \
|
||||
- if [ ! -e $(PHANTASIA_DIR)/$$f ]; then \
|
||||
- cp phantasia/$$f $(INSTALL_PREFIX)$(PHANTASIA_DIR)/$$f; fi; done; \
|
||||
- $(INSTALL_SCORE_FILE) $(PHANTASIA_DIR)/scoreboard; \
|
||||
- $(INSTALL_SCORE_FILE) -p $(PHANTASIA_DIR)/characs)
|
||||
$(INSTALL_MANUAL) phantasia/phantasia.6
|
||||
diff -Naur bsd-games-2.17/sail/Makefrag bsd-games-patch/sail/Makefrag
|
||||
--- bsd-games-2.17/sail/Makefrag 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/sail/Makefrag 2020-04-22 21:26:48.701801676 +0700
|
||||
@@ -34,5 +34,4 @@
|
||||
$(INSTALL_SCORE_GAME) sail/sail $(INSTALL_PREFIX)$(GAMESDIR)/sail
|
||||
$(HIDE_GAME) sail
|
||||
$(INSTALL_SCORE_FILE) $(SAIL_SCOREFILE)
|
||||
- $(INSTALL_SAIL_DIR) $(INSTALL_PREFIX)$(SAIL_DIR)
|
||||
$(INSTALL_MANUAL) sail/sail.6
|
|
@ -0,0 +1,14 @@
|
|||
--- a/dab/gamescreen.h 2004-01-02 23:34:51.000000000 +0530
|
||||
+++ b/dab/gamescreen.h 2008-07-31 23:45:19.000000000 +0530
|
||||
@@ -70,9 +70,9 @@
|
||||
virtual void redraw(void) = 0; // Refresh
|
||||
virtual int getinput(void) = 0; // Get user input
|
||||
virtual void bell(void) = 0; // Beep
|
||||
- virtual void score(size_t p, const PLAYER& p) = 0; // Post current score
|
||||
- virtual void games(size_t p, const PLAYER& p) = 0; // Post games won
|
||||
- virtual void total(size_t p, const PLAYER& p) = 0; // Post total score
|
||||
+ virtual void score(size_t, const PLAYER&) = 0; // Post current score
|
||||
+ virtual void games(size_t, const PLAYER&) = 0; // Post games won
|
||||
+ virtual void total(size_t, const PLAYER&) = 0; // Post total score
|
||||
virtual void ties(const PLAYER& p) = 0; // Post tie games
|
||||
};
|
|
@ -0,0 +1,194 @@
|
|||
diff -Naur bsd-games-2.17/boggle/boggle/bog.c bsd-games-2.17.1/boggle/boggle/bog.c
|
||||
--- bsd-games-2.17/boggle/boggle/bog.c 2004-12-07 07:34:21.000000000 -0600
|
||||
+++ bsd-games-2.17.1/boggle/boggle/bog.c 2010-05-22 10:51:23.000000000 -0500
|
||||
@@ -336,7 +336,7 @@
|
||||
}
|
||||
|
||||
while (1) {
|
||||
- if (getline(buf) == NULL) {
|
||||
+ if (boggle_getline(buf) == NULL) {
|
||||
if (feof(stdin))
|
||||
clearerr(stdin);
|
||||
break;
|
||||
diff -Naur bsd-games-2.17/boggle/boggle/extern.h bsd-games-2.17.1/boggle/boggle/extern.h
|
||||
--- bsd-games-2.17/boggle/boggle/extern.h 2004-01-27 14:52:07.000000000 -0600
|
||||
+++ bsd-games-2.17.1/boggle/boggle/extern.h 2010-05-22 10:51:23.000000000 -0500
|
||||
@@ -43,7 +43,7 @@
|
||||
long dictseek(FILE *, long, int);
|
||||
void findword(void);
|
||||
void flushin(FILE *);
|
||||
-char *getline(char *);
|
||||
+char *boggle_getline(char *);
|
||||
void getword(char *);
|
||||
int help(void);
|
||||
int inputch(void);
|
||||
diff -Naur bsd-games-2.17/boggle/boggle/mach.c bsd-games-2.17.1/boggle/boggle/mach.c
|
||||
--- bsd-games-2.17/boggle/boggle/mach.c 2004-12-07 07:34:21.000000000 -0600
|
||||
+++ bsd-games-2.17.1/boggle/boggle/mach.c 2010-05-22 10:51:23.000000000 -0500
|
||||
@@ -168,7 +168,7 @@
|
||||
* - doesn't accept words longer than MAXWORDLEN or containing caps
|
||||
*/
|
||||
char *
|
||||
-getline(q)
|
||||
+boggle_getline(q)
|
||||
char *q;
|
||||
{
|
||||
int ch, done;
|
||||
diff -Naur bsd-games-2.17/cribbage/cribbage.h bsd-games-2.17.1/cribbage/cribbage.h
|
||||
--- bsd-games-2.17/cribbage/cribbage.h 2004-02-08 16:29:14.000000000 -0600
|
||||
+++ bsd-games-2.17.1/cribbage/cribbage.h 2010-05-22 10:51:23.000000000 -0500
|
||||
@@ -77,7 +77,7 @@
|
||||
int fifteens(const CARD [], int);
|
||||
void game(void);
|
||||
void gamescore(void);
|
||||
-char *getline(void);
|
||||
+char *cribbage_getline(void);
|
||||
int getuchar(void);
|
||||
int incard(CARD *);
|
||||
int infrom(const CARD [], int, const char *);
|
||||
diff -Naur bsd-games-2.17/cribbage/crib.c bsd-games-2.17.1/cribbage/crib.c
|
||||
--- bsd-games-2.17/cribbage/crib.c 2004-01-27 14:52:07.000000000 -0600
|
||||
+++ bsd-games-2.17.1/cribbage/crib.c 2010-05-22 10:51:23.000000000 -0500
|
||||
@@ -221,7 +221,7 @@
|
||||
if (!rflag) { /* player cuts deck */
|
||||
msg(quiet ? "Cut for crib? " :
|
||||
"Cut to see whose crib it is -- low card wins? ");
|
||||
- getline();
|
||||
+ cribbage_getline();
|
||||
}
|
||||
i = (rand() >> 4) % CARDS; /* random cut */
|
||||
do { /* comp cuts deck */
|
||||
@@ -397,7 +397,7 @@
|
||||
if (!rflag) { /* random cut */
|
||||
msg(quiet ? "Cut the deck? " :
|
||||
"How many cards down do you wish to cut the deck? ");
|
||||
- getline();
|
||||
+ cribbage_getline();
|
||||
}
|
||||
i = (rand() >> 4) % (CARDS - pos);
|
||||
turnover = deck[i + pos];
|
||||
diff -Naur bsd-games-2.17/cribbage/io.c bsd-games-2.17.1/cribbage/io.c
|
||||
--- bsd-games-2.17/cribbage/io.c 2004-12-07 07:34:21.000000000 -0600
|
||||
+++ bsd-games-2.17.1/cribbage/io.c 2010-05-22 10:51:23.000000000 -0500
|
||||
@@ -245,7 +245,7 @@
|
||||
|
||||
retval = FALSE;
|
||||
rnk = sut = EMPTY;
|
||||
- if (!(line = getline()))
|
||||
+ if (!(line = cribbage_getline()))
|
||||
goto gotit;
|
||||
p = p1 = line;
|
||||
while (*p1 != ' ' && *p1 != '\0')
|
||||
@@ -346,7 +346,7 @@
|
||||
|
||||
for (sum = 0;;) {
|
||||
msg(prompt);
|
||||
- if (!(p = getline()) || *p == '\0') {
|
||||
+ if (!(p = cribbage_getline()) || *p == '\0') {
|
||||
msg(quiet ? "Not a number" :
|
||||
"That doesn't look like a number");
|
||||
continue;
|
||||
@@ -528,12 +528,12 @@
|
||||
}
|
||||
|
||||
/*
|
||||
- * getline:
|
||||
+ * cribbage_getline:
|
||||
* Reads the next line up to '\n' or EOF. Multiple spaces are
|
||||
* compressed to one space; a space is inserted before a ','
|
||||
*/
|
||||
char *
|
||||
-getline()
|
||||
+cribbage_getline()
|
||||
{
|
||||
char *sp;
|
||||
int c, oy, ox;
|
||||
diff -Naur bsd-games-2.17/gomoku/bdisp.c bsd-games-2.17.1/gomoku/bdisp.c
|
||||
--- bsd-games-2.17/gomoku/bdisp.c 2003-12-16 20:47:37.000000000 -0600
|
||||
+++ bsd-games-2.17.1/gomoku/bdisp.c 2010-05-22 10:51:23.000000000 -0500
|
||||
@@ -241,7 +241,7 @@
|
||||
}
|
||||
|
||||
int
|
||||
-getline(buf, size)
|
||||
+gomoku_getline(buf, size)
|
||||
char *buf;
|
||||
int size;
|
||||
{
|
||||
diff -Naur bsd-games-2.17/gomoku/gomoku.h bsd-games-2.17.1/gomoku/gomoku.h
|
||||
--- bsd-games-2.17/gomoku/gomoku.h 2004-01-27 14:52:07.000000000 -0600
|
||||
+++ bsd-games-2.17.1/gomoku/gomoku.h 2010-05-22 10:51:23.000000000 -0500
|
||||
@@ -263,7 +263,7 @@
|
||||
|
||||
void bdinit(struct spotstr *);
|
||||
void init_overlap(void);
|
||||
-int getline(char *, int);
|
||||
+int gomoku_getline(char *, int);
|
||||
void ask(const char *);
|
||||
void dislog(const char *);
|
||||
void bdump(FILE *);
|
||||
diff -Naur bsd-games-2.17/gomoku/main.c bsd-games-2.17.1/gomoku/main.c
|
||||
--- bsd-games-2.17/gomoku/main.c 2004-01-27 14:52:07.000000000 -0600
|
||||
+++ bsd-games-2.17.1/gomoku/main.c 2010-05-22 10:51:23.000000000 -0500
|
||||
@@ -155,7 +155,7 @@
|
||||
if (inputfp == NULL && test == 0) {
|
||||
for (;;) {
|
||||
ask("black or white? ");
|
||||
- getline(buf, sizeof(buf));
|
||||
+ gomoku_getline(buf, sizeof(buf));
|
||||
if (buf[0] == 'b' || buf[0] == 'B') {
|
||||
color = BLACK;
|
||||
break;
|
||||
@@ -172,7 +172,7 @@
|
||||
}
|
||||
} else {
|
||||
setbuf(stdout, 0);
|
||||
- getline(buf, sizeof(buf));
|
||||
+ gomoku_getline(buf, sizeof(buf));
|
||||
if (strcmp(buf, "black") == 0)
|
||||
color = BLACK;
|
||||
else if (strcmp(buf, "white") == 0)
|
||||
@@ -244,7 +244,7 @@
|
||||
getinput:
|
||||
if (interactive)
|
||||
ask("move? ");
|
||||
- if (!getline(buf, sizeof(buf))) {
|
||||
+ if (!gomoku_getline(buf, sizeof(buf))) {
|
||||
curmove = RESIGN;
|
||||
break;
|
||||
}
|
||||
@@ -256,7 +256,7 @@
|
||||
FILE *fp;
|
||||
|
||||
ask("save file name? ");
|
||||
- (void)getline(buf, sizeof(buf));
|
||||
+ (void)gomoku_getline(buf, sizeof(buf));
|
||||
if ((fp = fopen(buf, "w")) == NULL) {
|
||||
glog("cannot create save file");
|
||||
goto getinput;
|
||||
@@ -309,14 +309,14 @@
|
||||
if (i != RESIGN) {
|
||||
replay:
|
||||
ask("replay? ");
|
||||
- if (getline(buf, sizeof(buf)) &&
|
||||
+ if (gomoku_getline(buf, sizeof(buf)) &&
|
||||
(buf[0] == 'y' || buf[0] == 'Y'))
|
||||
goto again;
|
||||
if (strcmp(buf, "save") == 0) {
|
||||
FILE *fp;
|
||||
|
||||
ask("save file name? ");
|
||||
- (void)getline(buf, sizeof(buf));
|
||||
+ (void)gomoku_getline(buf, sizeof(buf));
|
||||
if ((fp = fopen(buf, "w")) == NULL) {
|
||||
glog("cannot create save file");
|
||||
goto replay;
|
||||
@@ -367,7 +367,7 @@
|
||||
quit();
|
||||
top:
|
||||
ask("cmd? ");
|
||||
- if (!getline(fmtbuf, sizeof(fmtbuf)))
|
||||
+ if (!gomoku_getline(fmtbuf, sizeof(fmtbuf)))
|
||||
quit();
|
||||
switch (*fmtbuf) {
|
||||
case '\0':
|
|
@ -0,0 +1,24 @@
|
|||
diff --git a/hunt/hunt/hunt.c b/hunt/hunt/hunt.c
|
||||
index 11f4c44..28321bc 100644
|
||||
--- a/hunt/hunt/hunt.c
|
||||
+++ b/hunt/hunt/hunt.c
|
||||
@@ -394,7 +394,8 @@ broadcast_vec(s, vector)
|
||||
|
||||
vec_cnt = 0;
|
||||
for (ip = ifp; ip; ip = ip->ifa_next)
|
||||
- if ((ip->ifa_addr->sa_family == AF_INET) &&
|
||||
+ if (ip->ifa_addr &&
|
||||
+ (ip->ifa_addr->sa_family == AF_INET) &&
|
||||
(ip->ifa_flags & IFF_BROADCAST))
|
||||
vec_cnt++;
|
||||
|
||||
@@ -405,7 +406,8 @@ broadcast_vec(s, vector)
|
||||
|
||||
vec_cnt = 0;
|
||||
for (ip = ifp; ip; ip = ip->ifa_next)
|
||||
- if ((ip->ifa_addr->sa_family == AF_INET) &&
|
||||
+ if (ip->ifa_addr &&
|
||||
+ (ip->ifa_addr->sa_family == AF_INET) &&
|
||||
(ip->ifa_flags & IFF_BROADCAST))
|
||||
memcpy(&(*vector)[vec_cnt++], ip->ifa_broadaddr,
|
||||
sizeof(struct sockaddr_in));
|
|
@ -0,0 +1,183 @@
|
|||
Arch's patch, and a fix for the "number" game's test.
|
||||
--- bsdgames-2.17.orig/number/number.c
|
||||
+++ bsdgames-2.17/number/number.c
|
||||
@@ -78,9 +78,9 @@
|
||||
|
||||
void convert(char *);
|
||||
int main(int, char *[]);
|
||||
-int number(const char *, int);
|
||||
-void pfract(int);
|
||||
-int unit(int, const char *);
|
||||
+int number(const char *, int, int *);
|
||||
+void pfract(int, int);
|
||||
+int unit(int, const char *, int *);
|
||||
void usage(void) __attribute__((__noreturn__));
|
||||
|
||||
int lflag;
|
||||
@@ -131,7 +131,7 @@
|
||||
convert(line)
|
||||
char *line;
|
||||
{
|
||||
- int flen, len, rval;
|
||||
+ int flen, len, rval, singular;
|
||||
char *p, *fraction;
|
||||
|
||||
flen = 0;
|
||||
@@ -174,7 +174,7 @@
|
||||
--len;
|
||||
}
|
||||
|
||||
- rval = len > 0 ? unit(len, line) : 0;
|
||||
+ rval = len > 0 ? unit(len, line, &singular) : 0;
|
||||
if (fraction != NULL && flen != 0)
|
||||
for (p = fraction; *p != '\0'; ++p)
|
||||
if (*p != '0') {
|
||||
@@ -182,10 +182,10 @@
|
||||
(void)printf("%sand%s",
|
||||
lflag ? " " : "",
|
||||
lflag ? " " : "\n");
|
||||
- if (unit(flen, fraction)) {
|
||||
+ if (unit(flen, fraction, &singular)) {
|
||||
if (lflag)
|
||||
(void)printf(" ");
|
||||
- pfract(flen);
|
||||
+ pfract(flen, singular);
|
||||
rval = 1;
|
||||
}
|
||||
break;
|
||||
@@ -197,9 +197,10 @@
|
||||
}
|
||||
|
||||
int
|
||||
-unit(len, p)
|
||||
+unit(len, p, singular)
|
||||
int len;
|
||||
const char *p;
|
||||
+ int *singular;
|
||||
{
|
||||
int off, rval;
|
||||
|
||||
@@ -208,7 +209,7 @@
|
||||
if (len % 3) {
|
||||
off = len % 3;
|
||||
len -= off;
|
||||
- if (number(p, off)) {
|
||||
+ if (number(p, off, singular)) {
|
||||
rval = 1;
|
||||
(void)printf(" %s%s",
|
||||
name3[len / 3], lflag ? " " : ".\n");
|
||||
@@ -217,14 +218,16 @@
|
||||
}
|
||||
for (; len > 3; p += 3) {
|
||||
len -= 3;
|
||||
- if (number(p, 3)) {
|
||||
+ if (number(p, 3, singular)) {
|
||||
rval = 1;
|
||||
(void)printf(" %s%s",
|
||||
name3[len / 3], lflag ? " " : ".\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
- if (number(p, len)) {
|
||||
+ if (number(p, len, singular)) {
|
||||
+ if (rval)
|
||||
+ *singular = 0;
|
||||
if (!lflag)
|
||||
(void)printf(".\n");
|
||||
rval = 1;
|
||||
@@ -233,17 +236,20 @@
|
||||
}
|
||||
|
||||
int
|
||||
-number(p, len)
|
||||
+number(p, len, singular)
|
||||
const char *p;
|
||||
int len;
|
||||
+ int *singular;
|
||||
{
|
||||
int val, rval;
|
||||
|
||||
rval = 0;
|
||||
+ *singular = 1;
|
||||
switch (len) {
|
||||
case 3:
|
||||
if (*p != '0') {
|
||||
rval = 1;
|
||||
+ *singular = 0;
|
||||
(void)printf("%s hundred", name1[*p - '0']);
|
||||
}
|
||||
++p;
|
||||
@@ -262,33 +268,42 @@
|
||||
}
|
||||
rval = 1;
|
||||
}
|
||||
+ if (val != 1)
|
||||
+ *singular = 0;
|
||||
break;
|
||||
case 1:
|
||||
if (*p != '0') {
|
||||
rval = 1;
|
||||
(void)printf("%s", name1[*p - '0']);
|
||||
}
|
||||
+ if (*p != '1')
|
||||
+ *singular = 0;
|
||||
}
|
||||
return (rval);
|
||||
}
|
||||
|
||||
void
|
||||
-pfract(len)
|
||||
+pfract(len, singular)
|
||||
int len;
|
||||
+ int singular;
|
||||
{
|
||||
static const char *const pref[] = { "", "ten-", "hundred-" };
|
||||
|
||||
switch(len) {
|
||||
case 1:
|
||||
- (void)printf("tenths.\n");
|
||||
+ (void)printf("tenth");
|
||||
break;
|
||||
case 2:
|
||||
- (void)printf("hundredths.\n");
|
||||
+ (void)printf("hundredth");
|
||||
break;
|
||||
default:
|
||||
- (void)printf("%s%sths.\n", pref[len % 3], name3[len / 3]);
|
||||
+ (void)printf("%s%sth", pref[len % 3], name3[len / 3]);
|
||||
break;
|
||||
}
|
||||
+ if (!singular) {
|
||||
+ printf("s");
|
||||
+ }
|
||||
+ printf(".\n");
|
||||
}
|
||||
|
||||
void
|
||||
diff -Naur bsd-games-2.17/tests/number.-0.1 bsd-games-patch/tests/number.-0.1
|
||||
--- bsd-games-2.17/tests/number.-0.1 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/tests/number.-0.1 2020-04-17 15:14:27.831098084 +0700
|
||||
@@ -1,3 +1,3 @@
|
||||
minus
|
||||
one.
|
||||
-tenths.
|
||||
+tenth.
|
||||
diff -Naur bsd-games-2.17/tests/number.-0.2 bsd-games-patch/tests/number.-0.2
|
||||
--- bsd-games-2.17/tests/number.-0.2 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/tests/number.-0.2 2020-04-17 15:20:48.162336279 +0700
|
||||
@@ -0,0 +1,3 @@
|
||||
+minus
|
||||
+two.
|
||||
+tenths.
|
||||
diff -Naur bsd-games-2.17/tests/number.test bsd-games-patch/tests/number.test
|
||||
--- bsd-games-2.17/tests/number.test 1970-01-01 07:00:00.000000000 +0700
|
||||
+++ bsd-games-patch/tests/number.test 2020-04-17 15:20:22.774654155 +0700
|
||||
@@ -36,6 +36,8 @@
|
||||
testno 1
|
||||
number/number -- -0.1 >test.out 2>&1 || failtest
|
||||
compare test.out tests/number.-0.1
|
||||
+number/number -- -0.2 >test.out 2>&1 || failtest
|
||||
+compare test.out tests/number.-0.2
|
||||
rm -f test.out
|
||||
|
||||
testno 2
|
|
@ -0,0 +1,13 @@
|
|||
There is already a "fish" shell.
|
||||
diff -ur bsd-games-2.17.orig/fish/Makefrag bsd-games-2.17/fish/Makefrag
|
||||
--- bsd-games-2.17.orig/fish/Makefrag 1970-01-01 07:00:01.000000000 +0700
|
||||
+++ bsd-games-2.17/fish/Makefrag 2020-08-06 19:18:43.204492847 +0700
|
||||
@@ -31,7 +31,7 @@
|
||||
fish_all: fish/fish fish/fish.instr fish/fish.6
|
||||
|
||||
fish_install: fish_all
|
||||
- $(INSTALL_BINARY) fish/fish $(INSTALL_PREFIX)$(GAMESDIR)/fish
|
||||
+ $(INSTALL_BINARY) fish/fish $(INSTALL_PREFIX)$(GAMESDIR)/fish-game
|
||||
$(HIDE_GAME) fish
|
||||
$(INSTALL_DATA) fish/fish.instr $(INSTALL_PREFIX)$(FISH_INSTRFILE)
|
||||
$(INSTALL_MANUAL) fish/fish.6
|
|
@ -0,0 +1,14 @@
|
|||
diff -ru a/include/stdio.h b/include/stdio.h
|
||||
--- a/include/stdio.h 2000-08-04 10:24:39.000000000 +1000
|
||||
+++ b/include/stdio.h 2005-06-18 14:26:35.000000000 +1000
|
||||
@@ -34,6 +34,10 @@
|
||||
#include <bsd-games.h>
|
||||
#include_next <stdio.h>
|
||||
|
||||
+__BEGIN_DECLS
|
||||
+
|
||||
#ifndef HAVE_fgetln
|
||||
extern char *fgetln(FILE *stream, size_t *len);
|
||||
#endif
|
||||
+
|
||||
+__END_DECLS
|
Reference in New Issue