Skip to content

Commit 4e76745

Browse files
committed
Get rid of the GIO dependency
This may hurt portability a bit. TODO: check if it still builds and works on OS X or some other BSD.
1 parent dd6c544 commit 4e76745

File tree

5 files changed

+24
-55
lines changed

5 files changed

+24
-55
lines changed

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ endif
66

77
include useful.make
88

9-
libs := gio-2.0 gthread-2.0 sdl
9+
libs := gthread-2.0 sdl
1010

1111
cc.flags := -Wall -Werror -std=gnu99
1212
cc.flags += $(shell pkg-config --cflags $(libs))

Makefile.win

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ CFLAGS += -g
1717

1818
LDFLAGS := $(LDFLAGS)
1919
LDFLAGS += -lws2_32
20-
LDFLAGS += -Lwin/glib/lib -lglib-2.0 -lgobject-2.0 -lgthread-2.0 -lgio-2.0 -lz
20+
LDFLAGS += -Lwin/glib/lib -lglib-2.0 -lgobject-2.0 -lgthread-2.0 -lz
2121
LDFLAGS += -Lwin/SDL-1.2.14/lib -lSDL
2222

2323
.PHONY: all clean

main.c

+19-43
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
#include <stdio.h>
44
#include <unistd.h>
55

6-
#include <gio/gio.h>
76
#include <SDL.h>
87

98
#include "cmd.h"
@@ -19,6 +18,11 @@
1918
#include <winsock2.h>
2019
#include <ws2tcpip.h>
2120
#include "win32.h"
21+
#else
22+
#include <netdb.h>
23+
#include <netinet/in.h>
24+
#include <sys/types.h>
25+
#include <sys/socket.h>
2226
#endif
2327

2428
/* default command-line options */
@@ -215,7 +219,6 @@ int main(int argc, char **argv)
215219
/* initialization stuff */
216220

217221
g_thread_init(0);
218-
g_type_init();
219222

220223
iq_client = g_async_queue_new_full(packet_free);
221224
iq_server = g_async_queue_new_full(packet_free);
@@ -233,50 +236,35 @@ int main(int argc, char **argv)
233236

234237
#ifdef WIN32
235238
SOCKET listener = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, 0, 0, 0);
236-
if (listener == INVALID_SOCKET)
239+
#else
240+
SOCKET listener = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
241+
#endif
242+
if (listener < 0)
237243
die("network setup: socket() for listener");
238244

239245
{
240-
BOOL b = TRUE;
246+
int b = 1;
241247
setsockopt(listener, SOL_SOCKET, SO_REUSEADDR, (char *)&b, sizeof b);
242248
}
243249

244250
struct sockaddr_in listener_in = { 0 };
245251
listener_in.sin_family = AF_INET;
246252
listener_in.sin_addr.s_addr = htonl(INADDR_ANY);
247253
listener_in.sin_port = htons(opt.localport);
248-
if (bind(listener, (struct sockaddr *)&listener_in, sizeof listener_in) == SOCKET_ERROR)
254+
if (bind(listener, (struct sockaddr *)&listener_in, sizeof listener_in) != 0)
249255
die("network setup: bind() for listener");
250256

251-
if (listen(listener, SOMAXCONN) == SOCKET_ERROR)
257+
if (listen(listener, SOMAXCONN) != 0)
252258
die("network setup: listen() for listener");
253259

254260
SOCKET sock_cli = accept(listener, 0, 0);
255-
if (sock_cli == INVALID_SOCKET)
261+
if (sock_cli < 0)
256262
die("network setup: accept() for listener");
257-
#else /* WIN32 */
258-
GSocketListener *listener = g_socket_listener_new();
259-
260-
if (!g_socket_listener_add_inet_port(listener, opt.localport, 0, 0))
261-
{
262-
die("Unable to set up sockets.");
263-
return 1;
264-
}
265-
266-
GSocketConnection *conn_cli = g_socket_listener_accept(listener, 0, 0, 0);
267-
268-
if (!conn_cli)
269-
{
270-
die("Client never connected.");
271-
return 1;
272-
}
273-
#endif /* WIN32 */
274263

275264
/* connect to the minecraft server side */
276265

277266
log_print("[INFO] Connecting to %s...", argv[1]);
278267

279-
#ifdef WIN32
280268
struct addrinfo hints = { 0 }, *serveraddr;
281269

282270
hints.ai_family = AF_UNSPEC;
@@ -297,25 +285,18 @@ int main(int argc, char **argv)
297285
if (aires != 0)
298286
die("network setup: getaddrinfo() for server");
299287

288+
#ifdef WIN32
300289
SOCKET sock_srv = WSASocket(serveraddr->ai_family, serveraddr->ai_socktype, serveraddr->ai_protocol, 0, 0, 0);
301-
if (sock_srv == INVALID_SOCKET)
290+
#else
291+
SOCKET sock_srv = socket(serveraddr->ai_family, serveraddr->ai_socktype, serveraddr->ai_protocol);
292+
#endif
293+
if (sock_srv < 0)
302294
die("network setup: socket() for server");
303295

304-
if (connect(sock_srv, serveraddr->ai_addr, serveraddr->ai_addrlen) == SOCKET_ERROR)
296+
if (connect(sock_srv, serveraddr->ai_addr, serveraddr->ai_addrlen) != 0)
305297
die("network setup: connect() for server");
306298

307299
freeaddrinfo(serveraddr);
308-
#else /* WIN32 */
309-
GSocketClient *client = g_socket_client_new();
310-
311-
GSocketConnection *conn_srv = g_socket_client_connect_to_host(client, argv[1], 25565, 0, 0);
312-
313-
if (!conn_srv)
314-
{
315-
die("Unable to connect to server.");
316-
return 1;
317-
}
318-
#endif /* WIN32 */
319300

320301
/* start the user interface side */
321302

@@ -350,11 +331,6 @@ int main(int argc, char **argv)
350331

351332
log_print("[INFO] Starting up...");
352333

353-
#ifndef WIN32
354-
GSocket *sock_cli = g_socket_connection_get_socket(conn_cli);
355-
GSocket *sock_srv = g_socket_connection_get_socket(conn_srv);
356-
#endif
357-
358334
struct proxy_config proxy_client_server = {
359335
.sock_from = sock_cli,
360336
.sock_to = sock_srv,

protocol.c

-8
Original file line numberDiff line numberDiff line change
@@ -301,11 +301,7 @@ packet_t *packet_read(SOCKET sock, packet_state_t *state)
301301
buf_start = 0;
302302
}
303303

304-
#ifdef WIN32
305304
int got = recv(sock, (char*)(buf+buf_end), MAX_PACKET_SIZE - buf_end, 0);
306-
#else
307-
gssize got = g_socket_receive(sock, (gchar*)(buf+buf_end), MAX_PACKET_SIZE - buf_end, 0, 0);
308-
#endif
309305
if (got <= 0)
310306
{
311307
buf_pos = buf_start = buf_end = 0;
@@ -451,11 +447,7 @@ int packet_write(SOCKET sock, packet_t *packet)
451447

452448
while (left)
453449
{
454-
#ifdef WIN32
455450
int sent = send(sock, p, left, 0);
456-
#else
457-
gssize sent = g_socket_send(sock, p, left, 0, 0);
458-
#endif
459451
if (sent < 0)
460452
return 0;
461453
left -= sent;

protocol.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
#ifdef WIN32
77
#include <winsock2.h>
88
#else
9-
#include <gio/gio.h>
10-
typedef GSocket *SOCKET;
9+
typedef int SOCKET;
10+
#include <sys/types.h>
11+
#include <sys/socket.h>
1112
#endif
1213

1314
enum packet_id

0 commit comments

Comments
 (0)