#include <sys/queue.h>
#include "sysio.h"
+#include "xtio.h"
#include "file.h"
#include "inode.h"
-#include "xtio.h"
#include "sysio-symbols.h"
/*
* Check that it was opened with flags supporting the operation.
*/
- if (!(wr
- ? (fil->f_flags & (O_RDWR | O_WRONLY))
- : !(fil->f_flags & O_WRONLY)))
+ if (!F_CHKRW(fil, wr ? 'w' : 'r'))
return -EBADF;
ino = fil->f_ino;
cc =
_sysio_validx(xtv, xtv_count,
iov, iov_count,
-#if _LARGEFILE64_SOURCE && defined(O_LARGEFILE)
+#if defined(_LARGEFILE64_SOURCE) && defined(O_LARGEFILE)
(fil->f_flags & O_LARGEFILE) == 0
? LONG_MAX
:
free(xtv);
SYSIO_INTERFACE_RETURN(IOID_FAIL, err);
}
- SYSIO_INTERFACE_RETURN(ioctx->ioctx_id, 0);
+ SYSIO_INTERFACE_RETURN(ioctx, 0);
}
ssize_t
free(iov);
SYSIO_INTERFACE_RETURN(IOID_FAIL, err);
}
- SYSIO_INTERFACE_RETURN(ioctx->ioctx_id, 0);
+ SYSIO_INTERFACE_RETURN(ioctx, 0);
}
ssize_t
free(xtv);
SYSIO_INTERFACE_RETURN(IOID_FAIL, err);
}
- SYSIO_INTERFACE_RETURN(ioctx->ioctx_id, 0);
+ SYSIO_INTERFACE_RETURN(ioctx, 0);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef ipread64v
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(ipreadv)),
SYSIO_INTERFACE_NAME(ipread64v))
SYSIO_INTERFACE_RETURN(err ? -1 : cc, err);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef pread64v
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(preadv)),
SYSIO_INTERFACE_NAME(pread64v))
free(xtv);
SYSIO_INTERFACE_RETURN(IOID_FAIL, err);
}
- SYSIO_INTERFACE_RETURN(ioctx->ioctx_id, 0);
+ SYSIO_INTERFACE_RETURN(ioctx, 0);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef ipread64
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(ipread)),
SYSIO_INTERFACE_NAME(ipread64))
SYSIO_INTERFACE_RETURN(err ? -1 : cc, err);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef pread64
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(pread)),
SYSIO_INTERFACE_NAME(pread64))
SYSIO_INTERFACE_ENTER;
fil = _sysio_fd_find(fd);
- if (!(fil && xtv_count))
+ if (!fil)
SYSIO_INTERFACE_RETURN(IOID_FAIL, -EBADF);
+ /* Perform a check on the iov_count and xtv_count */
+ if ((iov_count == 0) || (xtv_count == 0))
+ SYSIO_INTERFACE_RETURN(IOID_FAIL, -EINVAL);
+
err =
_sysio_iiox(IIOXOP_READ(fil->f_ino),
fil,
NULL,
&ioctx);
- SYSIO_INTERFACE_RETURN(err ? IOID_FAIL : ioctx->ioctx_id, err);
+ SYSIO_INTERFACE_RETURN(err ? IOID_FAIL : ioctx, err);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef iread64x
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(ireadx)),
SYSIO_INTERFACE_NAME(iread64x))
#endif
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
ioid_t
SYSIO_INTERFACE_NAME(ireadx)(int fd,
const struct iovec *iov, size_t iov_count,
SYSIO_INTERFACE_ENTER;
fil = _sysio_fd_find(fd);
- if (!(fil && xtv_count))
+ if (!fil)
SYSIO_INTERFACE_RETURN(IOID_FAIL, -EBADF);
+
+ /* Perform a check on the iov_count and xtv_count */
+ if ((iov_count == 0) || (xtv_count == 0))
+ SYSIO_INTERFACE_RETURN(IOID_FAIL, -EINVAL);
+
ixtv = ixtvent = malloc(xtv_count * sizeof(struct intnl_xtvec));
if (!ixtv)
SYSIO_INTERFACE_RETURN(IOID_FAIL, -ENOMEM);
free(ixtv);
SYSIO_INTERFACE_RETURN(IOID_FAIL, err);
}
- SYSIO_INTERFACE_RETURN(ioctx->ioctx_id, 0);
+ SYSIO_INTERFACE_RETURN(ioctx, 0);
}
#else
#undef ireadx
xtv,
xtv_count)) == IOID_FAIL)
return -1;
- return iowait(ioid);
+ return SYSIO_INTERFACE_NAME(iowait)(ioid);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef iread64x
ssize_t
SYSIO_INTERFACE_NAME(read64x)(int fd,
xtv,
xtv_count)) == IOID_FAIL)
return -1;
- return iowait(ioid);
+ return SYSIO_INTERFACE_NAME(iowait)(ioid);
}
#endif
free(xtv);
SYSIO_INTERFACE_RETURN(IOID_FAIL, err);
}
- SYSIO_INTERFACE_RETURN(ioctx->ioctx_id, 0);
+ SYSIO_INTERFACE_RETURN(ioctx, 0);
}
ssize_t
free(iov);
SYSIO_INTERFACE_RETURN(IOID_FAIL, err);
}
- SYSIO_INTERFACE_RETURN(ioctx->ioctx_id, 0);
+ SYSIO_INTERFACE_RETURN(ioctx, 0);
}
ssize_t
free(xtv);
SYSIO_INTERFACE_RETURN(IOID_FAIL, err);
}
- SYSIO_INTERFACE_RETURN(ioctx->ioctx_id, 0);
+ SYSIO_INTERFACE_RETURN(ioctx, 0);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef ipwrite64v
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(ipwritev)),
SYSIO_INTERFACE_NAME(ipwrite64v))
SYSIO_INTERFACE_RETURN(err ? -1 : cc, err);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef pwrite64v
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(pwritev)),
SYSIO_INTERFACE_NAME(pwrite64v))
free(xtv);
SYSIO_INTERFACE_RETURN(IOID_FAIL, err);
}
- SYSIO_INTERFACE_RETURN(ioctx->ioctx_id, 0);
+ SYSIO_INTERFACE_RETURN(ioctx, 0);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef ipwrite64
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(ipwrite)),
SYSIO_INTERFACE_NAME(ipwrite64))
SYSIO_INTERFACE_RETURN(err ? -1 : cc, err);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef pwrite64
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(pwrite)),
SYSIO_INTERFACE_NAME(pwrite64))
NULL,
&ioctx);
- SYSIO_INTERFACE_RETURN(err ? IOID_FAIL : ioctx->ioctx_id, err);
+ SYSIO_INTERFACE_RETURN(err ? IOID_FAIL : ioctx, err);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef iwrite64x
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(iwritex)),
SYSIO_INTERFACE_NAME(iwrite64x))
#endif
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
ioid_t
SYSIO_INTERFACE_NAME(iwritex)(int fd,
const struct iovec *iov, size_t iov_count,
SYSIO_INTERFACE_ENTER;
fil = _sysio_fd_find(fd);
- if (!(fil && xtv_count))
+ if (!fil)
SYSIO_INTERFACE_RETURN(IOID_FAIL, -EBADF);
+ /* Perform a check on the iov_count and xtv_count */
+ if ((iov_count == 0) || (xtv_count == 0))
+ SYSIO_INTERFACE_RETURN(IOID_FAIL, -EINVAL);
+
ixtv = ixtvent = malloc(xtv_count * sizeof(struct intnl_xtvec));
if (!ixtv)
SYSIO_INTERFACE_RETURN(IOID_FAIL, -ENOMEM);
free(ixtv);
SYSIO_INTERFACE_RETURN(IOID_FAIL, err);
}
- SYSIO_INTERFACE_RETURN(ioctx->ioctx_id, 0);
+ SYSIO_INTERFACE_RETURN(ioctx, 0);
}
#else
#undef iwritex
xtv,
xtv_count)) == IOID_FAIL)
return -1;
- return iowait(ioid);
+ return SYSIO_INTERFACE_NAME(iowait)(ioid);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef write64x
ssize_t
SYSIO_INTERFACE_NAME(write64x)(int fd,
xtv,
xtv_count)) == IOID_FAIL)
return -1;
- return iowait(ioid);
+ return SYSIO_INTERFACE_NAME(iowait)(ioid);
}
#endif