Method: Ephem::Excerpt::DAFWriter#write_file_record

Defined in:
lib/ephem/excerpt.rb

#write_file_recordObject



284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
# File 'lib/ephem/excerpt.rb', line 284

def write_file_record
  @file.seek(0)
  data = @file.read(RECORD_SIZE)

  # Update pointers directly in the data buffer
  fward_pos = 76
  bward_pos = 80
  free_pos = 84

  if @endianness == :little
    data[fward_pos, 4] = [@fward].pack("l")
    data[bward_pos, 4] = [@bward].pack("l")
    data[free_pos, 4] = [@free].pack("l")
  else
    data[fward_pos, 4] = [@fward].pack("N")
    data[bward_pos, 4] = [@bward].pack("N")
    data[free_pos, 4] = [@free].pack("N")
  end

  # Write the updated record back to the file
  @file.seek(0)
  @file.write(data)
end