srogue: use functions from mdport.c.

Shell escape, passwd entries, terminal settings, and most signal
handling is now done with the more portable md_* functions.
This commit is contained in:
John "Elwin" Edwards 2014-04-30 14:46:30 -07:00
parent de1e0f2759
commit 791df4324f
10 changed files with 34 additions and 115 deletions

View file

@ -18,11 +18,8 @@
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <termios.h>
#include <fcntl.h>
#include <stdio.h>
#include <signal.h>
#include <pwd.h>
#include <limits.h>
#include <sys/stat.h>
#include "rogue.h"
@ -39,8 +36,6 @@
#include "rogue.ext"
struct termios terminal;
main(argc, argv, envp)
char **argv;
char **envp;
@ -48,8 +43,6 @@ char **envp;
register char *env;
register struct linked_list *item;
register struct object *obj;
struct passwd *pw;
struct passwd *getpwuid();
char alldone, wpt;
char *getpass(), *xcrypt(), *strrchr();
int lowtime;
@ -132,10 +125,11 @@ char **envp;
if ((env = getenv("HOME")) != NULL)
strcpy(home, env);
else if ((pw = getpwuid(playuid)) != NULL)
strcpy(home, pw->pw_dir);
else
home[0] = '\0';
else {
strncpy(home, md_gethomedir(), LINLEN);
if (home[LINLEN-1] != '\0')
home[0] = '\0';
}
if (strcmp(home,"/") == 0)
home[0] = '\0';
@ -153,13 +147,7 @@ char **envp;
if (!use_savedir && (env == NULL || whoami[0] == '\0'))
{
if((pw = getpwuid(playuid)) == NULL)
{
printf("Say, who are you?\n");
exit(1);
}
else
strucpy(whoami, pw->pw_name, strlen(pw->pw_name));
strucpy(whoami, md_getusername(), strlen(md_getusername()));
}
if (env == NULL || fruit[0] == '\0')
@ -191,8 +179,7 @@ char **envp;
seed = dnum;
srand48(seed); /* init rnd number gen */
signal(SIGINT, byebye); /* just in case */
signal(SIGQUIT ,byebye);
md_onsignal_exit(); /* just in case */
init_everything();
@ -397,27 +384,7 @@ int number, sides;
*/
setup()
{
signal(SIGHUP, auto_save);
signal(SIGINT, auto_save);
signal(SIGQUIT, byebye);
signal(SIGILL, game_err);
signal(SIGTRAP, game_err);
#ifdef SIGIOT
signal(SIGIOT, game_err);
#endif
#ifdef SIGEMT
signal(SIGEMT, game_err);
#endif
signal(SIGFPE, game_err);
#ifdef SIGBUS
signal(SIGBUS, game_err);
#endif
signal(SIGSEGV, game_err);
#ifdef SIGSYS
signal(SIGSYS, game_err);
#endif
signal(SIGPIPE, game_err);
signal(SIGTERM, game_err);
md_onsignal_autosave();
nonl();
cbreak();
@ -433,9 +400,6 @@ playit()
{
reg char *opts;
tcgetattr(0,&terminal);
/* parse environment declaration of options */
if ((opts = getenv("ROGUEOPTS")) != NULL)