a more 'modern' version of cgit
Log | Files | Refs | Submodules | README | LICENSE | git clone

commit d96d2c98ebc4c2d3765f5b35c4142e0e828a421b
parent 8185169e5e2a8b9438c7a6f3f9c5eb6db5a37fea
Author: Lukas Fleischer <>
Date:   Wed, 14 Sep 2011 11:52:43 +0200

shared.c: Only setenv() if value is non-null

Some setenv() implementations (e.g. the one in OpenBSD's stdlib)
segfault if we pass a NULL value. Only set environment variables if the
corresponding settings are defined to avoid this.

Note that this is a minor behaviour change as environment variables were
supposed to be set to an empty string if a setting was undefined. Given
that this feature isn't part of any official release yet, there's no
need to worry about backwards compatibility, really. Change the
documentation accordingly.

Signed-off-by: Lukas Fleischer <>

Mcgitrc.5.txt | 2+-
Mshared.c | 2+-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/cgitrc.5.txt b/cgitrc.5.txt @@ -500,7 +500,7 @@ Also, all filters are handed the following environment variables: If a setting is not defined for a repository and the corresponding global setting is also not defined (if applicable), then the corresponding -environment variable will be an empty string. +environment variable will be unset. MACRO EXPANSION diff --git a/shared.c b/shared.c @@ -392,7 +392,7 @@ void cgit_prepare_repo_env(struct cgit_repo * repo) p = env_vars; q = p + env_var_count; for (; p < q; p++) - if (setenv(p->name, p->value, 1)) + if (p->value && setenv(p->name, p->value, 1)) fprintf(stderr, warn, p->name, p->value); }