diff --git a/src/main.c b/src/main.c index 3c24729..ce0f85e 100644 --- a/src/main.c +++ b/src/main.c @@ -4,15 +4,25 @@ #include #include #include +#include -void preprocess(const char * input_fname) +static char preprocessed_fname[] = "/tmp/cxlppXXXXXX"; +static bool preprocessed_fname_created = false; + +bool preprocess(const char * input_fname) { - char fname[] = "/tmp/cxlppXXXXXX"; - int fd = mkstemp(fname); + int fd = mkstemp(preprocessed_fname); + if (fd < 0) + { + perror("mkstemp"); + return false; + } + preprocessed_fname_created = true; pid_t pid = fork(); if (pid < 0) { perror("fork"); + return false; } else if (pid == 0) { @@ -24,13 +34,22 @@ void preprocess(const char * input_fname) { close(fd); waitpid(pid, NULL, 0); - unlink(fname); } + return true; } int main(int argc, char * argv[]) { - preprocess(argv[1]); + bool preprocess_successful = preprocess(argv[1]); + if (preprocess_successful) + { + parse(preprocessed_fname); + } + /* Clean up temporary files. */ + if (preprocessed_fname_created) + { + unlink(preprocessed_fname); + } return 0; }