mirror of
https://github.com/wiiu-env/wut.git
synced 2024-12-04 19:44:16 +01:00
wutsocket: only link in networking layer if actually used
This commit is contained in:
parent
c377cffe13
commit
efc1bd47ff
@ -1,35 +1,31 @@
|
||||
void __init_wut_malloc();
|
||||
void __init_wut_newlib();
|
||||
extern void __init_wut_stdcpp();
|
||||
void __init_wut_stdcpp();
|
||||
void __init_wut_devoptab();
|
||||
void __init_wut_socket();
|
||||
void __attribute__((weak)) __init_wut_socket();
|
||||
|
||||
void __fini_wut_malloc();
|
||||
void __fini_wut_newlib();
|
||||
extern void __fini_wut_stdcpp();
|
||||
void __fini_wut_stdcpp();
|
||||
void __fini_wut_devoptab();
|
||||
void __fini_wut_socket();
|
||||
void __attribute__((weak)) __fini_wut_socket();
|
||||
|
||||
void __attribute__((weak))
|
||||
__init_wut()
|
||||
{
|
||||
__init_wut_malloc();
|
||||
__init_wut_newlib();
|
||||
//if (__init_wut_stdcpp) {
|
||||
__init_wut_stdcpp();
|
||||
//}
|
||||
__init_wut_stdcpp();
|
||||
__init_wut_devoptab();
|
||||
__init_wut_socket();
|
||||
if (&__init_wut_socket) __init_wut_socket();
|
||||
}
|
||||
|
||||
void __attribute__((weak))
|
||||
__fini_wut()
|
||||
{
|
||||
__fini_wut_socket();
|
||||
if (&__fini_wut_socket) __fini_wut_socket();
|
||||
__fini_wut_devoptab();
|
||||
//if (__fini_wut_stdcpp) {
|
||||
__fini_wut_stdcpp();
|
||||
//}
|
||||
__fini_wut_stdcpp();
|
||||
__fini_wut_newlib();
|
||||
__fini_wut_malloc();
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ socket(int domain,
|
||||
{
|
||||
int rc, fd, dev;
|
||||
|
||||
dev = FindDevice("sock:");
|
||||
dev = FindDevice("soc:");
|
||||
if (dev == -1) {
|
||||
return -1;
|
||||
}
|
||||
@ -22,7 +22,7 @@ socket(int domain,
|
||||
__release_handle(fd);
|
||||
return __wut_get_nsysnet_result(NULL, rc);
|
||||
}
|
||||
|
||||
|
||||
*(int *)__get_handle(fd)->fileStruct = rc;
|
||||
return fd;
|
||||
}
|
||||
|
@ -1,80 +0,0 @@
|
||||
#include "wut_socket.h"
|
||||
|
||||
static devoptab_t
|
||||
__wut_socket_devoptab =
|
||||
{
|
||||
.name = "sock",
|
||||
.structSize = sizeof(int),
|
||||
.open_r = __wut_socket_open,
|
||||
.close_r = __wut_socket_close,
|
||||
.write_r = __wut_socket_write,
|
||||
.read_r = __wut_socket_read,
|
||||
.seek_r = NULL,
|
||||
.fstat_r = NULL,
|
||||
.stat_r = NULL,
|
||||
.link_r = NULL,
|
||||
.unlink_r = NULL,
|
||||
.chdir_r = NULL,
|
||||
.rename_r = NULL,
|
||||
.mkdir_r = NULL,
|
||||
.dirStateSize = 0,
|
||||
.diropen_r = NULL,
|
||||
.dirreset_r = NULL,
|
||||
.dirnext_r = NULL,
|
||||
.dirclose_r = NULL,
|
||||
.statvfs_r = NULL,
|
||||
.ftruncate_r = NULL,
|
||||
.fsync_r = NULL,
|
||||
.deviceData = 0,
|
||||
.chmod_r = NULL,
|
||||
.fchmod_r = NULL,
|
||||
.rmdir_r = NULL,
|
||||
};
|
||||
|
||||
static BOOL
|
||||
__wut_socket_initialised = FALSE;
|
||||
|
||||
void
|
||||
__init_wut_socket()
|
||||
{
|
||||
BOOL connected = FALSE;
|
||||
int dev;
|
||||
|
||||
if (__wut_socket_initialised) {
|
||||
return;
|
||||
}
|
||||
|
||||
ACInitialize();
|
||||
ACConnect();
|
||||
|
||||
ACIsApplicationConnected(&connected);
|
||||
if (!connected) {
|
||||
ACFinalize();
|
||||
return;
|
||||
}
|
||||
|
||||
RPLWRAP(socket_lib_init)();
|
||||
|
||||
dev = AddDevice(&__wut_socket_devoptab);
|
||||
if (dev == -1) {
|
||||
RPLWRAP(socket_lib_finish)();
|
||||
ACFinalize();
|
||||
return;
|
||||
}
|
||||
|
||||
__wut_socket_initialised = TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
__fini_wut_socket()
|
||||
{
|
||||
if (!__wut_socket_initialised) {
|
||||
return;
|
||||
}
|
||||
|
||||
RPLWRAP(socket_lib_finish)();
|
||||
ACFinalize();
|
||||
|
||||
__wut_socket_initialised = FALSE;
|
||||
}
|
||||
|
@ -2,6 +2,20 @@
|
||||
|
||||
#define NSYSNET_UNKNOWN_ERROR_OFFSET 10000
|
||||
|
||||
static BOOL
|
||||
__wut_socket_initialised = FALSE;
|
||||
|
||||
static devoptab_t
|
||||
__wut_socket_devoptab =
|
||||
{
|
||||
.name = "soc",
|
||||
.structSize = sizeof(int),
|
||||
.open_r = __wut_socket_open,
|
||||
.close_r = __wut_socket_close,
|
||||
.write_r = __wut_socket_write,
|
||||
.read_r = __wut_socket_read,
|
||||
};
|
||||
|
||||
static unsigned char
|
||||
__wut_nsysnet_error_code_map[] =
|
||||
{
|
||||
@ -59,6 +73,50 @@ __wut_nsysnet_error_code_map[] =
|
||||
EMFILE,
|
||||
};
|
||||
|
||||
void
|
||||
__init_wut_socket()
|
||||
{
|
||||
BOOL connected = FALSE;
|
||||
int dev;
|
||||
|
||||
if (__wut_socket_initialised) {
|
||||
return;
|
||||
}
|
||||
|
||||
ACInitialize();
|
||||
ACConnect();
|
||||
|
||||
ACIsApplicationConnected(&connected);
|
||||
if (!connected) {
|
||||
ACFinalize();
|
||||
return;
|
||||
}
|
||||
|
||||
RPLWRAP(socket_lib_init)();
|
||||
|
||||
dev = AddDevice(&__wut_socket_devoptab);
|
||||
if (dev == -1) {
|
||||
RPLWRAP(socket_lib_finish)();
|
||||
ACFinalize();
|
||||
return;
|
||||
}
|
||||
|
||||
__wut_socket_initialised = TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
__fini_wut_socket()
|
||||
{
|
||||
if (!__wut_socket_initialised) {
|
||||
return;
|
||||
}
|
||||
|
||||
RPLWRAP(socket_lib_finish)();
|
||||
ACFinalize();
|
||||
|
||||
__wut_socket_initialised = FALSE;
|
||||
}
|
||||
|
||||
int
|
||||
__wut_get_nsysnet_fd(int fd)
|
||||
{
|
||||
@ -67,7 +125,7 @@ __wut_get_nsysnet_fd(int fd)
|
||||
errno = EBADF;
|
||||
return -1;
|
||||
}
|
||||
if (strcmp(devoptab_list[handle->device]->name, "sock") != 0) {
|
||||
if (strcmp(devoptab_list[handle->device]->name, "soc") != 0) {
|
||||
errno = ENOTSOCK;
|
||||
return -1;
|
||||
}
|
||||
@ -93,7 +151,7 @@ __wut_get_nsysnet_result(struct _reent *r,
|
||||
if (sockerror < sizeof(__wut_nsysnet_error_code_map)) {
|
||||
error = __wut_nsysnet_error_code_map[sockerror];
|
||||
} else {
|
||||
error = NSYSNET_UNKNOWN_ERROR_OFFSET + sockerror;
|
||||
error = NSYSNET_UNKNOWN_ERROR_OFFSET + sockerror;
|
||||
}
|
||||
|
||||
if (r) {
|
||||
@ -104,4 +162,3 @@ __wut_get_nsysnet_result(struct _reent *r,
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user