Allow getting the server time and date via banner variables:
bannervars = [ "$DATETIME" = timeformat("%F %T") ] git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@624 db0b04b0-f4d1-0310-9a6d-de3e77497b0e
This commit is contained in:
parent
5a0c90fa0f
commit
b5d3e6257b
4
TODO
4
TODO
|
@ -1,4 +1,8 @@
|
|||
|
||||
-allow setting banners for the internal menus, with the same method
|
||||
as normal user-defined menus, but only the banner is used from them.
|
||||
if no such menu is defined, then uses the default banner file.
|
||||
|
||||
-update dgamelaunch.8
|
||||
|
||||
-occasionally dgl crashes, leaving the shmem semaphore in a state
|
||||
|
|
1
config.l
1
config.l
|
@ -88,6 +88,7 @@ extra_info_file { return TYPE_EXTRA_INFO_FILE; }
|
|||
"rc_fmt" { return TYPE_RC_FMT; }
|
||||
"ttyrecdir" { return TYPE_PATH_TTYREC; }
|
||||
bannervars { return TYPE_BANNERVARS; }
|
||||
timeformat { return TYPE_TIMEFORMAT; }
|
||||
sortmode { return TYPE_WATCH_SORTMODE; }
|
||||
watch_columns { return TYPE_WATCH_COLUMNS; }
|
||||
commands { return TYPE_CMDQUEUE; }
|
||||
|
|
8
config.y
8
config.y
|
@ -57,7 +57,7 @@ static int sortmode_number(const char *sortmode_name) {
|
|||
%token TYPE_PATH_PASSWD TYPE_PATH_LOCKFILE TYPE_PATH_TTYREC
|
||||
%token TYPE_MALSTRING TYPE_PATH_INPROGRESS TYPE_GAME_ARGS TYPE_RC_FMT
|
||||
%token TYPE_CMDQUEUE TYPE_DEFINE_MENU TYPE_BANNER_FILE TYPE_CURSOR
|
||||
%token TYPE_POSTCMDQUEUE
|
||||
%token TYPE_POSTCMDQUEUE TYPE_TIMEFORMAT
|
||||
%token TYPE_MAX_IDLE_TIME TYPE_MENU_MAX_IDLE_TIME TYPE_EXTRA_INFO_FILE
|
||||
%token TYPE_ENCODING TYPE_LOCALE TYPE_UTF8ESC TYPE_FILEMODE
|
||||
%token <s> TYPE_VALUE
|
||||
|
@ -301,7 +301,11 @@ banner_vars : banner_vars ',' banner_var
|
|||
|
||||
banner_var : TYPE_VALUE '=' TYPE_VALUE
|
||||
{
|
||||
banner_var_add($1, $3);
|
||||
banner_var_add($1, $3, 0);
|
||||
}
|
||||
| TYPE_VALUE '=' TYPE_TIMEFORMAT '(' TYPE_VALUE ')'
|
||||
{
|
||||
banner_var_add($1, $5, 1);
|
||||
};
|
||||
|
||||
watch_columns: watch_columns ',' watch_column
|
||||
|
|
|
@ -403,7 +403,7 @@ bannerstrmangle(char *buf, char *bufnew, int buflen, char *fromstr, char *tostr)
|
|||
}
|
||||
|
||||
void
|
||||
banner_var_add(char *name, char *value)
|
||||
banner_var_add(char *name, char *value, int special)
|
||||
{
|
||||
struct dg_banner_var *tmp = (struct dg_banner_var *)malloc(sizeof(struct dg_banner_var));
|
||||
|
||||
|
@ -411,6 +411,7 @@ banner_var_add(char *name, char *value)
|
|||
|
||||
tmp->name = strdup(name);
|
||||
tmp->value = strdup(value);
|
||||
tmp->special = special;
|
||||
tmp->next = globalconfig.banner_var_list;
|
||||
globalconfig.banner_var_list = tmp;
|
||||
}
|
||||
|
@ -430,12 +431,26 @@ banner_var_free()
|
|||
globalconfig.banner_var_list = NULL;
|
||||
}
|
||||
|
||||
char *
|
||||
banner_var_resolve(struct dg_banner_var *bv)
|
||||
{
|
||||
static char tmpbuf[81];
|
||||
time_t tstamp;
|
||||
struct tm *ptm;
|
||||
if (!bv) return NULL;
|
||||
if (!bv->special) return bv->value;
|
||||
time(&tstamp);
|
||||
ptm = gmtime(&tstamp);
|
||||
strftime(tmpbuf, 80, bv->value, ptm);
|
||||
return tmpbuf;
|
||||
}
|
||||
|
||||
char *
|
||||
banner_var_value(char *name)
|
||||
{
|
||||
struct dg_banner_var *bv = globalconfig.banner_var_list;
|
||||
while (bv) {
|
||||
if (!strcmp(bv->name, name)) return bv->name;
|
||||
if (!strcmp(bv->name, name)) return banner_var_resolve(bv);
|
||||
bv = bv->next;
|
||||
}
|
||||
return NULL;
|
||||
|
@ -517,7 +532,7 @@ loadbanner (char *fname, struct dg_banner *ban)
|
|||
char tmpbufnew[80];
|
||||
struct dg_banner_var *bv = globalconfig.banner_var_list;
|
||||
while (bv) {
|
||||
strncpy(bufnew, bannerstrmangle(bufnew, tmpbufnew, 80, bv->name, bv->value), 80);
|
||||
strncpy(bufnew, bannerstrmangle(bufnew, tmpbufnew, 80, bv->name, banner_var_resolve(bv)), 80);
|
||||
bv = bv->next;
|
||||
}
|
||||
strncpy(bufnew, bannerstrmangle(bufnew, tmpbufnew, 80, "$VERSION", PACKAGE_STRING), 80);
|
||||
|
|
|
@ -106,6 +106,7 @@ static const char *SORTMODE_NAME[NUM_SORTMODES] = {
|
|||
struct dg_banner_var {
|
||||
char *name;
|
||||
char *value;
|
||||
int special;
|
||||
struct dg_banner_var *next;
|
||||
};
|
||||
|
||||
|
@ -281,7 +282,7 @@ 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);
|
||||
extern void banner_var_add(char *name, char *value);
|
||||
extern void banner_var_add(char *name, char *value, int special);
|
||||
extern char *banner_var_value(char *name);
|
||||
extern void banner_var_free(void);
|
||||
extern int check_retard(int reset);
|
||||
|
|
|
@ -47,8 +47,13 @@ chroot_path = "/opt/nethack/nethack.alt.org/"
|
|||
dglroot = "/dgldir/"
|
||||
|
||||
# Strings to be replaced in every banner
|
||||
# you can have either direct string replacements, like
|
||||
# "$FOO" = "BAR", or you can get the server time with
|
||||
# "$FOO" = timeformat("%F %T")
|
||||
# for the timeformat parameter string format, see man strftime
|
||||
bannervars = [ "$MOTDTIME" = "2011.10.08",
|
||||
"$SERVERID" = "nethack.alt.org - http://nethack.alt.org/"
|
||||
"$SERVERID" = "nethack.alt.org - http://nethack.alt.org/",
|
||||
"$DATETIME" = timeformat("%F %T")
|
||||
]
|
||||
|
||||
# From inside the jail, location of a banner file, which is
|
||||
|
|
Loading…
Reference in New Issue