|
|
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 m
Length: 3174 (0xc66)
Types: TextFile
Names: »main.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/X/Xtrek/main.c«
static char sccsid[] = "@(#)main.c 1.2";
#ifndef lint
static char *rcsid_main_c = "$Header: /uraid2/riedl/src/xceltrek/RCS/main.c,v 1.1 88/04/18 16:10:25 riedl Exp Locker: riedl $";
#endif lint
/* Copyright (c) 1986 Chris Guthrie */
#include <X11/Xlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/time.h>
#include <signal.h>
#include <pwd.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#ifdef SUN40
#include <sys/filio.h>
#else
#define FD_SET(n, s) (((s)->fds_bits[0]) |= (1 << n))
#define FD_CLR(n, s) (((s)->fds_bits[0]) &= ~(1 << n))
#define FD_ZERO(s) bzero((char *)(s), sizeof (*(s)))
#define FD_ISSET(n, s) (((s)->fds_bits[0]) & (1 << n))
#include <sys/ioctl.h>
#endif /* SUN40 */
#include "defs.h"
#include "data.h"
extern int debug;
extern int xtrek_socket;
struct sockaddr_in xtrekAddress;
main(argc, argv)
int argc;
char **argv;
{
struct player *p;
struct servent *sp;
extern struct servent *getservbyname();
int docycle(), move();
char *host;
register int i;
extern char *optarg;
extern int optind, opterr;
char *getenv();
char c;
int argerr = 0;
int on = 1;
int oldinetd = 0;
freopen("/tmp/trek","a",stderr);
#if defined(sun) && !defined(SUN40)
oldinetd = 1;
#endif
while ((c = getopt(argc, argv, "dT:c:u:")) != EOF) {
switch (c) {
case 'T':
switch (optarg[0]) {
#ifdef notdef
case 'f': LocalTeam = 0; break;
case 'r': LocalTeam = 1; break;
case 'k': LocalTeam = 2; break;
case 'o': LocalTeam = 3; break;
#endif
default: argerr = 1; break;
}
break;
case 'c':
/* copilot = 1;*/
break;
case 'd':
debug++;
break;
case '?':
default:
argerr = 1;
break;
}
}
if (optind < argc) host = argv[optind];
else host = getenv("DISPLAY");
if (argerr) {
fprintf(stderr,"Usage: %s [-Tfrko] [-c pno] -u uid [ host:display ]\n",
argv[0]);
exit(1);
}
if (debug || oldinetd) {
sp = getservbyname("xtrek", "tcp");
if (sp == (struct servent *) NULL) {
fprintf(stderr, "Can't find xtrek service\n");
exit(1);
}
xtrekAddress.sin_family = AF_INET;
xtrekAddress.sin_addr.s_addr = INADDR_ANY;
xtrekAddress.sin_port = sp->s_port;
xtrek_socket = socket(AF_INET, SOCK_STREAM, 0);
if (xtrek_socket < 0) {
fprintf(stderr, "Can't open xtrek socket\n");
perror("socket");
exit(1);
}
if (bind(xtrek_socket, &xtrekAddress, sizeof xtrekAddress) < 0) {
fprintf(stderr, "Can't bind to xtrek address\n");
perror("bind");
(void) close(xtrek_socket);
exit(1);
}
} else {
xtrek_socket = 0;
}
(void) setsockopt(xtrek_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof on);
(void) setsockopt(xtrek_socket, SOL_SOCKET, SO_KEEPALIVE, (char *)&on, sizeof on);
ioctl(xtrek_socket, FIONBIO, (char *) &on);
if (listen(xtrek_socket, MAXPLAYER) < 0) {
fprintf(stderr, "Can't listen on xtrek socket\n");
perror("listen");
(void) close(xtrek_socket);
exit(1);
}
/* this finds the shared memory information plus a player slot */
openmem();
/* The main loop monster! */
input();
}