Cleanups - globals, extraneous #defines, #include order, etc.

git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@161 db0b04b0-f4d1-0310-9a6d-de3e77497b0e
This commit is contained in:
Joshua Kwan 2004-01-25 22:34:35 +00:00
parent 5a152569a8
commit c4932ed44b
4 changed files with 43 additions and 67 deletions

View File

@ -1,7 +1,7 @@
/* dgamelaunch.c
*
* (c)2001-3 M. Drew Streib <dtype@dtype.org>
* also parts (c) 2003 Joshua Kwan <joshk@triplehelix.org>,
* (c)2001-4 M. Drew Streib <dtype@dtype.org>
* also parts (c) 2003-4 Joshua Kwan <joshk@triplehelix.org>,
* Brett Carrington <brettcar@segvio.org>,
* Jilles Tjoelker <jilles@stack.nl>
*
@ -26,12 +26,6 @@
* This is a little wrapper for nethack (and soon other programs) that
* will allow them to be run from a telnetd session, chroot, shed privs,
* make a simple login, then play the game.
*
* By default, this thing is also statically compiled, and can thus be
* run inside of a chroot jail itself if necessary.
*
* Yes, I know it is all global variables. Deal with it. The program
* is very small.
*/
#define _GNU_SOURCE
@ -48,12 +42,14 @@
/* program stuff */
#include <stdlib.h>
#include <curses.h>
#include <sys/types.h>
#include <sys/file.h> /* for flock() */
#include <sys/time.h>
#include <sys/wait.h>
#include <sys/ioctl.h> /* ttyrec */
#include <sys/stat.h>
#include <stdlib.h>
#include <curses.h>
#ifndef __FreeBSD__
# include <crypt.h>
@ -73,12 +69,9 @@
#include <pwd.h>
#include <grp.h>
#include <time.h>
#include <sys/resource.h>
#include <sys/ioctl.h> /* ttyrec */
#include <errno.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>
#include <signal.h>
#include <assert.h>
#include <ctype.h>
@ -89,11 +82,12 @@
extern FILE* yyin;
extern int yyparse ();
extern pid_t child; /* nethack process */
extern int ee_main (int argc, char **argv);
extern int ttyplay_main (char *ttyfile, int mode, int rstripgfx);
extern int ttyrec_main (char *);
extern int master;
extern int slave;
extern int ttyrec_main (char *username, char* ttyrec_filename);
extern int master, slave;
extern struct termios tt;
extern struct winsize win;
@ -103,23 +97,21 @@ struct dg_config *myconfig = NULL;
char* config = NULL;
struct dg_config defconfig = {
"/var/lib/dgamelaunch/",
"/bin/nethack",
"/dgldir/",
"/dgl-lock",
"/dgl-login",
"/dgl-banner",
"/dgl-default-rcfile",
"/var/mail/",
"games", "games",
5, 60, /* games:games in Debian */
64000
.chroot = "/var/lib/dgamelaunch/",
.nethack = "/bin/nethack",
.dglroot = "/dgldir/",
.lockfile = "/dgl-lock",
.passwd = "/dgl-login",
.banner = "/dgl-banner",
.rcfile = "/dgl-default-rcfile",
.spool = "/var/mail/",
.shed_user = "games", .shed_group = "games",
.shed_uid = 5, .shed_gid = 60, /* games:games in Debian */
.max = 64000
};
int pid_game = 0;
int loggedin = 0;
char rcfilename[80];
char ttyrec_filename[100];
char *chosen_name;
int f_num = 0;
@ -225,11 +217,12 @@ ttyrec_getmaster ()
/* ************************************************************* */
void
char*
gen_ttyrec_filename ()
{
time_t rawtime;
struct tm *ptm;
char *ttyrec_filename = calloc(100, sizeof(char));
/* append time to filename */
time (&rawtime);
@ -237,12 +230,13 @@ gen_ttyrec_filename ()
snprintf (ttyrec_filename, 100, "%04i-%02i-%02i.%02i:%02i:%02i.ttyrec",
ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday,
ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
return ttyrec_filename;
}
/* ************************************************************* */
void
gen_inprogress_lock (pid_t pid)
gen_inprogress_lock (pid_t pid, char* ttyrec_filename)
{
char lockfile[130], pidbuf[16];
int fd;
@ -270,10 +264,10 @@ gen_inprogress_lock (pid_t pid)
void
catch_sighup (int signum)
{
if (pid_game)
if (child)
{
sleep (10);
kill (pid_game, SIGHUP);
kill (child, SIGHUP);
sleep (5);
}
graceful_exit (2);
@ -1520,11 +1514,8 @@ main (int argc, char** argv)
free (spool);
/* lock */
gen_ttyrec_filename ();
/* launch program */
ttyrec_main (me->username);
ttyrec_main (me->username, gen_ttyrec_filename());
/* NOW we can safely kill this */
freefile ();

View File

@ -56,13 +56,12 @@ struct dg_config
extern char* config; /* file path */
extern struct dg_config *myconfig;
extern struct dg_config defconfig;
/* dgamelaunch.c function prototypes */
extern void create_config (void);
extern void ttyrec_getmaster (void);
extern void gen_ttyrec_filename (void);
extern void gen_inprogress_lock (pid_t pid);
extern char* gen_ttyrec_filename (void);
extern void gen_inprogress_lock (pid_t pid, char* ttyrec_filename);
extern void catch_sighup (int signum);
extern void loadbanner (struct dg_banner *ban);
extern void drawbanner (unsigned int start_line, unsigned int howmany);

View File

@ -31,14 +31,15 @@
* SUCH DAMAGE.
*/
#include <sys/types.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <unistd.h>
#include <termios.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <curses.h>
#include "ttyrec.h"

View File

@ -45,10 +45,13 @@
#include "dgamelaunch.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <termios.h>
#include <sys/ioctl.h>
#include <time.h>
#include <sys/file.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <termios.h>
#include <time.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
@ -59,7 +62,6 @@
#include <stdlib.h>
#include <fcntl.h>
#include <sys/time.h>
#include "ttyrec.h"
#include "io.h"
@ -67,19 +69,6 @@
# define XCASE 0
#endif
#define HAVE_inet_aton
#define HAVE_scsi_h
#define HAVE_kd_h
#define _(FOO) FOO
#ifdef HAVE_openpty
#include <libutil.h>
#endif
extern char ttyrec_filename[100];
extern int pid_game;
void done (void);
void fail (void);
void fixtty (void);
@ -91,8 +80,7 @@ void doshell (char *);
FILE *fscript;
int master;
int slave;
int child;
int subchild;
pid_t child, subchild;
struct termios tt;
struct winsize win;
@ -102,7 +90,7 @@ int aflg;
int uflg;
int
ttyrec_main (char *username)
ttyrec_main (char *username, char* ttyrec_filename)
{
void finish ();
char dirname[100];
@ -142,8 +130,7 @@ ttyrec_main (char *username)
if (child)
{
close (slave);
pid_game = child;
gen_inprogress_lock (pid_game);
gen_inprogress_lock (child, ttyrec_filename);
dooutput ();
}
else
@ -166,8 +153,6 @@ doinput ()
done ();
}
#include <sys/wait.h>
void
finish ()
{