From 5fe0cd7955b4563b1f1b38af138768214b342741 Mon Sep 17 00:00:00 2001 From: k21971 Date: Tue, 12 Nov 2024 17:08:18 -0500 Subject: [PATCH] Add config file 'sleep' command. Allows adding a delay in seconds where needed. Co-authored-by: entrez --- config.l | 1 + dgamelaunch.h | 3 ++- dgl-common.c | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/config.l b/config.l index 01e71f2..bc06d29 100644 --- a/config.l +++ b/config.l @@ -141,6 +141,7 @@ submenu { yylval.i = DGLCMD_SUBMENU; return TYPE_DGLCMD1; } return { yylval.i = DGLCMD_RETURN; return TYPE_DGLCMD0; } redraw { yylval.i = DGLCMD_REDRAW; return TYPE_DGLCMD0; } rawprint { yylval.i = DGLCMD_RAWPRINT; return TYPE_DGLCMD1; } +sleep { yylval.i = DGLCMD_SLEEP; return TYPE_DGLCMD1; } DEFINE { return TYPE_DEFINE_GAME; } diff --git a/dgamelaunch.h b/dgamelaunch.h index a4695cb..2efebee 100644 --- a/dgamelaunch.h +++ b/dgamelaunch.h @@ -82,7 +82,8 @@ typedef enum DGLCMD_PLAY_IF_EXIST, /* play_if_exist "game" "file" */ DGLCMD_SUBMENU, /* submenu "foo" */ DGLCMD_REDRAW, /* redraw */ - DGLCMD_RETURN /* return */ + DGLCMD_RETURN, /* return */ + DGLCMD_SLEEP /* sleep */ } dglcmd_actions; typedef enum diff --git a/dgl-common.c b/dgl-common.c index 404382e..89a342f 100644 --- a/dgl-common.c +++ b/dgl-common.c @@ -15,6 +15,7 @@ #include #include #include +#include extern FILE* yyin; extern int yyparse (); @@ -462,6 +463,19 @@ dgl_exec_cmdqueue_w(struct dg_cmdpart *queue, int game, struct dg_user *me, char case DGLCMD_RETURN: return_from_submenu = 1; break; + case DGLCMD_SLEEP: + if (p1) { + char *end; + long time = strtol(p1, &end, 10); + if (errno == EINVAL) { + printf("Error computing sleep value '%s'\n", p1); + break; + } else if (errno == ERANGE) { + printf("Sleep value out of range: '%s'\n", p1); + } + sleep((unsigned int) time); + } + break; case DGLCMD_PLAY_IF_EXIST: if (!(loggedin && me && p1 && p2)) break; { -- 2.47.3