#!/usr/bin/ruby

class File
  def self.isBinary(name)
    myStat = stat(name)
    return false unless myStat.file?
    open(name) { |file|
      blk = file.read(myStat.blksize)
      return blk.size == 0 ||
          blk.count("^ -~", "^\r\n") / blk.size > 0.3 ||
          blk.count("\x00") > 0
    }
  end
end

if ARGV.size != 1
    print "Please pass file name to check as argument\n"
    exit 2
end

filename = ARGV[0]

if ! File.exist?(filename)
    print "File #{filename} doesn't exist\n"
    exit 2
end

if File.isBinary(filename)
    print "#{filename} is binary file\n"
    exit 0
else
    print "#{filename} is not binary file\n"
    exit 1
end
