]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
direct .i mode: Don't create tmp.cpp_stderr file at all
authorpeterbudai@hotmail.com <peterbudai@hotmail.com>
Fri, 16 Mar 2018 22:54:16 +0000 (23:54 +0100)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 25 Mar 2018 14:11:54 +0000 (16:11 +0200)
Create tmp file only when it's actually needed.

src/ccache.c

index afa7adc5dfb9054755233101a6903198e4b830e9..277b55b416ed7a13406e9e17244cb54e527b6d60 100644 (file)
@@ -1355,10 +1355,7 @@ get_object_name_from_cpp(struct args *args, struct mdfour *hash)
 {
        time_of_compilation = time(NULL);
 
-       char *path_stderr = format("%s/tmp.cpp_stderr", temp_dir());
-       int path_stderr_fd = create_tmp_fd(&path_stderr);
-       add_pending_tmp_file(path_stderr);
-
+       char *path_stderr = NULL;
        char *path_stdout;
        int status;
        if (direct_i_file) {
@@ -1384,6 +1381,10 @@ get_object_name_from_cpp(struct args *args, struct mdfour *hash)
                int path_stdout_fd = create_tmp_fd(&path_stdout);
                add_pending_tmp_file(path_stdout);
 
+               path_stderr = format("%s/tmp.cpp_stderr", temp_dir());
+               int path_stderr_fd = create_tmp_fd(&path_stderr);
+               add_pending_tmp_file(path_stderr);
+
                int args_added = 2;
                args_add(args, "-E");
                if (conf->keep_comments_cpp) {
@@ -1427,7 +1428,7 @@ get_object_name_from_cpp(struct args *args, struct mdfour *hash)
        }
 
        hash_delimiter(hash, "cppstderr");
-       if (!hash_file(hash, path_stderr)) {
+       if (!direct_i_file && !hash_file(hash, path_stderr)) {
                fatal("Failed to open %s: %s", path_stderr, strerror(errno));
        }