summaryrefslogtreecommitdiff
path: root/fileio.c
diff options
context:
space:
mode:
Diffstat (limited to 'fileio.c')
-rw-r--r--fileio.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fileio.c b/fileio.c
index 3ed28036..92631bc7 100644
--- a/fileio.c
+++ b/fileio.c
@@ -1,5 +1,6 @@
/*
Copyright (C) Andrew Tridgell 1998
+ Copyright (C) 2002 by Martin Pool
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -38,7 +39,7 @@ int sparse_end(int f)
static int write_sparse(int f,char *buf,size_t len)
{
- int l1=0,l2=0;
+ size_t l1=0, l2=0;
int ret;
for (l1=0;l1<len && buf[l1]==0;l1++) ;
@@ -56,10 +57,11 @@ static int write_sparse(int f,char *buf,size_t len)
if (l1 == len)
return len;
- if ((ret=write(f,buf+l1,len-(l1+l2))) != len-(l1+l2)) {
- if (ret == -1 || ret == 0) return ret;
+ ret = write(f, buf + l1, len - (l1+l2));
+ if (ret == -1 || ret == 0)
+ return ret;
+ else if (ret != (int) (len - (l1+l2)))
return (l1+ret);
- }
if (l2 > 0)
do_lseek(f,l2,SEEK_CUR);