arogue5: add the savedir feature.

This commit is contained in:
John "Elwin" Edwards 2012-08-10 05:16:08 +00:00
parent 14fad3b319
commit 38a8534eb5
5 changed files with 40 additions and 4 deletions

View file

@ -57,10 +57,29 @@ char **envp;
strncpy(home,md_gethomedir(),LINELEN);
#ifdef SAVEDIR
if (argc >= 3 && !strcmp(argv[1], "-n")) {
use_savedir = TRUE;
strncpy(whoami, argv[2], LINELEN);
whoami[LINELEN - 1] = '\0';
if (snprintf(file_name, LINELEN, "%s%d-%.10s.ar5sav", SAVEDIR,
md_getuid(), whoami) >= LINELEN)
{
/* The name is too long */
use_savedir = FALSE;
}
}
#endif
/* Get default save file */
strcpy(file_name, home);
strcat(file_name, "arogue58.sav");
if (!use_savedir) {
strcpy(file_name, home);
strcat(file_name, "arogue58.sav");
}
#ifdef SCOREFILE
strncpy(score_file, SCOREFILE, LINELEN);
score_file[LINELEN - 1] = '\0';
#else
/* Get default score file */
strcpy(score_file, roguedir);
@ -68,6 +87,7 @@ char **envp;
strcat(score_file,"/");
strcat(score_file, "arogue58.scr");
#endif
if ((env = getenv("ROGUEOPTS")) != NULL)
parse_opts(env);
@ -139,7 +159,15 @@ char **envp;
exit(1);
}
#endif
if (argc == 2)
if (use_savedir)
{
/* Try to restore from file_name first. */
if (!restore(file_name, envp))
exit(1);
/* If restore() returns true, there is no such saved game.
So start a new one. */
}
else if (argc == 2)
if (!restore(argv[1], envp)) /* Note: restore will never return */
exit(1);
lowtime = (int) time(&now);