summaryrefslogtreecommitdiffstats
path: root/src/tests/cmocka/dummy_child.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/cmocka/dummy_child.c')
-rw-r--r--src/tests/cmocka/dummy_child.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/tests/cmocka/dummy_child.c b/src/tests/cmocka/dummy_child.c
index 057fa6450..3f79ca837 100644
--- a/src/tests/cmocka/dummy_child.c
+++ b/src/tests/cmocka/dummy_child.c
@@ -35,6 +35,10 @@ int main(int argc, const char *argv[])
int opt;
int debug_fd = -1;
poptContext pc;
+ ssize_t len;
+ ssize_t written;
+ errno_t ret;
+ uint8_t buf[IN_BUF_SIZE];
const char *action = NULL;
const char *guitar;
const char *drums;
@@ -80,6 +84,31 @@ int main(int argc, const char *argv[])
DEBUG(SSSDBG_CRIT_FAILURE, "This band sounds weird\n");
_exit(1);
}
+ } else if (strcasecmp(action, "echo") == 0) {
+ errno = 0;
+ len = sss_atomic_read_s(STDIN_FILENO, buf, IN_BUF_SIZE);
+ if (len == -1) {
+ ret = errno;
+ DEBUG(SSSDBG_CRIT_FAILURE, "read failed [%d][%s].\n", ret, strerror(ret));
+ _exit(1);
+ }
+ close(STDIN_FILENO);
+
+ errno = 0;
+ written = sss_atomic_write_s(3, buf, len);
+ if (written == -1) {
+ ret = errno;
+ DEBUG(SSSDBG_CRIT_FAILURE, "write failed [%d][%s].\n", ret,
+ strerror(ret));
+ _exit(1);
+ }
+ close(STDOUT_FILENO);
+
+ if (written != len) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "Expected to write %zu bytes, wrote %zu\n",
+ len, written);
+ _exit(1);
+ }
}
}