simplified io-file.c with a macro
This commit is contained in:
parent
b2d7f4bb58
commit
ef75871a93
@ -132,10 +132,22 @@ oops:
|
|||||||
} \
|
} \
|
||||||
while(0)
|
while(0)
|
||||||
|
|
||||||
|
#define SETRET_WITH_SYSCALL(moo, nargs, n) \
|
||||||
|
do { \
|
||||||
|
int x_ = (n); \
|
||||||
|
if (x_ <= -1) \
|
||||||
|
{ \
|
||||||
|
moo_seterrwithsyserr (moo, 0, errno); \
|
||||||
|
return MOO_PF_FAILURE; \
|
||||||
|
} \
|
||||||
|
MOO_STACK_SETRET (moo, nargs, MOO_SMOOI_TO_OOP(x_)); \
|
||||||
|
} \
|
||||||
|
while(0)
|
||||||
|
|
||||||
static moo_pfrc_t pf_chmod_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
static moo_pfrc_t pf_chmod_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
||||||
{
|
{
|
||||||
moo_oop_t tmp;
|
moo_oop_t tmp;
|
||||||
int fd, n;
|
int fd;
|
||||||
moo_oow_t mode;
|
moo_oow_t mode;
|
||||||
|
|
||||||
RCV_TO_FD (moo, nargs, fd);
|
RCV_TO_FD (moo, nargs, fd);
|
||||||
@ -149,21 +161,15 @@ static moo_pfrc_t pf_chmod_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
|||||||
return MOO_PF_FAILURE;
|
return MOO_PF_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
n = fchmod(fd, mode);
|
SETRET_WITH_SYSCALL (moo, nargs, fchmod(fd, mode));
|
||||||
if (n <= -1)
|
|
||||||
{
|
|
||||||
moo_seterrwithsyserr (moo, 0, errno);
|
|
||||||
return MOO_PF_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
MOO_STACK_SETRET (moo, nargs, MOO_SMOOI_TO_OOP(n));
|
|
||||||
return MOO_PF_SUCCESS;
|
return MOO_PF_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static moo_pfrc_t pf_chown_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
static moo_pfrc_t pf_chown_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
||||||
{
|
{
|
||||||
moo_oop_t tmp;
|
moo_oop_t tmp;
|
||||||
int fd, n;
|
int fd;
|
||||||
moo_ooi_t uid, gid;
|
moo_ooi_t uid, gid;
|
||||||
|
|
||||||
RCV_TO_FD (moo, nargs, fd);
|
RCV_TO_FD (moo, nargs, fd);
|
||||||
@ -188,21 +194,14 @@ static moo_pfrc_t pf_chown_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
|||||||
if (uid <= -1) uid = (uid_t)-1;
|
if (uid <= -1) uid = (uid_t)-1;
|
||||||
if (gid <= -1) gid = (gid_t)-1;
|
if (gid <= -1) gid = (gid_t)-1;
|
||||||
|
|
||||||
n = fchown(fd, uid, gid);
|
SETRET_WITH_SYSCALL (moo, nargs, fchown(fd, uid, gid));
|
||||||
if (n <= -1)
|
|
||||||
{
|
|
||||||
moo_seterrwithsyserr (moo, 0, errno);
|
|
||||||
return MOO_PF_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
MOO_STACK_SETRET (moo, nargs, MOO_SMOOI_TO_OOP(n));
|
|
||||||
return MOO_PF_SUCCESS;
|
return MOO_PF_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static moo_pfrc_t pf_lock_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
static moo_pfrc_t pf_lock_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
||||||
{
|
{
|
||||||
moo_oop_t tmp;
|
moo_oop_t tmp;
|
||||||
int fd, n;
|
int fd;
|
||||||
|
|
||||||
RCV_TO_FD (moo, nargs, fd);
|
RCV_TO_FD (moo, nargs, fd);
|
||||||
|
|
||||||
@ -213,18 +212,10 @@ static moo_pfrc_t pf_lock_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
|||||||
return MOO_PF_FAILURE;
|
return MOO_PF_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
n = flock(fd, MOO_OOP_TO_SMOOI(tmp));
|
SETRET_WITH_SYSCALL (moo, nargs, flock(fd, MOO_OOP_TO_SMOOI(tmp)));
|
||||||
if (n <= -1)
|
|
||||||
{
|
|
||||||
moo_seterrwithsyserr (moo, 0, errno);
|
|
||||||
return MOO_PF_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
MOO_STACK_SETRET (moo, nargs, MOO_SMOOI_TO_OOP(n));
|
|
||||||
return MOO_PF_SUCCESS;
|
return MOO_PF_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static moo_pfrc_t pf_seek_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
static moo_pfrc_t pf_seek_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
||||||
{
|
{
|
||||||
moo_oop_t tmp;
|
moo_oop_t tmp;
|
||||||
@ -250,7 +241,7 @@ static moo_pfrc_t pf_seek_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
n = lseek(fd, offset, whence);
|
n = lseek(fd, offset, whence);
|
||||||
if (n <= -1)
|
if (n == (off_t)-1)
|
||||||
{
|
{
|
||||||
moo_seterrwithsyserr (moo, 0, errno);
|
moo_seterrwithsyserr (moo, 0, errno);
|
||||||
return MOO_PF_FAILURE;
|
return MOO_PF_FAILURE;
|
||||||
@ -278,14 +269,7 @@ static moo_pfrc_t pf_truncate_file (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
|||||||
return MOO_PF_FAILURE;
|
return MOO_PF_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
n = ftruncate(fd, size);
|
SETRET_WITH_SYSCALL (moo, nargs, ftruncate(fd, size));
|
||||||
if (n <= -1)
|
|
||||||
{
|
|
||||||
moo_seterrwithsyserr (moo, 0, errno);
|
|
||||||
return MOO_PF_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
MOO_STACK_SETRET (moo, nargs, MOO_SMOOI_TO_OOP(n));
|
|
||||||
return MOO_PF_SUCCESS;
|
return MOO_PF_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user