]> skyeroc.xyz Git - dgamelaunch/commitdiff
Cleanups - globals, extraneous #defines, #include order, etc.
authorJoshua Kwan <joshk@triplehelix.org>
Sun, 25 Jan 2004 22:34:35 +0000 (22:34 +0000)
committerJoshua Kwan <joshk@triplehelix.org>
Sun, 25 Jan 2004 22:34:35 +0000 (22:34 +0000)
git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@161 db0b04b0-f4d1-0310-9a6d-de3e77497b0e

dgamelaunch.c
dgamelaunch.h
ttyplay.c
ttyrec.c

index 2e808ed0ae8d302ef13fc46da2e3a0d7ab69c48f..7872861edf0d18c1d248693887db58aa9397f4ca 100644 (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>
  *
  * 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
 
 /* 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>
 #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>
 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 ();
index f8189ada91ddc9c1b28a038527fc3b0ef51e90c5..0f7a13552a8f7b6ae82bd42655d76287246b5b02 100644 (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);
index b2ba4c6b70b52c5603e9ae82af605b281c753cd4..d57d8a10a504493528d6c375773834ef87d161d3 100644 (file)
--- a/ttyplay.c
+++ b/ttyplay.c
  * 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"
index d7bcb089a702060e506d301bf33ba080f744b6f6..007e5127097f745675d571530e10f8d5482534d7 100644 (file)
--- a/ttyrec.c
+++ b/ttyrec.c
 #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"
 
 # 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 ()
 {