[patch] [ccache] don't cache distcc errors
Martin Pool
mbp at sourcefrog.net
Thu Aug 28 13:05:09 EST 2003
Please apply:
Index: ccache.c
===================================================================
RCS file: /data/cvs/ccache/ccache.c,v
retrieving revision 1.80
diff -u -c -r1.80 ccache.c
*** ccache.c 7 Mar 2003 12:09:19 -0000 1.80
--- ccache.c 28 Aug 2003 02:58:50 -0000
***************
*** 871,876 ****
--- 871,899 ----
return 0;
}
+
+ /* Make a copy of stderr that will not be cached, so things like
+ * distcc can send networking errors to it. */
+ int setup_uncached_err(void)
+ {
+ char *buf;
+ int uncached_fd;
+
+ uncached_fd = dup(2);
+ if (uncached_fd == -1) {
+ fatal("dup(2) failed");
+ }
+
+ /* leak a pointer to the environment */
+ x_asprintf(&buf, "UNCACHED_ERR_FD=%d", uncached_fd);
+
+ if (putenv(buf) == -1)
+ fatal("putenv failed");
+
+ return 0;
+ }
+
+
int main(int argc, char *argv[])
{
cache_dir = getenv("CCACHE_DIR");
***************
*** 879,884 ****
--- 902,909 ----
}
cache_logfile = getenv("CCACHE_LOGFILE");
+
+ setup_uncached_err();
/* check if we are being invoked as "ccache" */
if (strlen(argv[0]) >= strlen(MYNAME) &&
--
Martin
More information about the ccache
mailing list