Comments (4)
Maybe I should use libc directly ?
libc::ioctl(libc::STDOUT_FILENO, TIOCGWINSZ, &mut size)
http://doc.rust-lang.org/libc/x86_64-apple-darwin/libc/fn.ioctl.html
from nix.
This works:
#![feature(libc)]
#[macro_use]
extern crate nix;
extern crate libc;
use std::mem;
use libc::c_ushort;
#[derive(Debug)]
#[repr(C)]
struct winsize {
ws_row: c_ushort,
ws_col: c_ushort,
ws_xpixel: c_ushort,
ws_ypixel: c_ushort
}
mod ioctl {
use libc;
#[cfg(any(target_os = "macos", target_os = "freebsd"))]
const TIOCGWINSZ: libc::c_ulong = 0x40087468;
#[cfg(any(target_os = "linux", target_os = "android"))]
const TIOCGWINSZ: libc::c_ulong = 0x5413;
ioctl!(bad read_winsize with TIOCGWINSZ);
}
fn main() {
unsafe {
let mut size: winsize = std::mem::zeroed();
ioctl::read_winsize(0, mem::transmute(&mut size as *mut winsize)).unwrap();
println!("Size: {:?}", size);
}
}
from nix.
Thanks.
from nix.
I think the original implementation did probably find the wrong level of abstraction. Here, it would be nice to use the semantics you get with read
but that is hard coded to do the equivalent of an _IOR
. As discussed in #190, another option might have been to support both the macro and function interface approach.
For now, I certainly don't want to introduce another set of breaking changes.
from nix.
Related Issues (20)
- linkat doesn't support AT_EMPTY_PATH, making it incompatible with O_TMPFILE HOT 2
- Make the tests that failed to acquire locks panic explicitly HOT 4
- SignalFd::read_signal should take &self, not &mut self
- Debug `mount::test_mount::test_mount_bind` on Linux HOT 4
- API request: sync on MacOS
- test_initgroups fails.
- MSRV 1.77.0 TODO HOT 1
- RecvMsg.cmsg() should check MSG_CTRUNC HOT 2
- ForkPty Always returns Parent HOT 1
- ControlMessageOwned::UdpGroSegments size mismatches the actual size HOT 1
- Test `statfs_call()` fails on macOS because `statfs()` and `statvfs()` report different number of i-nodes HOT 4
- Question about why cfg(linux_android) is used in places when #[cfg(target_os = "linux")] seems fine. HOT 1
- ptctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, addr, len, invalid_name) returns EFAULT rather than EINVAL under QEMU HOT 8
- EventFd::defuse doesn't work HOT 6
- Shouldn't set `#[deny(warnings)]` outside of CI HOT 1
- warn that nix::sys::signalfd::siginfo is not siginfo_t HOT 2
- Some Nix wrappers are not signal-safe HOT 2
- Nix 0.30.0 TODO
- Test `test_timer::alarm_fires()` times out
- Skip the Haiku CI as Rust std is broken on it
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nix.