ioctl.cr

libc's ioctl for Crystal.

Features

Installation

  1. Add the dependency to your shard.yml:

    dependencies:
      ioctl:
        github: postmodern/ioctl.cr
  2. Run shards install

Usage

require "ioctl"

output = MyStruct.new

begin
  IOCTL.ioctl(fd, IOCTL::..., pointerof(output))
request error : IOCTL::Error
  # ...
end

Returning -1 instead of raising an exception:

if LibC.ioctl(fd, IOCTL::..., pointerof(output)) == -1
  # ...
end

Examples

Get the terminal window size:

winsize = LibC::Winsize.new

begin
  IOCTL.ioctl(STDOUT.fd, IOCTL::TIOCGWINSZ, pointerof(winsize))
rescue error : IOCTL::Error
  STDERR.puts error.message
  exit -1
end

puts "Rows: #{winsize.ws_row}"
puts "Cols: #{winsize.ws_col}"

TODO

Contributing

  1. Fork it (https://github.com/postmodern/ioctl/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors