Changes by: antona
Update of /cvsroot/linux-ntfs/ntfsprogs/ntfsprogs
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8843
Modified Files:
mkntfs.c
Log Message:
Minor cleanup
Index: mkntfs.c
===================================================================
RCS file: /cvsroot/linux-ntfs/ntfsprogs/ntfsprogs/mkntfs.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -p -r1.56 -r1.57
--- mkntfs.c 3 Jun 2005 22:22:12 -0000 1.56
+++ mkntfs.c 6 Jun 2005 14:29:47 -0000 1.57
@@ -1,7 +1,7 @@
/**
* mkntfs - Part of the Linux-NTFS project.
*
- * Copyright (c) 2000-2004 Anton Altaparmakov
+ * Copyright (c) 2000-2005 Anton Altaparmakov
* Copyright (c) 2001-2003 Richard Russon
*
* This utility will create an NTFS 1.2 (Windows NT 4.0) volume on a user
@@ -540,16 +540,21 @@ static s64 ntfs_rlwrite(struct ntfs_devi
// TODO: Check that *val is really zero at pos and len.
continue;
}
+ /*
+ * Break up the write into the real data write and then a write
+ * of zeroes between the end of the real data and the end of
+ * the (last) run.
+ */
+ if (total + length > val_len) {
+ delta = length;
+ length = val_len - total;
+ delta -= length;
+ }
if (dev->d_ops->seek(dev, rl[i].lcn * vol->cluster_size,
SEEK_SET) == (off_t)-1)
return -1LL;
retry = 0;
do {
- if (total + length > val_len) {
- delta = length;
- length = val_len - total;
- delta -= length;
- }
bytes_written = dev->d_ops->write(dev, val + total,
length);
if (bytes_written == -1LL) {
@@ -575,12 +580,15 @@ static s64 ntfs_rlwrite(struct ntfs_devi
}
}
if (delta) {
+ int eo;
char *b = (char*)calloc(1, delta);
if (!b)
err_exit("Error allocating internal buffer: "
"%s\n", strerror(errno));
bytes_written = mkntfs_write(dev, b, delta);
+ eo = errno;
free(b);
+ errno = eo;
if (bytes_written == -1LL)
return bytes_written;
}
|