mirror of
https://github.com/openbsd/src.git
synced 2025-01-10 06:47:55 -08:00
'Spam' winners a bit more safely
This commit is contained in:
parent
54eb5b4e54
commit
a6048ad6b9
@ -1,4 +1,4 @@
|
||||
# $OpenBSD: Makefile,v 1.7 1998/09/15 05:12:30 pjanzen Exp $
|
||||
# $OpenBSD: Makefile,v 1.8 1998/10/01 05:31:38 pjanzen Exp $
|
||||
|
||||
# EXTRA
|
||||
# Incorporates code to gather additional performance statistics
|
||||
@ -37,7 +37,7 @@
|
||||
# cause player id's from the file ".playerids" to be used instead.
|
||||
# (.playerids is created upon demand). Only one entry per id # is
|
||||
# allowed in each scoreboard (winning & non-winning).
|
||||
# VT100
|
||||
# VT100
|
||||
# Compile for using vt100 family of terminals. Omission of this
|
||||
# define will cause larn to use termcap, but it will be MUCH slower
|
||||
# due to an extra layer of output interpretation. Also, only VT100
|
||||
@ -52,6 +52,8 @@
|
||||
# used to delay for effect when casting missile type spells.
|
||||
# NOLOG
|
||||
# Turn off logging.
|
||||
# NOSPAM
|
||||
# Don't send e-mail to players once they've won.
|
||||
|
||||
PROG= larn
|
||||
MAN= larn.6
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: bill.c,v 1.3 1998/09/15 05:12:31 pjanzen Exp $ */
|
||||
/* $OpenBSD: bill.c,v 1.4 1998/10/01 05:31:38 pjanzen Exp $ */
|
||||
/* $NetBSD: bill.c,v 1.5 1997/10/18 20:03:06 christos Exp $ */
|
||||
|
||||
/*-
|
||||
@ -38,7 +38,7 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)bill.c 5.2 (Berkeley) 5/28/91";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: bill.c,v 1.3 1998/09/15 05:12:31 pjanzen Exp $";
|
||||
static char rcsid[] = "$OpenBSD: bill.c,v 1.4 1998/10/01 05:31:38 pjanzen Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
@ -50,12 +50,14 @@ static char rcsid[] = "$OpenBSD: bill.c,v 1.3 1998/09/15 05:12:31 pjanzen Exp $"
|
||||
#include <unistd.h>
|
||||
#include "header.h"
|
||||
#include "extern.h"
|
||||
#include "pathnames.h"
|
||||
|
||||
/* bill.c Larn is copyrighted 1986 by Noah Morgan. */
|
||||
|
||||
#ifndef NOSPAM
|
||||
char *mail[] = {
|
||||
"Undeclared Income",
|
||||
"From: The LRS (Larn Revenue Service)\n",
|
||||
"~s Undeclared Income\n",
|
||||
"\n We have heard you survived the caverns of Larn. Let us be the",
|
||||
"\nfirst to congratulate you on your success. It was quite a feat.",
|
||||
"\nIt was also very profitable for you...",
|
||||
@ -67,8 +69,8 @@ char *mail[] = {
|
||||
"\nmean penalties. Once again, congratulations. We look forward",
|
||||
"\nto your future successful expeditions.\n",
|
||||
NULL,
|
||||
"A Noble Deed",
|
||||
"From: His Majesty King Wilfred of Larndom\n",
|
||||
"~s A Noble Deed\n",
|
||||
"\n I have heard of your magnificent feat, and I, King Wilfred,",
|
||||
"\nforthwith declare today to be a national holiday. Furthermore,",
|
||||
"\nthree days hence be ye invited to the castle to receive the",
|
||||
@ -76,15 +78,15 @@ char *mail[] = {
|
||||
"\n\nBravery and courage be yours.",
|
||||
"\n\nMay you live in happiness forevermore...\n",
|
||||
NULL,
|
||||
"You Bastard!",
|
||||
"From: Count Endelford\n",
|
||||
"~s You Bastard!\n",
|
||||
"\n I have heard (from sources) of your journey. Congratulations!",
|
||||
"\nYou Bastard! With several attempts I have yet to endure the",
|
||||
" caves,\nand you, a nobody, make the journey! From this time",
|
||||
" onward, bewarned -- \nupon our meeting you shall pay the price!\n",
|
||||
NULL,
|
||||
"High Praise",
|
||||
"From: Mainair, Duke of Larnty\n",
|
||||
"~s High Praise\n",
|
||||
"\n With certainty, a hero I declare to be amongst us! A nod of",
|
||||
"\nfavour I send to thee. Me thinks Count Endelford this day of",
|
||||
"\nright breath'eth fire as of dragon of whom ye are slayer. I",
|
||||
@ -92,8 +94,8 @@ char *mail[] = {
|
||||
"\nunleash some of thy wealth upon those who be unfortunate, I,",
|
||||
"\nDuke Mainair, shall equal thy gift also.\n",
|
||||
NULL,
|
||||
"these poor children",
|
||||
"From: St. Mary's Children's Home\n",
|
||||
"~s these poor children\n",
|
||||
"\n News of your great conquests has spread to all of Larndom.",
|
||||
"\nMight I have a moment of a great adventurer's time? We here at",
|
||||
"\nSt. Mary's Children's Home are very poor, and many children are",
|
||||
@ -102,8 +104,8 @@ char *mail[] = {
|
||||
"\nin our plight? Whatever you could give will help much.",
|
||||
"\n(your gift is tax deductible)\n",
|
||||
NULL,
|
||||
"hope",
|
||||
"From: The National Cancer Society of Larn\n",
|
||||
"~s hope\n",
|
||||
"\nCongratulations on your successful expedition. We are sure much",
|
||||
"\ncourage and determination were needed on your quest. There are",
|
||||
"\nmany though, that could never hope to undertake such a journey",
|
||||
@ -114,8 +116,10 @@ char *mail[] = {
|
||||
"\ndreaded disease, and you can help today. Could you please see it",
|
||||
"\nin your heart to give generously? Your continued good health",
|
||||
"\ncan be your everlasting reward.\n",
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* function to mail the letters to the player if a winner
|
||||
@ -124,41 +128,54 @@ char *mail[] = {
|
||||
void
|
||||
mailbill()
|
||||
{
|
||||
#ifndef NOSPAM
|
||||
int i;
|
||||
char fname[32];
|
||||
char buf[128];
|
||||
char **cp;
|
||||
int fd;
|
||||
int fd[2];
|
||||
pid_t pid;
|
||||
|
||||
/* This is the last thing that gets run. We don't care if it
|
||||
* fails, so exit on any failure. Drop privs. */
|
||||
setegid(gid);
|
||||
setgid(gid);
|
||||
wait(0);
|
||||
if (fork() == 0) {
|
||||
resetscroll();
|
||||
cp = mail;
|
||||
sprintf(fname, "/tmp/#%dlarnmail", getpid());
|
||||
for (i = 0; i < 6; i++) {
|
||||
if ((fd = open(fname, O_WRONLY | O_TRUNC | O_CREAT,
|
||||
0666)) == -1)
|
||||
exit(0);
|
||||
while (*cp != NULL) {
|
||||
if (*cp[0] == '1') {
|
||||
resetscroll();
|
||||
cp = mail;
|
||||
for (i = 0; i < 6; i++) {
|
||||
if (pipe(fd) < 0)
|
||||
exit(0);
|
||||
if ((pid = fork()) < 0)
|
||||
exit(0);
|
||||
else if (pid > 0) { /* parent */
|
||||
close(fd[0]);
|
||||
while (*++cp != NULL) {
|
||||
if (*cp[0] == '1')
|
||||
sprintf(buf, "\n%ld gold pieces back with you from your journey. As the",
|
||||
(long) c[GOLD]);
|
||||
write(fd, buf, strlen(buf));
|
||||
} else if (*cp[0] == '2') {
|
||||
else if (*cp[0] == '2')
|
||||
sprintf(buf, "\nin preparing your tax bill. You owe %ld gold pieces as", (long) c[GOLD] * TAXRATE);
|
||||
write(fd, buf, strlen(buf));
|
||||
} else
|
||||
write(fd, *cp, strlen(*cp));
|
||||
cp++;
|
||||
else
|
||||
sprintf(buf, *cp);
|
||||
if (write(fd[1], buf, strlen(buf)) != strlen(buf))
|
||||
exit(0);
|
||||
}
|
||||
cp++;
|
||||
|
||||
close(fd);
|
||||
sprintf(buf, "mail -I %s < %s > /dev/null",
|
||||
loginname, fname);
|
||||
system(buf);
|
||||
unlink(fname);
|
||||
close(fd[1]);
|
||||
if (waitpid(pid, NULL, 0) < 0)
|
||||
exit(0);
|
||||
} else { /* child */
|
||||
close(fd[1]);
|
||||
if (fd[0] != STDIN_FILENO) {
|
||||
if (dup2(fd[0], STDIN_FILENO) != STDIN_FILENO)
|
||||
exit(0);
|
||||
close(fd[0]);
|
||||
}
|
||||
if (execl(_PATH_MAIL, "mail", "-s", *cp, loginname,
|
||||
(char *) NULL) < 0)
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
exit(0);
|
||||
}
|
||||
|
@ -1,12 +1,13 @@
|
||||
/* $OpenBSD: main.c,v 1.8 1998/09/15 05:12:32 pjanzen Exp $ */
|
||||
/* $OpenBSD: main.c,v 1.9 1998/10/01 05:31:38 pjanzen Exp $ */
|
||||
/* $NetBSD: main.c,v 1.12 1998/02/12 08:07:49 mikel Exp $ */
|
||||
|
||||
/* main.c */
|
||||
#ifndef lint
|
||||
static char rcsid[] = "$OpenBSD: main.c,v 1.8 1998/09/15 05:12:32 pjanzen Exp $";
|
||||
static char rcsid[] = "$OpenBSD: main.c,v 1.9 1998/10/01 05:31:38 pjanzen Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <pwd.h>
|
||||
@ -79,11 +80,11 @@ main(argc, argv)
|
||||
/* can we get it from /etc/passwd? */
|
||||
if ((pwe = getpwuid(getuid())) != NULL)
|
||||
ptr = pwe->pw_name;
|
||||
#ifdef NOSPAM
|
||||
else if ((ptr = getenv("LOGNAME")) == 0)
|
||||
if ((ptr = getenv("USER")) == 0) {
|
||||
noone: write(2, "Can't find your logname. Who Are You?\n", 39);
|
||||
exit(1);
|
||||
}
|
||||
if ((ptr = getenv("USER")) == 0)
|
||||
#endif
|
||||
noone: errx(1, "can't find your logname. Who Are You?");
|
||||
}
|
||||
if (ptr == 0)
|
||||
goto noone;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: pathnames.h,v 1.2 1998/09/15 05:12:33 pjanzen Exp $ */
|
||||
/* $OpenBSD: pathnames.h,v 1.3 1998/10/01 05:31:38 pjanzen Exp $ */
|
||||
/* $NetBSD: pathnames.h,v 1.7 1997/10/18 20:03:41 christos Exp $ */
|
||||
|
||||
/*-
|
||||
@ -41,3 +41,5 @@
|
||||
#define _PATH_HELP "/usr/share/games/larn/larn.help"
|
||||
#define _PATH_LEVELS "/usr/share/games/larn/larnmaze"
|
||||
#define _PATH_PLAYERIDS "/var/games/larn/playerids"
|
||||
|
||||
#define _PATH_MAIL "/usr/bin/mail"
|
||||
|
Loading…
Reference in New Issue
Block a user