function writeAdTrailer, filename, trailer, date realfilename = filename was_compressed = trailer.was_compressed trailer.was_compressed = 0 testgz = strsplit(realfilename, '.', /extract) testgz = testgz[n_elements(testgz)-1] if was_compressed ne 0 then begin if testgz ne 'gz' then realfilename = filename + '.gz' testgz = 'gz' endif if testgz eq 'gz' then begin was_compressed = 1 if (!version.os_family ne 'unix') then begin was_compressed = 0 testgz = strsplit(realfilename, '.') realfilename = string((byte(realfilename))[0:testgz[n_elements(testgz)-1]-2]) endif endif info = file_info(realfilename) if (info.exists eq 0) or (info.write eq 0) then return, -1 if was_compressed ne 0 then begin openr, unit, realfilename, /get_lun, /compress, /swap_if_big_endian spawn, 'gzip -l ' + realfilename, output output = strsplit(output[1], ' ', /extract) size = ulong64(output[1]) data = fltarr((size-256)/4, /nozero) readu, unit, data free_lun, unit if n_elements(date) ne 0 then begin testgz = strsplit(realfilename, '.', /extract) filename = testgz[0] for i=1, n_elements(testgz)-2 do begin filename = filename + '.' + testgz[i] endfor ; print, 'Filename is ' + filename openw, unit, filename, /get_lun, /compress, /swap_if_big_endian writeu, unit, data endif else begin openw, unit, filename, /get_lun, /compress, /swap_if_big_endian writeu, unit, data endelse data = 0 endif else begin openu, unit, realfilename, /get_lun, /swap_if_big_endian if (n_elements(unit) eq 0) then begin print, 'Unable to open ' + realfilename + ' for writing' return, -1 endif point_lun, unit, info.size-256 endelse writeu, unit, trailer if was_compressed then wait, 0.1 ; On attend que gzip termine, sinon ca nous cause des problemes si on relit immediatement free_lun, unit if was_compressed and (n_elements(date) ne 0) then begin spawn, 'touch --date="' + date + '" ' + filename spawn, 'gzip -f ' + filename endif if n_elements(date) ne 0 then begin spawn, 'touch --date="' + date + '" ' + realfilename endif return, 0 end