chore(ops/posix_mq.rs): Update crate dependencies to recent versions

First bump since 2017! This changes the code to be compatible with
newer versions of the `nix` crate, which has shuffled things around a
bit.
This commit is contained in:
Vincent Ambo 2020-01-20 11:48:35 +00:00
parent 4bc3196c9a
commit 0b146dc079
5 changed files with 18 additions and 26 deletions

View file

@ -1,11 +1,11 @@
[package] [package]
name = "posix_mq" name = "posix_mq"
version = "0.1.3" version = "0.9.0"
authors = ["Vincent Ambo <vincent@aprila.no>"] authors = ["Vincent Ambo <mail@tazj.in>"]
description = "(Higher-level) Rust bindings to POSIX message queues" description = "(Higher-level) Rust bindings to POSIX message queues"
license = "MIT" license = "MIT"
repository = "https://github.com/aprilabank/posix_mq.rs" repository = "https://git.tazj.in/tree/ops/posix_mq.rs"
[dependencies] [dependencies]
nix = "0.9" nix = "0.16"
libc = "0.2" libc = "0.2"

View file

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2017 Vincent Ambo Copyright (c) 2017-2020 Vincent Ambo
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View file

@ -43,7 +43,7 @@ pub enum Error {
// If an unhandled / unknown / unexpected error occurs this error will be used. // If an unhandled / unknown / unexpected error occurs this error will be used.
// In those cases bug reports would be welcome! // In those cases bug reports would be welcome!
UnknownForeignError(nix::Errno), UnknownForeignError(nix::errno::Errno),
// Some other unexpected / unknown error occured. This is probably an error from // Some other unexpected / unknown error occured. This is probably an error from
// the nix crate. Bug reports also welcome for this! // the nix crate. Bug reports also welcome for this!
@ -112,8 +112,8 @@ impl From<num::ParseIntError> for Error {
} }
fn match_errno(err: nix::Errno) -> Error { fn match_errno(err: nix::errno::Errno) -> Error {
use nix::errno::*; use nix::errno::Errno::*;
match err { match err {
EACCES => Error::PermissionDenied(), EACCES => Error::PermissionDenied(),

View file

@ -16,14 +16,6 @@ pub mod error;
#[cfg(test)] #[cfg(test)]
mod tests; mod tests;
/*
TODO:
* what happens if permissions change after FD was opened?
* drop dependency on nix crate?
*/
/// Wrapper type for queue names that performs basic validation of queue names before calling /// Wrapper type for queue names that performs basic validation of queue names before calling
/// out to C code. /// out to C code.
#[derive(Debug, Clone, PartialEq)] #[derive(Debug, Clone, PartialEq)]
@ -97,11 +89,11 @@ impl Queue {
let oflags = { let oflags = {
let mut flags = mqueue::MQ_OFlag::empty(); let mut flags = mqueue::MQ_OFlag::empty();
// Put queue in r/w mode // Put queue in r/w mode
flags.toggle(mqueue::O_RDWR); flags.toggle(mqueue::MQ_OFlag::O_RDWR);
// Enable queue creation // Enable queue creation
flags.toggle(mqueue::O_CREAT); flags.toggle(mqueue::MQ_OFlag::O_CREAT);
// Fail if queue exists already // Fail if queue exists already
flags.toggle(mqueue::O_EXCL); flags.toggle(mqueue::MQ_OFlag::O_EXCL);
flags flags
}; };
@ -128,7 +120,7 @@ impl Queue {
pub fn open(name: Name) -> Result<Queue, Error> { pub fn open(name: Name) -> Result<Queue, Error> {
// No extra flags need to be constructed as the default is to open and fail if the // No extra flags need to be constructed as the default is to open and fail if the
// queue does not exist yet - which is what we want here. // queue does not exist yet - which is what we want here.
let oflags = mqueue::O_RDWR; let oflags = mqueue::MQ_OFlag::O_RDWR;
let queue_descriptor = mqueue::mq_open( let queue_descriptor = mqueue::mq_open(
&name.0, &name.0,
oflags, oflags,
@ -151,9 +143,9 @@ impl Queue {
let oflags = { let oflags = {
let mut flags = mqueue::MQ_OFlag::empty(); let mut flags = mqueue::MQ_OFlag::empty();
// Put queue in r/w mode // Put queue in r/w mode
flags.toggle(mqueue::O_RDWR); flags.toggle(mqueue::MQ_OFlag::O_RDWR);
// Enable queue creation // Enable queue creation
flags.toggle(mqueue::O_CREAT); flags.toggle(mqueue::MQ_OFlag::O_CREAT);
flags flags
}; };
@ -239,8 +231,8 @@ impl Drop for Queue {
// Creates the default queue mode (0600). // Creates the default queue mode (0600).
fn default_mode() -> stat::Mode { fn default_mode() -> stat::Mode {
let mut mode = stat::Mode::empty(); let mut mode = stat::Mode::empty();
mode.toggle(stat::S_IRUSR); mode.toggle(stat::Mode::S_IRUSR);
mode.toggle(stat::S_IWUSR); mode.toggle(stat::Mode::S_IWUSR);
mode mode
} }
@ -271,7 +263,7 @@ fn mq_getattr(mqd: mqd_t) -> Result<libc::mq_attr, Error> {
use std::mem; use std::mem;
let mut attr = unsafe { mem::uninitialized::<libc::mq_attr>() }; let mut attr = unsafe { mem::uninitialized::<libc::mq_attr>() };
let res = unsafe { libc::mq_getattr(mqd, &mut attr) }; let res = unsafe { libc::mq_getattr(mqd, &mut attr) };
nix::Errno::result(res) nix::errno::Errno::result(res)
.map(|_| attr) .map(|_| attr)
.map_err(|e| e.into()) .map_err(|e| e.into())
} }

View file

@ -18,5 +18,5 @@ fn test_open_delete() {
assert_eq!(message, result); assert_eq!(message, result);
queue.delete(); queue.delete().expect("deleting queue failed");
} }