config: handle lack of newline at end of file better
authorJeff King <peff@peff.net>
Tue, 1 Jan 2008 06:17:34 +0000 (01:17 -0500)
committerJunio C Hamano <gitster@pobox.com>
Wed, 2 Jan 2008 10:28:54 +0000 (02:28 -0800)
commit02e5ba4ae63729c28704280f1b8cfcb205c06960
tree055b016d114ec54881ed783e1465ff6d56503916
parentc477553b2f4f621216b25800e121af52e0750087
config: handle lack of newline at end of file better

The config parsing routines use the static global
'config_file' to store the FILE* pointing to the current
config file being parsed. The function get_next_char()
automatically converts an EOF on this file to a newline for
the convenience of its callers, and it sets config_file to
NULL to indicate that EOF was reached.

This throws away useful information, though, since some
routines want to call ftell on 'config_file' to find out
exactly _where_ the routine ended. In the case of a key
ending at EOF boundary, we ended up segfaulting in some
cases (changing that key or adding another key in its
section), or failing to provide the necessary newline
(adding a new section).

This patch adds a new flag to indicate EOF and uses that
instead of setting config_file to NULL. It also makes sure
to add newlines where necessary for truncated input. All
three included tests fail without the patch.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
config.c
t/t1303-wacky-config.sh [new file with mode: 0755]