summaryrefslogtreecommitdiffstats
path: root/src/io.c
diff options
context:
space:
mode:
authorGravatar Gediminas Jakutis <gediminas@varciai.lt> 2020-03-02 21:42:46 +0200
committerGravatar Gediminas Jakutis <gediminas@varciai.lt> 2020-03-02 21:42:46 +0200
commit9eb76eda865dc4f82fd53223e5c557f707b569b9 (patch)
tree6afe8364dd57c0f00a550c6ab7ef80383748b8c8 /src/io.c
parentb6fe7f8d9ade5e1b665bcf2cddb145fd2e0fde57 (diff)
downloadalgos-ld1-9eb76eda865dc4f82fd53223e5c557f707b569b9.tar.gz
algos-ld1-9eb76eda865dc4f82fd53223e5c557f707b569b9.tar.bz2
algos-ld1-9eb76eda865dc4f82fd53223e5c557f707b569b9.zip
begin macrofy error testing.
Signed-off-by: Gediminas Jakutis <gediminas@varciai.lt>
Diffstat (limited to 'src/io.c')
-rw-r--r--src/io.c85
1 files changed, 14 insertions, 71 deletions
diff --git a/src/io.c b/src/io.c
index a67c230..04f53b1 100644
--- a/src/io.c
+++ b/src/io.c
@@ -20,10 +20,7 @@ int stream_open(struct stream * const in, const struct settings * const s)
{
int ret = 0;
- if (!in || in->fd > 0 || !in->name || !s) {
- ret = EINVAL;
- goto err;
- }
+ try(!in || in->fd > 0 || !in->name || !s, err, EINVAL);
if (in->out == 1) {
ret = stream_open_out(in, s);
@@ -41,10 +38,7 @@ int stream_close(struct stream * const in)
{
int ret = 0;
- if (!in || in->fd < 0) {
- ret = EINVAL;
- goto early_err;
- }
+ try(!in || in->fd < 0, early_err, EINVAL);
if (!in->out) {
goto out;
@@ -66,11 +60,7 @@ int stream_close(struct stream * const in)
}
}
- if (linkat(AT_FDCWD, path, AT_FDCWD, in->name, AT_SYMLINK_FOLLOW)) {
- ret = errno;
- /* TODO: error message */
- goto err;
- }
+ try(linkat(AT_FDCWD, path, AT_FDCWD, in->name, AT_SYMLINK_FOLLOW), err, errno);
} else {
ret = EINVAL;
goto err;
@@ -116,40 +106,17 @@ static int stream_open_out(struct stream * const in, const struct settings * con
dname = strdup(tmp[1]);
free(tmp[0]);
- if (stat(dname, &st)) {
- ret = errno;
- /* TODO: error message */
- goto err;
- }
-
- if(!(st.st_mode & S_IFDIR)) {
- ret = EINVAL;
- /* TODO: error message */
- goto err;
- }
+ try(stat(dname, &st), err, errno);
+ try(!(st.st_mode & S_IFDIR), err, EINVAL); /* TODO: err msg */
if (!stat(in->name, &st)) {
- if (!(st.st_mode & S_IFREG)) {
- ret = EINVAL;
- /* TODO: error message */
- goto err;
- }
+ try(!(st.st_mode & S_IFREG), err, EINVAL); /* TODO: err msg */
mode = st.st_mode;
}
in->fd = open(dname, O_TMPFILE | O_WRONLY, mode);
-
- if (in->fd < 0) {
- ret = errno;
- /* TODO: error message */
- goto err;
- }
-
- if (ftruncate(in->fd, s->stride * in->n)) {
- ret = errno;
- /* TODO: error message */
- goto err;
- }
+ try(in->fd < 0, err, errno); /* TODO: err msg */
+ try(ftruncate(in->fd, s->stride * in->n), err, errno); /* TODO: err msg */
err:
free(dname);
@@ -161,25 +128,11 @@ static int stream_open_in(struct stream * const in, const struct settings * cons
struct stat st;
int ret = 0;
- if (stat(in->name, &st)) {
- ret = errno;
- /* TODO: error message */
- goto err;
- } else if (!(st.st_mode & S_IFREG) || !st.st_size || (st.st_size % s->stride)) {
- ret = EINVAL;
- /* TODO: error message */
- goto err;
- } else {
- in->n = st.st_size / s->stride;
- }
-
+ try(stat(in->name, &st), err, errno); /* TODO: err msg */
+ try(!(st.st_mode & S_IFREG) || !st.st_size || (st.st_size % s->stride), err, EINVAL); /* TODO: err msg */
+ in->n = st.st_size / s->stride;
in->fd = open(in->name, O_RDONLY | O_NOATIME);
-
- if (in->fd < 0) {
- ret = errno;
- /* TODO: error message */
- goto err;
- }
+ try(in->fd < 0, err, errno); /* TODO: err msg */
err:
return ret;
@@ -190,19 +143,9 @@ static int stream_open_special(struct stream * const in)
struct stat st;
int ret = 0;
- if (stat(in->name, &st)) {
- ret = errno;
- /* TODO: error message */
- goto err;
- }
-
+ try(stat(in->name, &st), err, errno); /* TODO: err msg */
in->fd = open(in->name, O_RDONLY | O_NOATIME);
-
- if (in->fd < 0) {
- ret = errno;
- /* TODO: error message */
- goto err;
- }
+ try(in->fd < 0, err, errno); /* TODO: err msg */
err:
return ret;