[BACK]Return to config.l CVS log [TXT][DIR] Up to [contributed] / dgamelaunch-openbsd

Annotation of dgamelaunch-openbsd/config.l, Revision 1.1.1.1

1.1       rubenllo    1: /* Lexical analyzer for dgamelaunch's configuration file. */
                      2:
                      3: %{
                      4:
                      5: #include <stdio.h>
                      6: #include <string.h>
                      7: #include <errno.h>
                      8:
                      9: #include "y.tab.h"
                     10: #include "dgamelaunch.h"
                     11:
                     12: unsigned int line = 1, col = 0;
                     13:
                     14: #define YY_USER_ACTION col += yyleng;
                     15:
                     16: %}
                     17:
                     18: NEGNUMBER      -[0-9]+
                     19: NUMBER         [0-9]+
                     20: VALUE          \"[^"]*\"
                     21: MALSTRING      \"[^\"\n]*\n
                     22: COMMENT                ^[\t ]*#.*
                     23: WHITE          [\t ]*
                     24:
                     25: %%
                     26:
                     27: {NEGNUMBER} {
                     28:   fprintf(stderr,"%s:%d: negative value not accepted! Fix it now!\n",
                     29:       config, line);
                     30:   graceful_exit(13);
                     31: }
                     32:
                     33: {NUMBER} {
                     34:   yylval.i = strtoul(yytext, NULL, 10);
                     35:   return TYPE_NUMBER;
                     36: }
                     37:
                     38: {VALUE}        {
                     39:   yytext[yyleng - 1] = '\0'; /* Kill the trailing quote */
                     40:   yylval.s = strdup(yytext + 1); /* kill leading quote */
                     41:   return TYPE_VALUE;
                     42: }
                     43:
                     44: {MALSTRING} {
                     45:   yytext[yyleng - 1] = '\0'; /* remove trailing newline */
                     46:   fprintf(stderr, "%s:%d:%d: unterminated string constant: %s\n", config, line, (int)(col - yyleng + 1), yytext);
                     47:   return TYPE_MALSTRING;
                     48: }
                     49:
                     50: {WHITE}                { }
                     51: {COMMENT}      { }
                     52:
                     53: "="            { return '='; }
                     54: ","            { return ','; }
                     55: "["            { return '['; }
                     56: "]"            { return ']'; }
                     57: "{"            { return '{'; }
                     58: "}"            { return '}'; }
                     59: "("            { return '('; }
                     60: ")"            { return ')'; }
                     61: "shed_user"    { return TYPE_SUSER; }
                     62: "shed_group"   { return TYPE_SGROUP; }
                     63: "shed_uid"     { return TYPE_SUID; }
                     64: "shed_gid"     { return TYPE_SGID; }
                     65: "maxusers"     { return TYPE_MAX; }
                     66: "maxnicklen"   { return TYPE_MAXNICKLEN; }
                     67: "allow_new_nicks"      { return TYPE_ALLOW_REGISTRATION; }
                     68: "menu_max_idle_time"   { return TYPE_MENU_MAX_IDLE_TIME; }
                     69:
                     70:
                     71: menu           { return TYPE_DEFINE_MENU; }
                     72: bannerfile     { return TYPE_BANNER_FILE; }
                     73: cursor         { return TYPE_CURSOR; }
                     74: "chroot_path"  { return TYPE_PATH_CHROOT; }
                     75: "game_name"     { return TYPE_NAME_GAME; }
                     76: "short_name"   { return TYPE_GAME_SHORT_NAME; }
                     77: "game_id"      { return TYPE_GAME_ID; }
                     78: "game_path"    { return TYPE_PATH_GAME; }
                     79: "dglroot"      { return TYPE_PATH_DGLDIR; }
                     80: "spooldir"     { return TYPE_PATH_SPOOL; }
                     81: "banner"       { return TYPE_PATH_BANNER; }
                     82: "rc_template"  { return TYPE_PATH_CANNED; }
                     83: "passwd"       { return TYPE_PATH_PASSWD; }
                     84: "lockfile"     { return TYPE_PATH_LOCKFILE; }
                     85: "inprogressdir" { return TYPE_PATH_INPROGRESS; }
                     86: "game_args"    { return TYPE_GAME_ARGS; }
                     87: extra_info_file { return TYPE_EXTRA_INFO_FILE; }
                     88: "max_idle_time"        { return TYPE_MAX_IDLE_TIME; }
                     89: "rc_fmt"       { return TYPE_RC_FMT; }
                     90: "ttyrecdir"    { return TYPE_PATH_TTYREC; }
                     91: bannervars     { return TYPE_BANNERVARS; }
                     92: timeformat     { return TYPE_TIMEFORMAT; }
                     93: sortmode       { return TYPE_WATCH_SORTMODE; }
                     94: watch_columns  { return TYPE_WATCH_COLUMNS; }
                     95: commands       { return TYPE_CMDQUEUE; }
                     96: postcommands   { return TYPE_POSTCMDQUEUE; }
                     97: encoding       { return TYPE_ENCODING; }
                     98: locale         { return TYPE_LOCALE; }
                     99: default_term   { return TYPE_DEFTERM; }
                    100: utf8esc                { return TYPE_UTF8ESC; }
                    101: flowcontrol    { return TYPE_FLOWCTRL; }
                    102: filemode       { return TYPE_FILEMODE; }
                    103: yes            { yylval.i = 1; return TYPE_BOOL; }
                    104: no             { yylval.i = 0; return TYPE_BOOL; }
                    105: dglstart       { yylval.i = DGLTIME_DGLSTART; return TYPE_CMDQUEUENAME; }
                    106: login          { yylval.i = DGLTIME_LOGIN;    return TYPE_CMDQUEUENAME; }
                    107: register       { yylval.i = DGLTIME_REGISTER; return TYPE_CMDQUEUENAME; }
                    108: gamestart      { yylval.i = DGLTIME_GAMESTART; return TYPE_CMDQUEUENAME; }
                    109: gameend                { yylval.i = DGLTIME_GAMEEND; return TYPE_CMDQUEUENAME; }
                    110: mkdir          { yylval.i = DGLCMD_MKDIR;  return TYPE_DGLCMD1; }
                    111: chdir          { yylval.i = DGLCMD_CHDIR;  return TYPE_DGLCMD1; }
                    112: cp             { yylval.i = DGLCMD_CP;     return TYPE_DGLCMD2; }
                    113: ifnxcp         { yylval.i = DGLCMD_IF_NX_CP; return TYPE_DGLCMD2; }
                    114: unlink         { yylval.i = DGLCMD_UNLINK; return TYPE_DGLCMD1; }
                    115: setenv         { yylval.i = DGLCMD_SETENV; return TYPE_DGLCMD2; }
                    116: exec           { yylval.i = DGLCMD_EXEC;   return TYPE_DGLCMD2; }
                    117: chpasswd       { yylval.i = DGLCMD_CHPASSWD;   return TYPE_DGLCMD0; }
                    118: chmail         { yylval.i = DGLCMD_CHMAIL;     return TYPE_DGLCMD0; }
                    119: watch_menu     { yylval.i = DGLCMD_WATCH_MENU; return TYPE_DGLCMD0; }
                    120: ask_login      { yylval.i = DGLCMD_LOGIN;      return TYPE_DGLCMD0; }
                    121: ask_register   { yylval.i = DGLCMD_REGISTER;   return TYPE_DGLCMD0; }
                    122: quit           { yylval.i = DGLCMD_QUIT;       return TYPE_DGLCMD0; }
                    123: play_game      { yylval.i = DGLCMD_PLAYGAME;    return TYPE_DGLCMD1; }
                    124: play_if_exist  { yylval.i = DGLCMD_PLAY_IF_EXIST;    return TYPE_DGLCMD2; }
                    125: submenu                { yylval.i = DGLCMD_SUBMENU;     return TYPE_DGLCMD1; }
                    126: return         { yylval.i = DGLCMD_RETURN;      return TYPE_DGLCMD0; }
                    127: rawprint       { yylval.i = DGLCMD_RAWPRINT;    return TYPE_DGLCMD1; }
                    128: DEFINE         { return TYPE_DEFINE_GAME; }
                    129:
                    130:
                    131: \n             { line++; col = 0; }
                    132:
                    133: [0-9a-zA-Z_]+ {
                    134:   fprintf(stderr, "%s:%d:%d unrecognized token \"%s\"\n", config, line, col, yytext);
                    135:   graceful_exit(12);
                    136: }
                    137:
                    138: %%

CVSweb