From: Jonas Fonseca Date: Sun, 27 Aug 2006 23:55:46 GMT Subject: [PATCH] Use fstat instead of fseek Message-ID: <20060827235546.GA20904@diku.dk> In-Reply-To: <7v4pvz11o6.fsf@assigned-by-dhcp.cox.net> Signed-off-by: Jonas Fonseca --- dir.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) Junio C Hamano wrote Sat, Aug 26, 2006: > Linus Torvalds writes: > > > I really think you'd be better off rewriting that to use "fstat()" > > instead. I don't know why it uses two lseek's, but it's wrong, and looks > > like some bad habit Junio picked up at some point. > > I think the code was written to avoid getting confused by > unseekable input (pipes) but was done in early morning before > the first shot of caffeine. I take it that you want this change, so here's a little addition to the "use X instead of Y" series. diff --git a/dir.c b/dir.c index d53d48f..5a40d8f 100644 --- a/dir.c +++ b/dir.c @@ -112,17 +112,15 @@ static int add_excludes_from_file_1(cons int baselen, struct exclude_list *which) { + struct stat st; int fd, i; long size; char *buf, *entry; fd = open(fname, O_RDONLY); - if (fd < 0) + if (fd < 0 || fstat(fd, &st) < 0) goto err; - size = lseek(fd, 0, SEEK_END); - if (size < 0) - goto err; - lseek(fd, 0, SEEK_SET); + size = st.st_size; if (size == 0) { close(fd); return 0; -- 1.4.2.g2f76-dirty -- Jonas Fonseca