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

Annotation of dgamelaunch-openbsd/dgamelaunch.h, Revision 1.1

1.1     ! rubenllo    1: /* IMPORTANT defines */
        !             2:
        !             3: #ifndef __DGAMELAUNCH_H
        !             4: #define __DGAMELAUNCH_H
        !             5:
        !             6: #include "config.h"
        !             7: #include <sys/param.h>
        !             8: #include <sys/types.h>
        !             9: #include <sys/stat.h>
        !            10: #include <time.h>
        !            11:
        !            12: #ifdef USE_SHMEM
        !            13: #include <semaphore.h>
        !            14: #endif
        !            15:
        !            16: #ifndef ARRAY_SIZE
        !            17: # define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
        !            18: #endif
        !            19:
        !            20: #define dglsign(x) (x < 0 ? -1 : (x > 0 ? 1 : 0))
        !            21:
        !            22: #define DGL_PLAYERNAMELEN 30 /* max. length of player name */
        !            23: #define DGL_PASSWDLEN 20 /* max. length of passwords */
        !            24: #define DGL_MAILMSGLEN 80 /* max. length of mail message */
        !            25:
        !            26: #define DGL_MAXWATCHCOLS 10
        !            27:
        !            28: #define DGL_BANNER_LINELEN 256 /* max. length of banner lines*/
        !            29:
        !            30: #ifdef USE_NCURSES_COLOR
        !            31: # define CLR_NORMAL  COLOR_PAIR(11)   | A_NORMAL
        !            32: # define CLR_RED     COLOR_PAIR(COLOR_RED)   | A_NORMAL
        !            33: #else
        !            34: # define CLR_NORMAL  0
        !            35: # define CLR_RED     0
        !            36: #endif
        !            37: extern int color_remap[];
        !            38:
        !            39: typedef enum
        !            40: {
        !            41:     DGLACCT_ADMIN       = 0x01,        /* admin account */
        !            42:     DGLACCT_LOGIN_LOCK  = 0x02,        /* account is banned and cannot login */
        !            43:     DGLACCT_PASSWD_LOCK = 0x04,        /* account password cannot be changed */
        !            44:     DGLACCT_EMAIL_LOCK  = 0x08 /* account email cannot be changed */
        !            45: } dgl_acct_flag;
        !            46:
        !            47: typedef enum
        !            48: {
        !            49:     DGLTIME_DGLSTART = 0,      /* when someone telnets in */
        !            50:     DGLTIME_LOGIN,             /* right after user login */
        !            51:     DGLTIME_REGISTER,          /* right after new nick is registered */
        !            52:     DGLTIME_GAMESTART,         /* right before a game is started */
        !            53:     DGLTIME_GAMEEND,           /* right after a game is ended */
        !            54:     NUM_DGLTIMES
        !            55: } dglcmd_times;
        !            56:
        !            57: typedef enum
        !            58: {
        !            59:     DGLCMD_NONE = 0,
        !            60:     DGLCMD_RAWPRINT,   /* rawprint "foo" */
        !            61:     DGLCMD_MKDIR,      /* mkdir foo */
        !            62:     DGLCMD_CHDIR,      /* chdir foo */
        !            63:     DGLCMD_IF_NX_CP,   /* ifnxcp foo bar */
        !            64:     DGLCMD_CP,         /* cp foo bar */
        !            65:     DGLCMD_UNLINK,     /* unlink foo */
        !            66:     DGLCMD_EXEC,       /* exec foo bar */
        !            67:     DGLCMD_SETENV,     /* setenv foo bar */
        !            68:     DGLCMD_WATCH_MENU,  /* watch_menu */
        !            69:     DGLCMD_LOGIN,       /* ask_login */
        !            70:     DGLCMD_REGISTER,   /* ask_register */
        !            71:     DGLCMD_QUIT,       /* quit */
        !            72:     DGLCMD_CHMAIL,     /* chmail */
        !            73:     DGLCMD_CHPASSWD,   /* chpasswd */
        !            74:     DGLCMD_PLAYGAME,   /* play_game "foo" */
        !            75:     DGLCMD_PLAY_IF_EXIST,      /* play_if_exist "game" "file" */
        !            76:     DGLCMD_SUBMENU,    /* submenu "foo" */
        !            77:     DGLCMD_RETURN      /* return */
        !            78: } dglcmd_actions;
        !            79:
        !            80: typedef enum
        !            81: {
        !            82:     SORTMODE_NONE = 0,
        !            83:     SORTMODE_USERNAME,
        !            84:     SORTMODE_GAMENUM,
        !            85:     SORTMODE_WINDOWSIZE,
        !            86:     SORTMODE_STARTTIME,
        !            87:     SORTMODE_DURATION,
        !            88:     SORTMODE_IDLETIME,
        !            89:     SORTMODE_EXTRA_INFO,
        !            90: #ifdef USE_SHMEM
        !            91:     SORTMODE_WATCHERS,
        !            92: #endif
        !            93:     NUM_SORTMODES
        !            94: } dg_sortmode;
        !            95:
        !            96: static const char *SORTMODE_NAME[NUM_SORTMODES] = {
        !            97:     "Unsorted",
        !            98:     "Username",
        !            99:     "Game",
        !           100:     "Windowsize",
        !           101:     "Starttime",
        !           102:     "Duration",
        !           103:     "Idletime",
        !           104:     "Extrainfo",
        !           105: #ifdef USE_SHMEM
        !           106:     "Watchers",
        !           107: #endif
        !           108: };
        !           109:
        !           110: struct dg_banner_var {
        !           111:     char *name;
        !           112:     char *value;
        !           113:     int special;
        !           114:     struct dg_banner_var *next;
        !           115: };
        !           116:
        !           117: struct dg_cmdpart
        !           118: {
        !           119:     dglcmd_actions cmd;
        !           120:     char *param1;
        !           121:     char *param2;
        !           122:     struct dg_cmdpart *next;
        !           123: };
        !           124:
        !           125: struct dg_user
        !           126: {
        !           127: #ifdef USE_SQLITE3
        !           128:     long id;
        !           129: #endif
        !           130:   char *username;
        !           131:   char *email;
        !           132:   char *env;
        !           133:   char *password;
        !           134:   int flags;                   /* dgl_acct_flag bitmask */
        !           135: };
        !           136:
        !           137: struct dg_banner
        !           138: {
        !           139:   char **lines;
        !           140:   unsigned int len;
        !           141: };
        !           142:
        !           143: struct dg_menuoption
        !           144: {
        !           145:     char *keys;
        !           146:     struct dg_cmdpart *cmdqueue;
        !           147:     struct dg_menuoption *next;
        !           148: };
        !           149:
        !           150: struct dg_menu
        !           151: {
        !           152:     char *banner_fn;
        !           153:     struct dg_banner banner;
        !           154:     int cursor_x, cursor_y;
        !           155:     struct dg_menuoption *options;
        !           156: };
        !           157:
        !           158: struct dg_menulist
        !           159: {
        !           160:     char *menuname;
        !           161:     struct dg_menu *menu;
        !           162:     struct dg_menulist *next;
        !           163: };
        !           164:
        !           165: struct dg_shm
        !           166: {
        !           167: #ifdef USE_SHMEM
        !           168:     sem_t dg_sem;
        !           169: #endif
        !           170:     long max_n_games;
        !           171:     long cur_n_games;
        !           172: };
        !           173:
        !           174: struct dg_shm_game
        !           175: {
        !           176:     long  in_use;
        !           177:     long  nwatchers;
        !           178:     char  ttyrec_fn[150];
        !           179: };
        !           180:
        !           181: struct dg_game
        !           182: {
        !           183:   char *ttyrec_fn;
        !           184:   char *name;
        !           185:   char *date;
        !           186:   char *time;
        !           187:   time_t idle_time;
        !           188:   int ws_row, ws_col; /* Window size */
        !           189:   int gamenum;
        !           190:   int is_in_shm;
        !           191:   int shm_idx;
        !           192:   int nwatchers;
        !           193:
        !           194:   char *extra_info;
        !           195:   int extra_info_weight;
        !           196: };
        !           197:
        !           198: struct dg_config
        !           199: {
        !           200:   char* game_path;
        !           201:   char* game_name;
        !           202:   char* game_id;
        !           203:   char* shortname;
        !           204:   char* rcfile;
        !           205:   char* ttyrecdir;
        !           206:   char* spool;
        !           207:   char* inprogressdir;
        !           208:     int num_args; /* # of bin_args */
        !           209:     char **bin_args; /* args for game binary */
        !           210:     char *rc_fmt;
        !           211:     struct dg_cmdpart *cmdqueue;
        !           212:     struct dg_cmdpart *postcmdqueue;
        !           213:     int max_idle_time;
        !           214:     char *extra_info_file;
        !           215:     int encoding; // -1 = run --print-charset
        !           216: };
        !           217:
        !           218: struct dg_watchcols {
        !           219:     int dat;
        !           220:     int sortmode;
        !           221:     int x;
        !           222:     char *colname;
        !           223:     char *fmt;
        !           224: };
        !           225:
        !           226: struct dg_globalconfig
        !           227: {
        !           228:     char* chroot;
        !           229:     char* dglroot;
        !           230:     char* banner;
        !           231:     unsigned long max;
        !           232:     int max_newnick_len; /* maximum length of new registered names. must be less than 20 chars. */
        !           233:     char* shed_user;
        !           234:     char* shed_group;
        !           235:     uid_t shed_uid;
        !           236:     gid_t shed_gid;
        !           237:     char* passwd;
        !           238:     char* lockfile;
        !           239:     int allow_registration; /* allow registering new nicks */
        !           240:     int sortmode; /* default watching-screen sortmode */
        !           241:     struct dg_banner_var *banner_var_list;
        !           242:     char *locale;
        !           243:     int utf8esc; /* send select-utf8-charset escape code */
        !           244:     char *defterm; /* default TERM in case user TERM is unknown  */
        !           245:     int flowctrl; /* XON/XOFF for games? */
        !           246:
        !           247:     struct dg_cmdpart *cmdqueue[NUM_DGLTIMES];
        !           248:
        !           249:     /* NULL terminated list of dg_watchcols pointers */
        !           250:     struct dg_watchcols *watch_columns[DGL_MAXWATCHCOLS + 1];
        !           251:     int n_watch_columns;
        !           252:
        !           253:     struct dg_menulist *menulist;
        !           254:     int menu_max_idle_time;
        !           255: };
        !           256:
        !           257:
        !           258:
        !           259: /* Global variables */
        !           260: extern int shm_n_games; /* TODO: make configurable */
        !           261:
        !           262: extern char* config; /* file path */
        !           263: extern struct dg_config **myconfig;
        !           264: extern char *chosen_name;
        !           265: extern int loggedin;
        !           266: extern int silent;
        !           267: extern int set_max;
        !           268:
        !           269: extern int selected_game;
        !           270: extern int return_from_submenu;
        !           271:
        !           272: extern struct dg_globalconfig globalconfig;
        !           273:
        !           274: extern int num_games;
        !           275:
        !           276: extern mode_t default_fmode;
        !           277:
        !           278: extern int dgl_local_COLS;
        !           279: extern int dgl_local_LINES;
        !           280:
        !           281: extern char last_ttyrec[512];
        !           282:
        !           283: /* dgamelaunch.c */
        !           284: extern void create_config(void);
        !           285: extern void ttyrec_getmaster(void);
        !           286: extern char *get_mainmenu_name(void);
        !           287: extern char *gen_ttyrec_filename(void);
        !           288: extern char *gen_inprogress_lock(int game, pid_t pid, char *ttyrec_filename);
        !           289: extern void catch_sighup(int signum);
        !           290: extern void loadbanner(char *fname, struct dg_banner *ban);
        !           291: extern void drawbanner(struct dg_banner *ban);
        !           292: extern void banner_var_add(char *name, char *value, int special);
        !           293: extern char *banner_var_value(char *name);
        !           294: extern void banner_var_free(void);
        !           295: extern int check_retard(int reset);
        !           296: extern char *dgl_format_str(int game, struct dg_user *me, char *str, char *plrname);
        !           297:
        !           298: extern void term_resize_check();
        !           299: extern void sigwinch_func(int sig);
        !           300:
        !           301: extern struct dg_menu *dgl_find_menu(char *menuname);
        !           302:
        !           303: extern int dgl_exec_cmdqueue(struct dg_cmdpart *queue, int game, struct dg_user *me);
        !           304:
        !           305: extern void free_populated_games(struct dg_game **games, int len);
        !           306: extern struct dg_game **populate_games(int game, int *l, struct dg_user *me);
        !           307:
        !           308: #ifdef USE_DEBUGFILE
        !           309: extern void debug_write(char *str);
        !           310: #else
        !           311: #define debug_write(str)
        !           312: #endif
        !           313:
        !           314: extern struct dg_game **sort_games(struct dg_game **games, int len, dg_sortmode sortmode);
        !           315:
        !           316: int runmenuloop(struct dg_menu *menu);
        !           317:
        !           318: extern void signals_block(void);
        !           319: extern void signals_release(void);
        !           320:
        !           321: extern void shm_sem_wait(struct dg_shm *shm_dg_data);
        !           322: extern void shm_sem_post(struct dg_shm *shm_dg_data);
        !           323: extern void shm_update(struct dg_shm *shm_dg_data, struct dg_game **games, int len);
        !           324: extern void shm_mk_keys(key_t *shm_key, key_t *shm_sem_key);
        !           325: extern void shm_init(struct dg_shm **shm_dg_data, struct dg_shm_game **shm_dg_game);
        !           326:
        !           327: extern int dgl_getch(void);
        !           328: extern void idle_alarm_set_enabled(int enabled);
        !           329: extern void idle_alarm_reset(void);
        !           330: extern void inprogressmenu(int gameid);
        !           331: extern void change_email(void);
        !           332: extern int changepw(int dowrite);
        !           333: extern void domailuser(char *username);
        !           334: extern void drawmenu(void);
        !           335: extern void freefile(void);
        !           336: extern void initcurses(void);
        !           337: extern void loginprompt(int from_ttyplay);
        !           338: extern void newuser(void);
        !           339: extern void autologin(char *user, char *pass);
        !           340: extern int passwordgood(char *cpw);
        !           341: extern int readfile(int nolock);
        !           342: extern struct dg_user *userexist(char *cname, int isnew);
        !           343: extern void write_canned_rcfile(int game, char *target);
        !           344: extern void writefile(int requirenew);
        !           345: extern void graceful_exit(int status);
        !           346: extern int purge_stale_locks(int game);
        !           347: /*extern int menuloop(void);*/
        !           348: extern void ttyrec_getpty(void);
        !           349: #ifndef HAVE_SETENV
        !           350: extern int mysetenv (const char* name, const char* value, int overwrite);
        !           351: #else
        !           352: # define mysetenv setenv
        !           353: #endif
        !           354: #ifndef HAVE_SETPROCTITLE
        !           355: void compat_init_setproctitle(int argc, char *argv[]);
        !           356: void setproctitle(const char *fmt, ...);
        !           357: #endif
        !           358:
        !           359: /* strlcpy.c */
        !           360: extern size_t strlcpy (char *dst, const char *src, size_t siz);
        !           361: extern size_t strlcat (char *dst, const char *src, size_t siz);
        !           362:
        !           363: /* mygetnstr.c */
        !           364: extern int mygetnstr(char *buf, int maxlen, int doecho);
        !           365:
        !           366: #endif

CVSweb