From eb95f895b2e97bfb27cd0c16e587e8a2ddfa2369 Mon Sep 17 00:00:00 2001 From: Jacob Adams Date: Sat, 4 Apr 2015 22:53:00 -0400 Subject: [PATCH] Import games/rain Change-Id: Ifc9a9d69795e3281f62c3c3438622ce74994b8b0 --- distrib/sets/lists/minix/mi | 2 + games/Makefile | 2 +- games/rain/Makefile | 9 +++ games/rain/rain.6 | 54 +++++++++++++ games/rain/rain.c | 153 ++++++++++++++++++++++++++++++++++++ 5 files changed, 219 insertions(+), 1 deletion(-) create mode 100644 games/rain/Makefile create mode 100644 games/rain/rain.6 create mode 100644 games/rain/rain.c diff --git a/distrib/sets/lists/minix/mi b/distrib/sets/lists/minix/mi index 5c848b3c1..dc9cca1bf 100644 --- a/distrib/sets/lists/minix/mi +++ b/distrib/sets/lists/minix/mi @@ -635,6 +635,7 @@ ./usr/games/pig minix-sys ./usr/games/ppt minix-sys ./usr/games/primes minix-sys +./usr/games/rain minix-sys ./usr/games/random minix-sys ./usr/games/rogue minix-sys ./usr/games/snake minix-sys @@ -5175,6 +5176,7 @@ ./usr/man/man6/pig.6 minix-sys ./usr/man/man6/ppt.6 minix-sys ./usr/man/man6/primes.6 minix-sys +./usr/man/man6/rain.6 minix-sys ./usr/man/man6/random.6 minix-sys ./usr/man/man6/rogue.6 minix-sys ./usr/man/man6/snake.6 minix-sys diff --git a/games/Makefile b/games/Makefile index 1fcc709e1..ccf4aea74 100644 --- a/games/Makefile +++ b/games/Makefile @@ -13,7 +13,7 @@ SUBDIR= adventure arithmetic \ factor fish fortune \ monop morse number \ pig ppt primes \ - random rogue snake tetris \ + rain random rogue snake tetris \ wargames .if !defined(__MINIX) diff --git a/games/rain/Makefile b/games/rain/Makefile new file mode 100644 index 000000000..7f85034b3 --- /dev/null +++ b/games/rain/Makefile @@ -0,0 +1,9 @@ +# $NetBSD: Makefile,v 1.11 2010/02/06 23:45:25 he Exp $ +# @(#)Makefile 8.1 (Berkeley) 5/31/93 + +PROG= rain +MAN= rain.6 +DPADD= ${LIBCURSES} ${LIBTERMINFO} +LDADD= -lcurses -lterminfo + +.include diff --git a/games/rain/rain.6 b/games/rain/rain.6 new file mode 100644 index 000000000..cf07f4de2 --- /dev/null +++ b/games/rain/rain.6 @@ -0,0 +1,54 @@ +.\" $NetBSD: rain.6,v 1.12 2005/09/15 02:09:41 wiz Exp $ +.\" +.\" Copyright (c) 1989, 1993 +.\" The Regents of the University of California. 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. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. +.\" +.\" @(#)rain.6 8.1 (Berkeley) 5/31/93 +.\" +.Dd May 31, 1993 +.Dt RAIN 6 +.Os +.Sh NAME +.Nm rain +.Nd animated raindrops display +.Sh SYNOPSIS +.Nm +.Op Fl d Ar delay +.Sh DESCRIPTION +The output of +.Nm +is modeled after the +.Tn VAX/VMS +program of the same name. +To obtain the proper effect, either the terminal must be set for 9600 +baud or the +.Fl d +option must be used to specify a delay, in milliseconds, between each +update. +A reasonable delay is 120; the default is 0. +.Sh AUTHORS +.An Eric P. Scott diff --git a/games/rain/rain.c b/games/rain/rain.c new file mode 100644 index 000000000..bd60ec32f --- /dev/null +++ b/games/rain/rain.c @@ -0,0 +1,153 @@ +/* $NetBSD: rain.c,v 1.21 2008/08/08 16:10:47 drochner Exp $ */ + +/* + * Copyright (c) 1980, 1993 + * The Regents of the University of California. 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + */ + +#include +#ifndef lint +__COPYRIGHT("@(#) Copyright (c) 1980, 1993\ + The Regents of the University of California. All rights reserved."); +#endif /* not lint */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)rain.c 8.1 (Berkeley) 5/31/93"; +#else +__RCSID("$NetBSD: rain.c,v 1.21 2008/08/08 16:10:47 drochner Exp $"); +#endif +#endif /* not lint */ + +/* + * rain 11/3/1980 EPS/CITHEP + * cc rain.c -o rain -O -ltermlib + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static volatile sig_atomic_t sig_caught = 0; + +int main(int, char **); +static void onsig(int); + + +int +main(int argc, char **argv) +{ + int x, y, j; + long cols, lines; + unsigned int delay = 0; + unsigned long val = 0; + int ch; + char *ep; + int xpos[5], ypos[5]; + + while ((ch = getopt(argc, argv, "d:")) != -1) + switch (ch) { + case 'd': + val = strtoul(optarg, &ep, 0); + if (ep == optarg || *ep) + errx(1, "Invalid delay `%s'", optarg); + if (errno == ERANGE && val == ULONG_MAX) + err(1, "Invalid delay `%s'", optarg); + if (val >= 1000) + errx(1, "Invalid delay `%s' (1-999)", optarg); + delay = (unsigned int)val * 1000; /* ms -> us */ + break; + default: + (void)fprintf(stderr, "Usage: %s [-d delay]\n", + getprogname()); + return 1; + } + + if (!initscr()) + errx(0, "couldn't initialize screen"); + cols = COLS - 4; + lines = LINES - 4; + + (void)signal(SIGHUP, onsig); + (void)signal(SIGINT, onsig); + (void)signal(SIGTERM, onsig); + + (void)curs_set(0); + for (j = 4; j >= 0; --j) { + xpos[j] = random() % cols + 2; + ypos[j] = random() % lines + 2; + } + for (j = 0;;) { + if (sig_caught) { + (void)endwin(); + exit(0); + } + x = random() % cols + 2; + y = random() % lines + 2; + (void)mvaddch(y, x, '.'); + (void)mvaddch(ypos[j], xpos[j], 'o'); + if (!j--) + j = 4; + (void)mvaddch(ypos[j], xpos[j], 'O'); + if (!j--) + j = 4; + (void)mvaddch(ypos[j] - 1, xpos[j], '-'); + (void)mvaddstr(ypos[j], xpos[j] - 1, "|.|"); + (void)mvaddch(ypos[j] + 1, xpos[j], '-'); + if (!j--) + j = 4; + (void)mvaddch(ypos[j] - 2, xpos[j], '-'); + (void)mvaddstr(ypos[j] - 1, xpos[j] - 1, "/ \\"); + (void)mvaddstr(ypos[j], xpos[j] - 2, "| O |"); + (void)mvaddstr(ypos[j] + 1, xpos[j] - 1, "\\ /"); + (void)mvaddch(ypos[j] + 2, xpos[j], '-'); + if (!j--) + j = 4; + (void)mvaddch(ypos[j] - 2, xpos[j], ' '); + (void)mvaddstr(ypos[j] - 1, xpos[j] - 1, " "); + (void)mvaddstr(ypos[j], xpos[j] - 2, " "); + (void)mvaddstr(ypos[j] + 1, xpos[j] - 1, " "); + (void)mvaddch(ypos[j] + 2, xpos[j], ' '); + xpos[j] = x; + ypos[j] = y; + (void)refresh(); + if (delay) (void)usleep(delay); + } +} + +/* ARGSUSED */ +static void +onsig(int dummy __unused) +{ + sig_caught = 1; +}