Add option -i <name> to initialize a player externally. (Marc H. Thoben <root@develz.org>)

git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@607 db0b04b0-f4d1-0310-9a6d-de3e77497b0e
This commit is contained in:
Pasi Kallinen 2011-10-03 15:53:34 +00:00
parent 8e076008d1
commit 76be23aa5c
1 changed files with 35 additions and 2 deletions

View File

@ -101,6 +101,7 @@ extern int yyparse ();
char * __progname;
int g_idle_alarm_enabled = 0;
int showplayers = 0;
int initplayer = 0;
void (*g_chain_winch)(int);
#ifndef USE_SQLITE3
@ -1624,7 +1625,7 @@ autologin (char* user, char *pass)
tmp = userexist(user, 0);
if (tmp) {
me = cpy_me(tmp);
if (passwordgood(pass) && !(me->flags & DGLACCT_LOGIN_LOCK)) {
if ((passwordgood(pass) || initplayer == 1) && !(me->flags & DGLACCT_LOGIN_LOCK)) {
loggedin = 1;
setproctitle ("%s", me->username);
dgl_exec_cmdqueue(globalconfig.cmdqueue[DGLTIME_LOGIN], 0, me);
@ -2539,7 +2540,7 @@ main (int argc, char** argv)
__progname = basename(strdup(argv[0]));
while ((c = getopt(argc, argv, "sqh:pf:aeW:SD")) != -1)
while ((c = getopt(argc, argv, "sqh:pf:i:aeW:SD")) != -1)
{
switch (c)
{
@ -2560,6 +2561,19 @@ main (int argc, char** argv)
config = strdup(optarg);
break;
case 'i':
if (optarg && *optarg != '\0') {
if (p && *p != '\0')
*p = '\0';
p = strdup(optarg);
initplayer = 1;
if (auth && *auth != '\0')
*auth = '\0';
}
break;
case 'W':
wall_email_str = strdup(optarg);
break;
@ -2700,6 +2714,25 @@ main (int argc, char** argv)
dgl_exec_cmdqueue(globalconfig.cmdqueue[DGLTIME_DGLSTART], 0, NULL);
if (initplayer) {
char *user, *pass;
user = strdup(p);
pass = strdup(p);
autologin(user, pass);
if (loggedin) {
dgl_exec_cmdqueue(globalconfig.cmdqueue[DGLTIME_REGISTER], 0, me);
fprintf(stdout, "Setup of %s succeeded.\n", me->username);
graceful_exit(0);
}
else {
fprintf(stdout, "Setup of %s failed.\n", p);
graceful_exit(1);
}
}
/* simple login routine, uses ncurses */
if (readfile (0)) {
debug_write("log in fail");