added sys::rmdir()
This commit is contained in:
parent
8f484cf79e
commit
66a626a6e6
@ -258,7 +258,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_gem_t* gem, const hawk_ooch_t* path, in
|
|||||||
|
|
||||||
if (flags & HAWK_FIO_MBSPATH)
|
if (flags & HAWK_FIO_MBSPATH)
|
||||||
{
|
{
|
||||||
handle = CreateFileA (
|
handle = CreateFileA(
|
||||||
(const hawk_bch_t*)path, desired_access, share_mode,
|
(const hawk_bch_t*)path, desired_access, share_mode,
|
||||||
HAWK_NULL, /* set noinherit by setting no secattr */
|
HAWK_NULL, /* set noinherit by setting no secattr */
|
||||||
creation_disposition, flag_and_attr, 0
|
creation_disposition, flag_and_attr, 0
|
||||||
@ -266,7 +266,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_gem_t* gem, const hawk_ooch_t* path, in
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
handle = CreateFile (
|
handle = CreateFile(
|
||||||
path, desired_access, share_mode,
|
path, desired_access, share_mode,
|
||||||
HAWK_NULL, /* set noinherit by setting no secattr */
|
HAWK_NULL, /* set noinherit by setting no secattr */
|
||||||
creation_disposition, flag_and_attr, 0
|
creation_disposition, flag_and_attr, 0
|
||||||
@ -293,7 +293,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_gem_t* gem, const hawk_ooch_t* path, in
|
|||||||
|
|
||||||
if (flags & HAWK_FIO_MBSPATH)
|
if (flags & HAWK_FIO_MBSPATH)
|
||||||
{
|
{
|
||||||
handle = CreateFileA (
|
handle = CreateFileA(
|
||||||
(const hawk_bch_t*)path, desired_access, share_mode,
|
(const hawk_bch_t*)path, desired_access, share_mode,
|
||||||
HAWK_NULL, /* set noinherit by setting no secattr */
|
HAWK_NULL, /* set noinherit by setting no secattr */
|
||||||
creation_disposition, flag_and_attr, 0
|
creation_disposition, flag_and_attr, 0
|
||||||
@ -301,7 +301,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_gem_t* gem, const hawk_ooch_t* path, in
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
handle = CreateFile (
|
handle = CreateFile(
|
||||||
path, desired_access, share_mode,
|
path, desired_access, share_mode,
|
||||||
HAWK_NULL, /* set noinherit by setting no secattr */
|
HAWK_NULL, /* set noinherit by setting no secattr */
|
||||||
creation_disposition, flag_and_attr, 0
|
creation_disposition, flag_and_attr, 0
|
||||||
@ -1118,8 +1118,7 @@ hawk_ooi_t hawk_fio_write (hawk_fio_t* fio, const void* data, hawk_oow_t size)
|
|||||||
|
|
||||||
if (size > (HAWK_TYPE_MAX(hawk_ooi_t) & HAWK_TYPE_MAX(DWORD)))
|
if (size > (HAWK_TYPE_MAX(hawk_ooi_t) & HAWK_TYPE_MAX(DWORD)))
|
||||||
size = HAWK_TYPE_MAX(hawk_ooi_t) & HAWK_TYPE_MAX(DWORD);
|
size = HAWK_TYPE_MAX(hawk_ooi_t) & HAWK_TYPE_MAX(DWORD);
|
||||||
if (WriteFile (fio->handle,
|
if (WriteFile (fio->handle, data, (DWORD)size, &count, HAWK_NULL) == FALSE)
|
||||||
data, (DWORD)size, &count, HAWK_NULL) == FALSE)
|
|
||||||
{
|
{
|
||||||
hawk_gem_seterrnum (fio->gem, HAWK_NULL, hawk_syserr_to_errnum(GetLastError()));
|
hawk_gem_seterrnum (fio->gem, HAWK_NULL, hawk_syserr_to_errnum(GetLastError()));
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -2283,74 +2283,38 @@ static int fnc_mkdir (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
{
|
{
|
||||||
sys_list_t* sys_list;
|
sys_list_t* sys_list;
|
||||||
hawk_val_t* a0;
|
hawk_val_t* a0;
|
||||||
hawk_ooch_t* str;
|
|
||||||
hawk_oow_t len;
|
|
||||||
hawk_int_t rx;
|
hawk_int_t rx;
|
||||||
hawk_int_t mode = DEFAULT_MODE;
|
hawk_int_t mode = DEFAULT_MODE;
|
||||||
|
|
||||||
sys_list = rtx_to_sys_list(rtx, fi);
|
sys_list = rtx_to_sys_list(rtx, fi);
|
||||||
|
|
||||||
a0 = hawk_rtx_getarg(rtx, 0);
|
a0 = hawk_rtx_getarg(rtx, 0);
|
||||||
str = hawk_rtx_getvaloocstr(rtx, a0, &len);
|
|
||||||
if (!str)
|
|
||||||
{
|
|
||||||
rx = copy_error_to_sys_list(rtx, sys_list);
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* the target name contains a null character. */
|
|
||||||
if (hawk_find_oochar(str, len, '\0'))
|
|
||||||
{
|
|
||||||
rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL);
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hawk_rtx_getnargs(rtx) >= 2 && (hawk_rtx_valtoint(rtx, hawk_rtx_getarg(rtx, 1), &mode) <= -1 || mode < 0)) mode = DEFAULT_MODE;
|
if (hawk_rtx_getnargs(rtx) >= 2 && (hawk_rtx_valtoint(rtx, hawk_rtx_getarg(rtx, 1), &mode) <= -1 || mode < 0)) mode = DEFAULT_MODE;
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
rx = _tmkdir(str);
|
{
|
||||||
if (rx <= -1) rx = set_error_on_sys_list_with_errno(rtx, sys_list, HAWK_NULL);
|
hawk_ooch_t* str;
|
||||||
#elif defined(HAWK_OOCH_IS_BCH)
|
hawk_oow_t len;
|
||||||
rx = HAWK_MKDIR(str, mode);
|
|
||||||
if (rx <= -1) rx = set_error_on_sys_list_with_errno(rtx, sys_list, HAWK_NULL);
|
str = hawk_rtx_getvaloocstr(rtx, a0, &len);
|
||||||
#else
|
if (!str)
|
||||||
{
|
|
||||||
hawk_bch_t* mbs;
|
|
||||||
mbs = hawk_rtx_duputobcstr(rtx, str, HAWK_NULL);
|
|
||||||
if (mbs)
|
|
||||||
{
|
|
||||||
rx = HAWK_MKDIR(mbs, mode);
|
|
||||||
hawk_rtx_freemem (rtx, mbs);
|
|
||||||
if (rx <= -1) rx = set_error_on_sys_list_with_errno(rtx, sys_list, HAWK_NULL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
rx = copy_error_to_sys_list(rtx, sys_list);
|
rx = copy_error_to_sys_list(rtx, sys_list);
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* the target name contains a null character. */
|
||||||
|
if (hawk_find_oochar(str, len, '\0'))
|
||||||
|
{
|
||||||
|
rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
rx = (CreateDirectory(str, HAWK_NULL) == FALSE)? set_error_on_sys_list(rtx, sys_list, hawk_syserr_to_errnum(GetLastError()), HAWK_NULL): 0;
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (str) hawk_rtx_freevaloocstr (rtx, a0, str);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
done:
|
|
||||||
if (str) hawk_rtx_freevaloocstr (rtx, a0, str);
|
|
||||||
|
|
||||||
HAWK_ASSERT (HAWK_IN_QUICKINT_RANGE(rx));
|
|
||||||
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, rx));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int fnc_unlink (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|
||||||
{
|
|
||||||
sys_list_t* sys_list;
|
|
||||||
hawk_val_t* a0;
|
|
||||||
hawk_int_t rx;
|
|
||||||
|
|
||||||
sys_list = rtx_to_sys_list(rtx, fi);
|
|
||||||
a0 = hawk_rtx_getarg(rtx, 0);
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
rx = set_error_on_sys_list(rtx, sys_list, HAWK_ENOIMPL, HAWK_NULL);
|
|
||||||
#elif defined(__OS2__)
|
|
||||||
rx = set_error_on_sys_list(rtx, sys_list, HAWK_ENOIMPL, HAWK_NULL);
|
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
hawk_bch_t* str;
|
hawk_bch_t* str;
|
||||||
@ -2370,8 +2334,172 @@ static int fnc_unlink (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
rx = HAWK_UNLINK(str);
|
#if defined(__OS2__)
|
||||||
|
{
|
||||||
|
APIRET rc;
|
||||||
|
rc = DosCreateDir(str, HAWK_NULL);
|
||||||
|
rx = (rc == NO_ERROR)? 0: set_error_on_sys_list(rtx, sys_list, hawk_syserr_to_errnum(rc), HAWK_NULL);
|
||||||
|
}
|
||||||
|
#elif defined(__DOS__)
|
||||||
|
rx = mkdir(str);
|
||||||
if (rx <= -1) rx = set_error_on_sys_list_with_errno(rtx, sys_list, HAWK_NULL);
|
if (rx <= -1) rx = set_error_on_sys_list_with_errno(rtx, sys_list, HAWK_NULL);
|
||||||
|
#else
|
||||||
|
rx = HAWK_MKDIR(str, mode);
|
||||||
|
if (rx <= -1) rx = set_error_on_sys_list_with_errno(rtx, sys_list, HAWK_NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (str) hawk_rtx_freevalbcstr (rtx, a0, str);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
HAWK_ASSERT (HAWK_IN_QUICKINT_RANGE(rx));
|
||||||
|
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, rx));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int fnc_rmdir (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
||||||
|
{
|
||||||
|
sys_list_t* sys_list;
|
||||||
|
hawk_val_t* a0;
|
||||||
|
hawk_int_t rx;
|
||||||
|
|
||||||
|
sys_list = rtx_to_sys_list(rtx, fi);
|
||||||
|
a0 = hawk_rtx_getarg(rtx, 0);
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
{
|
||||||
|
hawk_ooch_t* str;
|
||||||
|
hawk_oow_t len;
|
||||||
|
|
||||||
|
str = hawk_rtx_getvaloocstr(rtx, a0, &len);
|
||||||
|
if (!str)
|
||||||
|
{
|
||||||
|
rx = copy_error_to_sys_list(rtx, sys_list);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* the target name contains a null character. */
|
||||||
|
if (hawk_find_oochar(str, len, '\0'))
|
||||||
|
{
|
||||||
|
rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
rx = (RemoveDirectory(str) == FALSE)? set_error_on_sys_list(rtx, sys_list, hawk_syserr_to_errnum(GetLastError()), HAWK_NULL): 0;
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (str) hawk_rtx_freevaloocstr (rtx, a0, str);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
{
|
||||||
|
hawk_bch_t* str;
|
||||||
|
hawk_oow_t len;
|
||||||
|
|
||||||
|
str = hawk_rtx_getvalbcstr(rtx, a0, &len);
|
||||||
|
if (!str)
|
||||||
|
{
|
||||||
|
rx = copy_error_to_sys_list(rtx, sys_list);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* the target name contains a null character. */
|
||||||
|
if (hawk_find_bchar(str, len, '\0'))
|
||||||
|
{
|
||||||
|
rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(__OS2__)
|
||||||
|
{
|
||||||
|
APIRET rc;
|
||||||
|
rc = DosDeleteDir(str);
|
||||||
|
rx = (rc == NO_ERROR)? 0: set_error_on_sys_list(rtx, sys_list, hawk_syserr_to_errnum(rc), HAWK_NULL);
|
||||||
|
}
|
||||||
|
#elif defined(__DOS__)
|
||||||
|
rx = rmdir(str);
|
||||||
|
if (rx <= -1) rx = set_error_on_sys_list_with_errno(rtx, sys_list, HAWK_NULL);
|
||||||
|
#else
|
||||||
|
rx = HAWK_RMDIR(str);
|
||||||
|
if (rx <= -1) rx = set_error_on_sys_list_with_errno(rtx, sys_list, HAWK_NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (str) hawk_rtx_freevalbcstr (rtx, a0, str);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
HAWK_ASSERT (HAWK_IN_QUICKINT_RANGE(rx));
|
||||||
|
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, rx));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int fnc_unlink (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
||||||
|
{
|
||||||
|
sys_list_t* sys_list;
|
||||||
|
hawk_val_t* a0;
|
||||||
|
hawk_int_t rx;
|
||||||
|
|
||||||
|
sys_list = rtx_to_sys_list(rtx, fi);
|
||||||
|
a0 = hawk_rtx_getarg(rtx, 0);
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
{
|
||||||
|
hawk_ooch_t* str;
|
||||||
|
hawk_oow_t len;
|
||||||
|
|
||||||
|
str = hawk_rtx_getvaloocstr(rtx, a0, &len);
|
||||||
|
if (!str)
|
||||||
|
{
|
||||||
|
rx = copy_error_to_sys_list(rtx, sys_list);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* the target name contains a null character. */
|
||||||
|
if (hawk_find_oochar(str, len, '\0'))
|
||||||
|
{
|
||||||
|
rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
rx = (DeleteFile(str) == FALSE)? set_error_on_sys_list(rtx, sys_list, hawk_syserr_to_errnum(GetLastError()), HAWK_NULL): 0;
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (str) hawk_rtx_freevaloocstr (rtx, a0, str);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
{
|
||||||
|
hawk_bch_t* str;
|
||||||
|
hawk_oow_t len;
|
||||||
|
|
||||||
|
str = hawk_rtx_getvalbcstr(rtx, a0, &len);
|
||||||
|
if (!str)
|
||||||
|
{
|
||||||
|
rx = copy_error_to_sys_list(rtx, sys_list);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* the target name contains a null character. */
|
||||||
|
if (hawk_find_bchar(str, len, '\0'))
|
||||||
|
{
|
||||||
|
rx = set_error_on_sys_list(rtx, sys_list, HAWK_EINVAL, HAWK_NULL);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(__OS2__)
|
||||||
|
{
|
||||||
|
APIRET rc;
|
||||||
|
rc = DosDelete(str, HAWK_NULL);
|
||||||
|
rx = (rc == NO_ERROR)? 0: set_error_on_sys_list(rtx, sys_list, hawk_syserr_to_errnum(rc), HAWK_NULL);
|
||||||
|
}
|
||||||
|
#elif defined(__DOS__)
|
||||||
|
rx = unlink(str);
|
||||||
|
if (rx <= -1) rx = set_error_on_sys_list_with_errno(rtx, sys_list, HAWK_NULL);
|
||||||
|
#else
|
||||||
|
rx = HAWK_UNLINK(str);
|
||||||
|
if (rx <= -1) rx = set_error_on_sys_list_with_errno(rtx, sys_list, HAWK_NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
done:
|
done:
|
||||||
if (str) hawk_rtx_freevalbcstr (rtx, a0, str);
|
if (str) hawk_rtx_freevalbcstr (rtx, a0, str);
|
||||||
@ -2793,6 +2921,7 @@ static fnctab_t fnctab[] =
|
|||||||
{ HAWK_T("read"), { { 2, 3, HAWK_T("vrv") }, fnc_read, 0 } },
|
{ HAWK_T("read"), { { 2, 3, HAWK_T("vrv") }, fnc_read, 0 } },
|
||||||
{ HAWK_T("readdir"), { { 2, 2, HAWK_T("vr") }, fnc_readdir, 0 } },
|
{ HAWK_T("readdir"), { { 2, 2, HAWK_T("vr") }, fnc_readdir, 0 } },
|
||||||
{ HAWK_T("resetdir"), { { 2, 2, HAWK_NULL }, fnc_resetdir, 0 } },
|
{ HAWK_T("resetdir"), { { 2, 2, HAWK_NULL }, fnc_resetdir, 0 } },
|
||||||
|
{ HAWK_T("rmdir"), { { 1, 1, HAWK_NULL }, fnc_rmdir, 0 } },
|
||||||
{ HAWK_T("setenv"), { { 2, 3, HAWK_NULL }, fnc_setenv, 0 } },
|
{ HAWK_T("setenv"), { { 2, 3, HAWK_NULL }, fnc_setenv, 0 } },
|
||||||
{ HAWK_T("settime"), { { 1, 1, HAWK_NULL }, fnc_settime, 0 } },
|
{ HAWK_T("settime"), { { 1, 1, HAWK_NULL }, fnc_settime, 0 } },
|
||||||
{ HAWK_T("sleep"), { { 1, 1, HAWK_NULL }, fnc_sleep, 0 } },
|
{ HAWK_T("sleep"), { { 1, 1, HAWK_NULL }, fnc_sleep, 0 } },
|
||||||
|
@ -999,7 +999,7 @@ create_process:
|
|||||||
|
|
||||||
if (flags & HAWK_PIO_WRITEIN)
|
if (flags & HAWK_PIO_WRITEIN)
|
||||||
{
|
{
|
||||||
/* child reads, parent writes */
|
/* child reads, parent writes */
|
||||||
rc = DosCreatePipe (&handle[0], &handle[1], pipe_size);
|
rc = DosCreatePipe (&handle[0], &handle[1], pipe_size);
|
||||||
if (rc != NO_ERROR)
|
if (rc != NO_ERROR)
|
||||||
{
|
{
|
||||||
@ -1089,12 +1089,12 @@ create_process:
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* TODO: selective between DosOpenL and DosOpen */
|
/* TODO: selective between DosOpenL and DosOpen */
|
||||||
rc = DosOpen /*DosOpenL*/ (
|
rc = DosOpen/*DosOpenL*/(
|
||||||
HAWK_BT("NUL"),
|
HAWK_BT("NUL"),
|
||||||
&os2devnul,
|
&os2devnul,
|
||||||
&action_taken,
|
&action_taken,
|
||||||
0, /*zero,*/
|
0, /*zero,*/
|
||||||
FILE_NORMAL,
|
FILE_NORMAL,
|
||||||
OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW,
|
OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW,
|
||||||
OPEN_FLAGS_NOINHERIT | OPEN_SHARE_DENYNONE,
|
OPEN_FLAGS_NOINHERIT | OPEN_SHARE_DENYNONE,
|
||||||
0L
|
0L
|
||||||
@ -1108,20 +1108,20 @@ create_process:
|
|||||||
|
|
||||||
/* duplicate the current stdin/out/err to old_in/out/err as a new handle */
|
/* duplicate the current stdin/out/err to old_in/out/err as a new handle */
|
||||||
|
|
||||||
rc = DosDupHandle (std_in, &old_in);
|
rc = DosDupHandle(std_in, &old_in);
|
||||||
if (rc != NO_ERROR)
|
if (rc != NO_ERROR)
|
||||||
{
|
{
|
||||||
hawk_gem_seterrnum (pio->gem, HAWK_NULL, hawk_syserr_to_errnum(rc));
|
hawk_gem_seterrnum (pio->gem, HAWK_NULL, hawk_syserr_to_errnum(rc));
|
||||||
goto oops;
|
goto oops;
|
||||||
}
|
}
|
||||||
rc = DosDupHandle (std_out, &old_out);
|
rc = DosDupHandle(std_out, &old_out);
|
||||||
if (rc != NO_ERROR)
|
if (rc != NO_ERROR)
|
||||||
{
|
{
|
||||||
hawk_gem_seterrnum (pio->gem, HAWK_NULL, hawk_syserr_to_errnum(rc));
|
hawk_gem_seterrnum (pio->gem, HAWK_NULL, hawk_syserr_to_errnum(rc));
|
||||||
DosClose (old_in); old_in = HAWK_PIO_HND_NIL;
|
DosClose (old_in); old_in = HAWK_PIO_HND_NIL;
|
||||||
goto oops;
|
goto oops;
|
||||||
}
|
}
|
||||||
rc = DosDupHandle (std_err, &old_err);
|
rc = DosDupHandle(std_err, &old_err);
|
||||||
if (rc != NO_ERROR)
|
if (rc != NO_ERROR)
|
||||||
{
|
{
|
||||||
hawk_gem_seterrnum (pio->gem, HAWK_NULL, hawk_syserr_to_errnum(rc));
|
hawk_gem_seterrnum (pio->gem, HAWK_NULL, hawk_syserr_to_errnum(rc));
|
||||||
|
Loading…
Reference in New Issue
Block a user