[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