On 05/23/16 16:03, Aaron Conole wrote:
The previous gcov behavior was to always output errors on the stderr channel. This is fine for most uses, but some programs will require stderr to be untouched by libgcov for certain tests. This change allows configuring the gcov output via an environment variable which will be used to open the appropriate file.
this patch is nearly there, but a couple of nits and an error on my part.
+/* Configured via the GCOV_ERROR_FILE environment variable; + it will either be stderr, or a file of the user's choosing. */ +static FILE *gcov_error_file;
I was wrong about making this static. Your original externally visible definition (with leading __) was right. The reason is that multiple gcov-aware shared objects should use the same FILE for errors. If you could restore that part of your previous patch, along with a comment explaining why gcov_error_file is externally visible, but get_gcov_error is static, that'd be great.
+ +/* A utility function to populate the gcov_error_file pointer */ + +static FILE * +get_gcov_error_file(void) +{ +#if IN_GCOV_TOOL + return stderr; +#endif
Prefer #else ... #endif to encapsulate the remaining bit of the function.
/* A utility function for outputing errors. */
May as well fix the spelling error outputing -> outputting
+#if !IN_GCOV_TOOL +static void +gcov_error_exit(void) +{ + if (gcov_error_file && gcov_error_file != stderr) + { + fclose(gcov_error_file);
needs space -- the habit'll grow
+#if !IN_GCOV_TOOL +static void gcov_error_exit(void);
space before '(' nathan