aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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) {