X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Ffilewriter.py;h=274ef5c12dadc8b6ab6a921c9680770f1628b48c;hb=1c2f5f4048b36efb345a3aa96b20d60dc7af1990;hp=a3c16ea828c9f7b10b6881fec336fa9b294542a1;hpb=b36379705f3f2a52788ad19cf1da339c4edf339d;p=dak.git diff --git a/daklib/filewriter.py b/daklib/filewriter.py index a3c16ea8..274ef5c1 100755 --- a/daklib/filewriter.py +++ b/daklib/filewriter.py @@ -54,13 +54,18 @@ class BaseFileWriter(object): ''' Returns a file object for writing. ''' + # create missing directories + try: + os.makedirs(os.path.dirname(self.path)) + except: + pass self.file = open(self.path + '.new', 'w') return self.file # internal helper function def rename(self, filename): tempfilename = filename + '.new' - os.chmod(tempfilename, 0664) + os.chmod(tempfilename, 0o664) os.rename(tempfilename, filename) def close(self): @@ -69,11 +74,11 @@ class BaseFileWriter(object): ''' self.file.close() if self.gzip: - check_call('gzip --rsyncable <%s.new >%s.gz.new' % (self.path, self.path), + check_call('gzip -9cn --rsyncable <%s.new >%s.gz.new' % (self.path, self.path), shell = True) self.rename('%s.gz' % self.path) if self.bzip2: - check_call('bzip2 <%s.new >%s.bz2.new' % (self.path, self.path), shell = True) + check_call('bzip2 -9 <%s.new >%s.bz2.new' % (self.path, self.path), shell = True) self.rename('%s.bz2' % self.path) if self.uncompressed: self.rename(self.path)