mirror of
https://github.com/wiiu-env/wut.git
synced 2024-12-05 03:04: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_malloc();
|
||||||
void __init_wut_newlib();
|
void __init_wut_newlib();
|
||||||
extern void __init_wut_stdcpp();
|
void __init_wut_stdcpp();
|
||||||
void __init_wut_devoptab();
|
void __init_wut_devoptab();
|
||||||
void __init_wut_socket();
|
void __attribute__((weak)) __init_wut_socket();
|
||||||
|
|
||||||
void __fini_wut_malloc();
|
void __fini_wut_malloc();
|
||||||
void __fini_wut_newlib();
|
void __fini_wut_newlib();
|
||||||
extern void __fini_wut_stdcpp();
|
void __fini_wut_stdcpp();
|
||||||
void __fini_wut_devoptab();
|
void __fini_wut_devoptab();
|
||||||
void __fini_wut_socket();
|
void __attribute__((weak)) __fini_wut_socket();
|
||||||
|
|
||||||
void __attribute__((weak))
|
void __attribute__((weak))
|
||||||
__init_wut()
|
__init_wut()
|
||||||
{
|
{
|
||||||
__init_wut_malloc();
|
__init_wut_malloc();
|
||||||
__init_wut_newlib();
|
__init_wut_newlib();
|
||||||
//if (__init_wut_stdcpp) {
|
__init_wut_stdcpp();
|
||||||
__init_wut_stdcpp();
|
|
||||||
//}
|
|
||||||
__init_wut_devoptab();
|
__init_wut_devoptab();
|
||||||
__init_wut_socket();
|
if (&__init_wut_socket) __init_wut_socket();
|
||||||
}
|
}
|
||||||
|
|
||||||
void __attribute__((weak))
|
void __attribute__((weak))
|
||||||
__fini_wut()
|
__fini_wut()
|
||||||
{
|
{
|
||||||
__fini_wut_socket();
|
if (&__fini_wut_socket) __fini_wut_socket();
|
||||||
__fini_wut_devoptab();
|
__fini_wut_devoptab();
|
||||||
//if (__fini_wut_stdcpp) {
|
__fini_wut_stdcpp();
|
||||||
__fini_wut_stdcpp();
|
|
||||||
//}
|
|
||||||
__fini_wut_newlib();
|
__fini_wut_newlib();
|
||||||
__fini_wut_malloc();
|
__fini_wut_malloc();
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ socket(int domain,
|
|||||||
{
|
{
|
||||||
int rc, fd, dev;
|
int rc, fd, dev;
|
||||||
|
|
||||||
dev = FindDevice("sock:");
|
dev = FindDevice("soc:");
|
||||||
if (dev == -1) {
|
if (dev == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -22,7 +22,7 @@ socket(int domain,
|
|||||||
__release_handle(fd);
|
__release_handle(fd);
|
||||||
return __wut_get_nsysnet_result(NULL, rc);
|
return __wut_get_nsysnet_result(NULL, rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
*(int *)__get_handle(fd)->fileStruct = rc;
|
*(int *)__get_handle(fd)->fileStruct = rc;
|
||||||
return fd;
|
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
|
#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
|
static unsigned char
|
||||||
__wut_nsysnet_error_code_map[] =
|
__wut_nsysnet_error_code_map[] =
|
||||||
{
|
{
|
||||||
@ -59,6 +73,50 @@ __wut_nsysnet_error_code_map[] =
|
|||||||
EMFILE,
|
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
|
int
|
||||||
__wut_get_nsysnet_fd(int fd)
|
__wut_get_nsysnet_fd(int fd)
|
||||||
{
|
{
|
||||||
@ -67,7 +125,7 @@ __wut_get_nsysnet_fd(int fd)
|
|||||||
errno = EBADF;
|
errno = EBADF;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (strcmp(devoptab_list[handle->device]->name, "sock") != 0) {
|
if (strcmp(devoptab_list[handle->device]->name, "soc") != 0) {
|
||||||
errno = ENOTSOCK;
|
errno = ENOTSOCK;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -93,7 +151,7 @@ __wut_get_nsysnet_result(struct _reent *r,
|
|||||||
if (sockerror < sizeof(__wut_nsysnet_error_code_map)) {
|
if (sockerror < sizeof(__wut_nsysnet_error_code_map)) {
|
||||||
error = __wut_nsysnet_error_code_map[sockerror];
|
error = __wut_nsysnet_error_code_map[sockerror];
|
||||||
} else {
|
} else {
|
||||||
error = NSYSNET_UNKNOWN_ERROR_OFFSET + sockerror;
|
error = NSYSNET_UNKNOWN_ERROR_OFFSET + sockerror;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r) {
|
if (r) {
|
||||||
@ -104,4 +162,3 @@ __wut_get_nsysnet_result(struct _reent *r,
|
|||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user