diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-03-06 12:52:02 -0500 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-03-06 12:52:02 -0500 |
commit | 9bb22e9fc9be18ee4829a2e672ea05889dcbb224 (patch) | |
tree | 08d846549a6104deb7b96aa06447b8499e0a5da7 | |
parent | 9aa64bc1cb6830e2e72fbb3b555566ec6cd44f58 (diff) | |
download | stasis-9bb22e9fc9be18ee4829a2e672ea05889dcbb224.tar.gz |
docker_script function now returns exit code from process
* Pipe buffer is zeroed each iteration
-rw-r--r-- | src/docker.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/docker.c b/src/docker.c index 09980cf..32c7b60 100644 --- a/src/docker.c +++ b/src/docker.c @@ -24,24 +24,31 @@ int docker_script(const char *image, char *data, unsigned flags) { FILE *infile; FILE *outfile; char cmd[PATH_MAX]; + char buffer[OMC_BUFSIZ]; memset(cmd, 0, sizeof(cmd)); snprintf(cmd, sizeof(cmd) - 1, "docker run --rm -i %s /bin/bash -", image); - if (flags & OMC_DOCKER_QUIET) { - } - fprintf(stderr, "%s\n", cmd); + outfile = popen(cmd, "w"); + if (!outfile) { + // opening command pipe for writing failed + return -1; + } infile = fmemopen(data, strlen(data), "r"); - char buffer[OMC_BUFSIZ]; + if (!infile) { + // opening memory file for reading failed + return -1; + } + do { + memset(buffer, 0, sizeof(buffer)); fgets(buffer, sizeof(buffer) - 1, infile); fputs(buffer, outfile); } while (!feof(infile)); - fclose(infile); - pclose(outfile); - return 0; + fclose(infile); + return pclose(outfile); } int docker_build(const char *dirpath, const char *args, int engine) { |