*/
#include "netris.h"
+
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <netdb.h>
#include <string.h>
#include <errno.h>
+#include <setjmp.h>
+
+#include "inet.h"
#define HEADER_SIZE sizeof(netint2[2])
#define HEADER_SIZE3 sizeof(netint4[3])
-ExtFunc MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event);
+MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event);
EventGenRec netGen =
{ NULL, 0, FT_read, -1, NetGenFunc, EM_net, 0, "\0", 0, HEADER_SIZE3 };
-ExtFunc int InitiateConnection(char *hostStr, short port)
+static sigjmp_buf close_env;
+
+void CatchInt(int sig)
+{
+ siglongjmp(close_env, 1);
+} //CatchInt
+
+int InitiateConnection(char *hostStr, short port)
{ //connect to host
struct sockaddr_in addr;
struct hostent *host;
+ if (sigsetjmp(close_env, 1))
+ exit(0);
+ signal(SIGINT, CatchInt); //handle exit (^C)
AtExit(CloseNet);
host = gethostbyname(hostStr);
if (!host)
return 0;
} //InitiateConnection
-ExtFunc void HandShake(void)
+void HandShake(void)
{ //talk to your host
MyEvent event;
do {
if (WaitMyEvent(&event, EM_net) == E_net)
- switch (event.u.net.type) {
+ switch (event.u.net.type) {
case NP_hello:
{
me = event.u.net.uid;
- memcpy(&Players[me], &Players[0], sizeof(Player));
+ memcpy(&Players[me], &Players[0], sizeof(_Player));
fprintf(stderr, "Accepted (%s) as #%d (%s)\n",
event.u.net.data, me, Players[me].name);
SendPacket(0, NP_newPlayer,
- sizeof(Player) - sizeof(Players[me].host)
- - sizeof(Players[me].spy) - sizeof(Players[me].small),
+ sizeof(_Player) - sizeof(Players[me].host),
&Players[me]);
break;
}
{
static struct {
int playerflags;
- int maxplayers; //1
- int started; //2
- int continuous; //3
- long seed; //4
- int initspeed; //5
+ int maxplayers; //1
+ int started; //2
+ int continuous; //3
+ long seed; //4
+ int initspeed; //5
} data;
memcpy(&data, event.u.net.data, event.u.net.size);
} //NP_error
default:
break;
- }
+ }
else
fatal("Hm, the party apparantly ended prematurely.");
}
while (event.u.net.type != NP_gamedata);
} //HandShake
-ExtFunc void CheckNetConn(void)
-{ //am I necessary?
-}
-
-ExtFunc MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event)
+MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event)
{ //receive
int result;
short uid, type, size;
return E_net;
} //NetGenFunc
-ExtFunc void SendPacket(short uid, NetPacketType type, int size, void *data)
+void SendPacket(short uid, NetPacketType type, int size, void *data)
{ //send shit to server
netint4 header[3];
die("write");
} //SendPacket
-ExtFunc void CloseNet(void)
+void CloseNet(void)
{ //kick some connection's ass!
MyEvent event;