git.shiar.nl
/
netris.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
unofficial version 0.8: chat, code cleanup
[netris.git]
/
inet.c
diff --git
a/inet.c
b/inet.c
index 1549aa0b388b44c8c7b0c7a3d20e5133732649ce..8da9956b16917e3f236a9409432c8df139553e32 100644
(file)
--- a/
inet.c
+++ b/
inet.c
@@
-20,6
+20,7
@@
*/
#include "netris.h"
*/
#include "netris.h"
+
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
@@
-28,20
+29,33
@@
#include <netdb.h>
#include <string.h>
#include <errno.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])
#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 };
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;
{ //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)
AtExit(CloseNet);
host = gethostbyname(hostStr);
if (!host)
@@
-65,7
+79,7
@@
ExtFunc int InitiateConnection(char *hostStr, short port)
return 0;
} //InitiateConnection
return 0;
} //InitiateConnection
-
ExtFunc
void HandShake(void)
+void HandShake(void)
{ //talk to your host
MyEvent event;
{ //talk to your host
MyEvent event;
@@
-78,16
+92,15
@@
ExtFunc void HandShake(void)
do {
if (WaitMyEvent(&event, EM_net) == E_net)
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;
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,
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;
}
&Players[me]);
break;
}
@@
-122,19
+135,15
@@
ExtFunc void HandShake(void)
} //NP_error
default:
break;
} //NP_error
default:
break;
- }
+
}
else
fatal("Hm, the party apparantly ended prematurely.");
}
while (event.u.net.type != NP_gamedata);
} //HandShake
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;
{ //receive
int result;
short uid, type, size;
@@
-168,7
+177,7
@@
ExtFunc MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event)
return E_net;
} //NetGenFunc
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];
{ //send shit to server
netint4 header[3];
@@
-181,7
+190,7
@@
ExtFunc void SendPacket(short uid, NetPacketType type, int size, void *data)
die("write");
} //SendPacket
die("write");
} //SendPacket
-
ExtFunc
void CloseNet(void)
+void CloseNet(void)
{ //kick some connection's ass!
MyEvent event;
{ //kick some connection's ass!
MyEvent event;