]> skyeroc.xyz Git - dgamelaunch/commitdiff
Always draw the whole banner.
authorPasi Kallinen <paxed@alt.org>
Tue, 11 Oct 2011 15:50:59 +0000 (15:50 +0000)
committerPasi Kallinen <paxed@alt.org>
Tue, 11 Oct 2011 15:50:59 +0000 (15:50 +0000)
git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@621 db0b04b0-f4d1-0310-9a6d-de3e77497b0e

TODO
dgamelaunch.c
dgamelaunch.h
examples/dgamelaunch.conf

diff --git a/TODO b/TODO
index da3ab5f7c9170e4f85444fe48a721b42a082f88a..f6a627ba04f0567c5f989e56460a01950d641595 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1,9 @@
 
+-occasionally dgl crashes, leaving the shmem semaphore in a state
+ where the shmem block has to be freed.
+
+-configure option --ncurses and --ncursesw
+
 < kerio> paxed: it would also be cool to have %g and %s work within a game definition too
 
 < kerio> paxed: is this intended behavior? i can't set two different spooldirs for two different games
@@ -45,8 +50,6 @@
  key not defined in other commands):
    commands[default] = ...
 
--change dgl-banner handling; we only use the top line of it nowadays...
- (maybe make that info config line: bannerline = "## $SERVERID" or something)
 -allow the admin to config the watching menu:
   -top banner
   -bottom banner
@@ -74,6 +77,8 @@
  into a menu def. auto=try to detect it from file extension.
  would be useful to be able to define a program to run that
  generates the banner? (eg. nethack hiscore list via nethack itself)
+ to output raw escape codes under ncurses, use write(1, "foo", strlen("foo"))
+ (must restore cursor position after printing or ncurses is confoosed)
 -BUG: cannot quit watching until caught up with the stream.
 -allow configuring the watching, new user registration,
  email/passwd change, etc. screens.
index 3641b1c7226b889376424d0855241c184fedbb35..6f1c2de89f1263454e4dfd2ae75fd721dae71a90 100644 (file)
@@ -540,17 +540,14 @@ loadbanner (char *fname, struct dg_banner *ban)
 }
 
 void
-drawbanner (struct dg_banner *ban, unsigned int start_line, unsigned int howmany)
+drawbanner (struct dg_banner *ban)
 {
   unsigned int i;
 
   if (!ban) return;
 
-  if (howmany > ban->len || howmany == 0)
-    howmany = ban->len;
-
-  for (i = 0; i < howmany; i++)
-    mvaddstr (start_line + i, 1, ban->lines[i]);
+  for (i = 0; i < ban->len; i++)
+    mvaddstr (1 + i, 1, ban->lines[i]);
 }
 
 void
@@ -965,7 +962,7 @@ inprogressmenu (int gameid)
         offset = 0;
 
       erase ();
-      drawbanner (&banner, 1, 1);
+      drawbanner (&banner);
 
       if (len > 0) {
          while (offset >= len) { offset -= max_height; }
@@ -1340,7 +1337,7 @@ change_email ()
   clear();
 
   if (me->flags & DGLACCT_EMAIL_LOCK) {
-      drawbanner(&banner, 1, 1);
+      drawbanner(&banner);
       mvprintw(5, 1, "Sorry, you cannot change the email.--More--");
       dgl_getch();
       return;
@@ -1348,7 +1345,7 @@ change_email ()
 
   for (;;)
   {
-      drawbanner(&banner, 1,1);
+      drawbanner(&banner);
 
     mvprintw(3, 1, "Your current email is: %s", me->email);
     mvaddstr(4, 1, "Please enter a new one (max 80 chars; blank line aborts)");
@@ -1405,7 +1402,7 @@ changepw (int dowrite)
 
   if (me->flags & DGLACCT_PASSWD_LOCK) {
       clear();
-      drawbanner(&banner, 1, 1);
+      drawbanner(&banner);
       mvprintw(5, 1, "Sorry, you cannot change the password.--More--");
       dgl_getch();
       return 0;
@@ -1416,7 +1413,7 @@ changepw (int dowrite)
       char repeatbuf[DGL_PASSWDLEN+1];
       clear ();
 
-      drawbanner (&banner, 1, 1);
+      drawbanner (&banner);
 
       mvprintw (5, 1,
                 "Please enter a%s password. Remember that this is sent over the net",
@@ -1554,7 +1551,7 @@ domailuser (char *username)
 
   /* print the enter your message line */
   clear ();
-  drawbanner (&banner, 1, 1);
+  drawbanner (&banner);
   mvprintw (5, 1,
             "Enter your message here. It is to be one line only and %i characters or less.",
            DGL_MAILMSGLEN);
@@ -1706,7 +1703,7 @@ loginprompt (int from_ttyplay)
     {
       clear ();
 
-      drawbanner (&banner, 1, 1);
+      drawbanner (&banner);
 
       if (from_ttyplay == 1)
        mvaddstr (4, 1, "This operation requires you to be logged in.");
@@ -1742,7 +1739,7 @@ loginprompt (int from_ttyplay)
 
   clear ();
 
-  drawbanner (&banner, 1, 1);
+  drawbanner (&banner);
 
   mvaddstr (5, 1, "Please enter your password.");
   mvaddstr (7, 1, "=> ");
@@ -1796,7 +1793,7 @@ newuser ()
   {
       clear ();
 
-      drawbanner (&banner, 1, 1);
+      drawbanner (&banner);
 
       mvaddstr (5, 1, "Sorry, too many users have registered now.");
       mvaddstr (6, 1, "You might email the server administrator.");
@@ -1818,7 +1815,7 @@ newuser ()
 
       sprintf(buf, "%i character max.", globalconfig.max_newnick_len);
 
-      drawbanner (&banner, 1, 1);
+      drawbanner (&banner);
 
       mvaddstr (5, 1, "Welcome new user. Please enter a username.");
       mvaddstr (6, 1,
@@ -1886,7 +1883,7 @@ newuser ()
     {
       clear ();
 
-      drawbanner (&banner, 1, 1);
+      drawbanner (&banner);
 
       mvaddstr (5, 1, "Please enter your email address.");
       mvaddstr (6, 1, "This is sent _nowhere_ but will be used if you ask"
@@ -2425,7 +2422,7 @@ purge_stale_locks (int game)
       if (firsttime)
       {
        clear ();
-       drawbanner (&banner, 1, 1);
+       drawbanner (&banner);
 
 #define HUP_WAIT 10 /* seconds before HUPPING */
        mvprintw (3, 1,
@@ -2521,7 +2518,7 @@ runmenuloop(struct dg_menu *menu)
            if (globalconfig.utf8esc) write(1, "\033%G", 3);
            clear();
        }
-       drawbanner(&ban, 1, 0);
+       drawbanner(&ban);
        if (menu->cursor_x >= 0 && menu->cursor_y >= 0)
            mvprintw(menu->cursor_y, menu->cursor_x, "");
        refresh();
index 034c3f8bafe863ceda9b964c29c0ab3660af7ad7..9b83c8435dcabe62b00d78d9771fad360e213db6 100644 (file)
@@ -280,7 +280,7 @@ extern char *gen_ttyrec_filename(void);
 extern char *gen_inprogress_lock(int game, pid_t pid, char *ttyrec_filename);
 extern void catch_sighup(int signum);
 extern void loadbanner(char *fname, struct dg_banner *ban);
-extern void drawbanner(struct dg_banner *ban, unsigned int start_line, unsigned int howmany);
+extern void drawbanner(struct dg_banner *ban);
 extern void banner_var_add(char *name, char *value);
 extern char *banner_var_value(char *name);
 extern void banner_var_free(void);
index c89708110d9afa470ae7181d7c79e4d88dd6ea2e..0964978cb83ab85aeb198f924db07f627bd062d6 100644 (file)
@@ -51,9 +51,9 @@ bannervars = [ "$MOTDTIME" = "2011.10.08",
               "$SERVERID" = "nethack.alt.org - http://nethack.alt.org/"
             ]
 
-# From inside the jail, location of a banner file, the topmost line will be
+# From inside the jail, location of a banner file, which is
 # shown in submenus that cannot be defined separately.
-# Some string substitution is done for the file:
+# Some string substitution is done for every banner file contents:
 # - bannervars from above
 # - $VERSION replaced with "dgamelaunch v" + dgl version number.
 # - $USERNAME replaced with logged-in user's name, or with "[Anonymous]"