[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     ! 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