Allows adding a delay in seconds where needed.
Co-authored-by: entrez <me@entrez.cc>
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; }
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
#include <pwd.h>
#include <grp.h>
#include <curses.h>
+#include <sys/errno.h>
extern FILE* yyin;
extern int yyparse ();
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;
{