public long skip(long l)
     throws IOException
 {
     long l1 = in.tell();
     long l2 = in.length() - l1;
     if (l2 > l)
     {
         in.seek(l);
         return in.tell() - l1;
     } else
     {
         in.seek(l2);
         return in.tell() - l1;
     }
 }
 public void seek(long l)
     throws IOException
 {
     if (l < 0L)
     {
         throw new IOException((new StringBuilder()).append("Illegal seek: ").append(l).toString());
     } else
     {
         in.seek(l);
         return;
     }
 }
 public static FileReader openReader(SeekableInput seekableinput, DatumReader datumreader)
     throws IOException
 {
     if (seekableinput.length() < (long)DataFileConstants.MAGIC.length)
     {
         throw new IOException("Not an Avro data file");
     }
     byte abyte0[] = new byte[DataFileConstants.MAGIC.length];
     seekableinput.seek(0L);
     for (int i = 0; i < abyte0.length; i = seekableinput.read(abyte0, i, abyte0.length - i)) { }
     seekableinput.seek(0L);
     if (Arrays.equals(DataFileConstants.MAGIC, abyte0))
     {
         return new DataFileReader(seekableinput, datumreader);
     }
     if (Arrays.equals(DataFileReader12.MAGIC, abyte0))
     {
         return new DataFileReader12(seekableinput, datumreader);
     } else
     {
         throw new IOException("Not an Avro data file");
     }
 }