diff options
| -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) { | 
