mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
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>
This commit is contained in:
parent
dd2330a89b
commit
95024494f3
13 changed files with 1012 additions and 0 deletions
183
gnu/packages/patches/bsd-games-number.c-and-test.patch
Normal file
183
gnu/packages/patches/bsd-games-number.c-and-test.patch
Normal file
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue