From: Joel Rosdahl Date: Sun, 12 Sep 2010 14:33:16 +0000 (+0200) Subject: Stat file to get size hint in read_file() X-Git-Tag: v3.1~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=634bb8d895cc8e1f11b7866ef5dfdf9f79ba2ee6;p=thirdparty%2Fccache.git Stat file to get size hint in read_file() --- diff --git a/util.c b/util.c index bb3d909d9..1cf919260 100644 --- a/util.c +++ b/util.c @@ -1076,12 +1076,21 @@ bool read_file(const char *path, size_t size_hint, char **data, size_t *size) { int fd, ret; - size_t pos = 0, allocated = (size_hint == 0) ? 16384 : size_hint; + size_t pos = 0, allocated; + + if (size_hint == 0) { + struct stat st; + if (stat(path, &st) == 0) { + size_hint = st.st_size; + } + } + size_hint = (size_hint < 1024) ? 1024 : size_hint; fd = open(path, O_RDONLY); if (fd == -1) { return false; } + allocated = size_hint; *data = x_malloc(allocated); ret = 0; do {