Instead of writing warnings to stderr, write them to a log. Later, we'll probably be daemonized, so writing to stderr will be pointless. Signed-off-by: David Turner <dturner@xxxxxxxxxxxxxxxx> --- Documentation/git-index-helper.txt | 3 +++ index-helper.c | 29 ++++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Documentation/git-index-helper.txt b/Documentation/git-index-helper.txt index a5c058f..4eb3d95 100644 --- a/Documentation/git-index-helper.txt +++ b/Documentation/git-index-helper.txt @@ -51,6 +51,9 @@ command. The following commands are used to control the daemon: All commands and replies are terminated by a 0 byte. +In the event of an error, messages may be written to +$GIT_DIR/index-helper.log. + GIT --- Part of the linkgit:git[1] suite diff --git a/index-helper.c b/index-helper.c index 5cadd0d..7400d68 100644 --- a/index-helper.c +++ b/index-helper.c @@ -19,6 +19,29 @@ static struct shm shm_index; static struct shm shm_base_index; static int to_verify = 1; +static void log_warning(const char *warning, ...) +{ + va_list ap; + FILE *fp; + + fp = fopen(git_path("index-helper.log"), "a"); + if (!fp) + /* + * Probably nobody will see this, but it's the best + * we can do. + */ + die("Failed to open log for warnings"); + + fprintf(fp, "%"PRIuMAX"\t", (uintmax_t)time(NULL)); + + va_start(ap, warning); + vfprintf(fp, warning, ap); + va_end(ap); + + fputc('\n', fp); + fclose(fp); +} + static void release_index_shm(struct shm *is) { if (!is->shm) @@ -132,7 +155,7 @@ static int verify_shm(void) ce = istate.cache[i]; if (ce->ce_namelen != base->ce_namelen || strcmp(ce->name, base->name)) { - warning("mismatch at entry %d", i); + log_warning("mismatch at entry %d", i); break; } ce_flags = ce->ce_flags; @@ -146,7 +169,7 @@ static int verify_shm(void) ce->ce_flags = ce_flags; base->ce_flags = base_flags; if (ret) { - warning("mismatch at entry %d", i); + log_warning("mismatch at entry %d", i); break; } } @@ -263,7 +286,7 @@ static void loop(int fd, int idle_in_seconds) * alive, nothing to do. */ } else { - warning("BUG: Bogus command %s", buf); + log_warning("BUG: Bogus command %s", buf); } } else { /* -- 2.4.2.767.g62658d5-twtrsrc -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html