|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T c
Length: 2214 (0x8a6)
Types: TextFile
Names: »copilot.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z«
└─⟦2109abc41⟧
└─⟦this⟧ »./X.V10R4/xtrek/copilot.c«
#ifndef lint
static char *rcsid_copilot_c = "$Header: copilot.c,v 10.1 86/11/30 15:23:01 jg Rel $";
#endif lint
/* Copyright (c) 1986 Chris Guthrie */
#include <X/Xlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/time.h>
#include <signal.h>
#include <setjmp.h>
#include <pwd.h>
#include "defs.h"
#include "struct.h"
#include "data.h"
struct itimerval udt;
jmp_buf env;
long stime;
int redrawall;
extern Window w, mapw, statwin;
extern int lastm;
int copilot = 1;
main(argc, argv)
int argc;
char **argv;
{
int intrupt();
int team;
int pno;
char buf[80];
char *host;
register int i;
struct passwd *pwent;
if (argc < 2) {
host = NULL;
}
else
{
host = argv[1];
}
srandom(getpid() * time((long *) 0));
/* this creates the necessary x windows for the game */
newwin(host);
/* this finds the shared memory information plus a player slot */
openmem();
pno = atoi(argv[2]);
if (pno < 0) {
/* print some appropriate message */
exit(1);
}
setjmp(env); /* Reentry point of game */
if (players[pno].p_status != PALIVE)
exit(1);
if (!(players[pno].p_flags & PFCOPILOT)) {
printf("%s is not allowing copilots\n", players[pno].p_name);
exit(1);
}
time(&stime); /* For stat gathering */
redrawall = 1;
/*
enter(team, host, pno);
*/
me = &players[pno];
if (showStats)
statwin = openStats(me);
myship = &me->p_ship;
mystats = &me->p_stats;
lastm = mctl->mc_current;
if ((pwent = getpwuid(getuid())) == NULL)
sprintf(buf, "Unknown person joining as a copilot");
else
sprintf(buf, "%-8s joining as a copilot", pwent->pw_name);
pmessage(buf, pno, "MINDIV", "GOD->YOU");
XClear(w);
/*
for (i = 0; i < NSIG; i++) {
signal(i, SIG_IGN);
}
*/
signal(SIGINT, SIG_IGN);
signal(SIGQUIT, SIG_IGN);
udt.it_interval.tv_sec = 0;
udt.it_interval.tv_usec = 200000;
udt.it_value.tv_sec = 1;
udt.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &udt, 0);
me->p_status = PALIVE; /* Put player in game */
/* Get input until the player quits or dies */
initinput();
input();
me->p_status = PFREE;
}