From: Junio C Hamano Date: Sat, 5 Nov 2005 19:07:22 +0000 (-0800) Subject: init-db::copy_file() - use copy_fd() X-Git-Tag: v0.99.9d^2~1 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=32276c8059908874afb7a2db039ccc7bcfd84ec7;p=git.git init-db::copy_file() - use copy_fd() Signed-off-by: Junio C Hamano --- diff --git a/init-db.c b/init-db.c index ca6fa4d42..bd88291b0 100644 --- a/init-db.c +++ b/init-db.c @@ -21,7 +21,7 @@ static void safe_create_dir(const char *dir) static int copy_file(const char *dst, const char *src, int mode) { - int fdi, fdo; + int fdi, fdo, status; mode = (mode & 0111) ? 0777 : 0666; if ((fdi = open(src, O_RDONLY)) < 0) @@ -30,30 +30,9 @@ static int copy_file(const char *dst, const char *src, int mode) close(fdi); return fdo; } - while (1) { - char buf[BUFSIZ]; - ssize_t leni, leno, ofs; - leni = read(fdi, buf, sizeof(buf)); - if (leni < 0) { - error_return: - close(fdo); - close(fdi); - return -1; - } - if (!leni) - break; - ofs = 0; - do { - leno = write(fdo, buf+ofs, leni); - if (leno < 0) - goto error_return; - leni -= leno; - ofs += leno; - } while (0 < leni); - } + status = copy_fd(fdi, fdo); close(fdo); - close(fdi); - return 0; + return status; } static void copy_templates_1(char *path, int baselen,