UltraRogue: add the -n option.

This commit is contained in:
John "Elwin" Edwards 2017-02-09 16:29:45 -05:00
parent ed27d7a24f
commit 403d9ec171
4 changed files with 35 additions and 6 deletions

View file

@ -23,8 +23,11 @@
#include <string.h>
#include <signal.h>
#include <stdlib.h>
#include <errno.h>
#include "rogue.h"
#define SAVEDIR "."
FILE *fd_score = NULL;
/* Command line options */
@ -62,6 +65,21 @@ main(int argc, char *argv[])
rflag = TRUE;
break;
#ifdef SAVEDIR
case 'n':
if (x + 1 < argc) {
use_savedir = TRUE;
x++;
// Set rogue's name to the next argument
strncpy(whoami, argv[x], 2*LINELEN);
whoami[2*LINELEN - 1] = '\0';
// And set up the savefile name
snprintf(file_name, 2*LINELEN, "%s/%d-%.80s.ursav", SAVEDIR,
md_getuid(), whoami);
}
break;
#endif
default:
fprintf(stderr,"%s: Unknown option '%c'.\n",argv[0],argv[x][1]);
exit(1);
@ -86,12 +104,14 @@ main(int argc, char *argv[])
if ((env = getenv("OPTIONS")) != NULL)
parse_opts(env);
nm = getenv("USER");
if (!use_savedir) {
nm = getenv("USER");
if (nm != NULL)
strcpy(whoami,nm);
else
strcpy(whoami,"anonymous");
if (nm != NULL)
strcpy(whoami,nm);
else
strcpy(whoami,"anonymous");
}
lowtime = time(&now);
@ -168,7 +188,11 @@ main(int argc, char *argv[])
mw = newwin(LINES, COLS, 0, 0);
hw = newwin(LINES, COLS, 0, 0);
if (argc == 2 && argv[1][0] != '\0' && !restore(argv[1]))
if (use_savedir) {
if (!restore(file_name))
exit(1);
}
else if (argc == 2 && argv[1][0] != '\0' && !restore(argv[1]))
/* Note: restore returns on error only */
exit(1);

View file

@ -1686,6 +1686,7 @@ extern int waswizard; /* Was a wizard sometime */
extern int canwizard; /* Will be permitted to do this */
extern int askme; /* Ask about unidentified things */
extern int moving; /* move using 'm' command */
extern int use_savedir; /* Savefile is in system savedir */
extern int inv_type; /* Inven style. Bool so options works */
extern char take; /* Thing the rogue is taking */
@ -1809,6 +1810,7 @@ char *md_strdup(const char *s);
long md_random(void);
void md_srandom(long seed);
int md_readchar(WINDOW *win);
int md_getuid(void);
#define NOOP(x) (x += 0)
#define CCHAR(x) ( (char) (x & A_CHARTEXT) )

View file

@ -90,6 +90,8 @@ restore(char *file)
if ((infd = fopen(file, "r")) == NULL)
{
if (use_savedir && errno == ENOENT)
return TRUE;
perror(file);
return(FALSE);
}

View file

@ -138,6 +138,7 @@ int fighting = FALSE;
int wizard = FALSE;
int wiz_verbose = TRUE;
int moving = FALSE;
int use_savedir = FALSE;
coord delta; /* Change indicated to get_dir() */
LEVTYPE levtype; /* type of level i'm on */
long purse = 0;