fixed issue where file::set_size would update the file modification date even when the size was not changed (fixes #105)

This commit is contained in:
Arvid Norberg 2007-08-11 15:22:06 +00:00
parent e802a74ecb
commit a4ad8a6442
1 changed files with 11 additions and 5 deletions

View File

@ -248,11 +248,17 @@ namespace libtorrent
void set_size(size_type s) void set_size(size_type s)
{ {
size_type pos = tell(); size_type pos = tell();
seek(s - 1); // Only set size if current file size not equals s.
char dummy = 0; // 2 as "m" argument is to be sure seek() sets SEEK_END on
read(&dummy, 1); // all compilers.
seek(s - 1); if(s != seek(0, 2))
write(&dummy, 1); {
seek(s - 1);
char dummy = 0;
read(&dummy, 1);
seek(s - 1);
write(&dummy, 1);
}
seek(pos); seek(pos);
} }