On Sun, Nov 26, 2017 at 12:46:12PM +0900, Junio C Hamano wrote: > Max Kirillov <max@xxxxxxxxxx> writes: > > +ssize_t git_env_ssize_t(const char *k, ssize_t val) > > +{ > > + const char *v = getenv(k); > > + if (v && !git_parse_ssize_t(v, &val)) > > + die("failed to parse %s", k); > > + return val; > > +} > > + > > If this were passing "v" that is a string the caller obtains from > any source (and the callee does not care about where it came from), > that would be a different story, but as a public interface that is > part of the config.c layer, "k" that has to be the name of the > environment variable sticks out like a sore thumb. > > If we were to add one more public function to the interface, I > suspect that exposing the existing git_parse_ssize_t() and have the > caller implement the above function for its use would be a much > better way to go. I'm afraid I did not get the reasonsing and not fully the desired change. Is this http-backend code change (compared to the last patch) what you mean? --- a/http-backend.c +++ b/http-backend.c @@ -346,9 +346,18 @@ static ssize_t read_request_fixed_len(int fd, ssize_t req_len, unsigned char **o } } +static ssize_t env_content_length() +{ + const char *str = getenv("CONTENT_LENGTH"); + ssize_t val = -1; + if (str && !git_parse_ssize_t(str, &val)) + die("failed to parse CONTENT_LENGTH: %s", str); + return val; +} + static ssize_t read_request(int fd, unsigned char **out) { - ssize_t req_len = git_env_ssize_t("CONTENT_LENGTH", -1); + ssize_t req_len = env_content_length(); if (req_len < 0) return read_request_eof(fd, out); else