aboutsummaryrefslogtreecommitdiff
path: root/src/docker.c
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2024-03-06 12:52:02 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2024-03-06 12:52:02 -0500
commit9bb22e9fc9be18ee4829a2e672ea05889dcbb224 (patch)
tree08d846549a6104deb7b96aa06447b8499e0a5da7 /src/docker.c
parent9aa64bc1cb6830e2e72fbb3b555566ec6cd44f58 (diff)
downloadstasis-9bb22e9fc9be18ee4829a2e672ea05889dcbb224.tar.gz
docker_script function now returns exit code from process
* Pipe buffer is zeroed each iteration
Diffstat (limited to 'src/docker.c')
-rw-r--r--src/docker.c21
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) {