On Mon, 29 Jan 2007, Marc Dyksterhouse wrote:
Dean,
I looked into what was happening with fsync under cygwin. Turns out fsync
returns EACCES for any file so I added that to the except clause to prevent
the exception from being re-raised. After fixing that, a few more exceptions
where happening because the 'data' array is not filled in under cygwin (not
sure why). I put some checks around some of the places that data['xxx'] is
accessed to prevent the exceptions.
The result is a new rpath.py patch (link below) that seems to work and should
be cross platform.
I'm also submitting a second fs_abilities.py patch. This one addresses your
concern about which chars are quoted. The problem with the original regex is
that it didn't quote * or ". My new regex only quotes the chars that are not
valid in FAT-32 plus the semicolon since that's the escape char. New regex:
'\000-\037\"*/:<>?\\\\|;'
Complete list:
http://www.visiwave.com/download/rdiff_backup/rpath.py.patch
i'd prefer a specific try/except around the os.fsync to catch the EACCESS
-- otherwise you'll be skipping the os.close... so i'm guessing you have
an fd leak in this patch.
http://www.visiwave.com/download/rdiff_backup/Security.py.patch
http://www.visiwave.com/download/rdiff_backup/fs_abilities.py.patch
http://www.visiwave.com/download/rdiff_backup/fs_abilities.py.2.patch
hmm... do you need to escape \200-\377 as well... ?
also ... any chance i could convince you to rebase all of these against
the CVS HEAD, since i've already commited most of it?
http://savannah.nongnu.org/cvs/?group=rdiff-backup
thanks a bunch
-dean