1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-27 11:07:44 +00:00

expr, sync, whoami: update Oniguruma and winapi

This commit is contained in:
Alex Lyon 2018-03-04 18:07:38 -08:00
parent 5d241da7ca
commit 2d798bd601
6 changed files with 23 additions and 16 deletions

View file

@ -10,7 +10,7 @@ path = "expr.rs"
[dependencies] [dependencies]
libc = "0.2.26" libc = "0.2.26"
onig = "1.3.0" onig = "3.1.1"
uucore = { path="../uucore" } uucore = { path="../uucore" }
[[bin]] [[bin]]

View file

@ -13,7 +13,7 @@
//! //!
use tokens::{Token}; use tokens::{Token};
use onig::{Regex, Syntax, REGEX_OPTION_NONE}; use onig::{Regex, RegexOptions, Syntax};
type TokenStack = Vec<(usize, Token)>; type TokenStack = Vec<(usize, Token)>;
pub type OperandsList = Vec< Box<ASTNode> >; pub type OperandsList = Vec< Box<ASTNode> >;
@ -354,7 +354,7 @@ fn infix_operator_and( values: &Vec<String> ) -> Result<String, String> {
fn operator_match(values: &Vec<String>) -> Result<String, String> { fn operator_match(values: &Vec<String>) -> Result<String, String> {
assert!(values.len() == 2); assert!(values.len() == 2);
let re = match Regex::with_options(&values[1], REGEX_OPTION_NONE, Syntax::grep()) { let re = match Regex::with_options(&values[1], RegexOptions::REGEX_OPTION_NONE, Syntax::grep()) {
Ok(m) => m, Ok(m) => m,
Err(err) => return Err(err.description().to_string()) Err(err) => return Err(err.description().to_string())
}; };

View file

@ -11,7 +11,7 @@ path = "sync.rs"
[dependencies] [dependencies]
getopts = "0.2.14" getopts = "0.2.14"
libc = "0.2.26" libc = "0.2.26"
winapi = "0.2.8" winapi = { version = "0.3", features = ["handleapi", "winerror"] }
kernel32-sys = "0.2.2" kernel32-sys = "0.2.2"
uucore = { path="../uucore" } uucore = { path="../uucore" }

View file

@ -44,13 +44,17 @@ mod platform {
extern crate kernel32; extern crate kernel32;
use std::{mem}; use std::{mem};
use std::fs::OpenOptions; use std::fs::OpenOptions;
use std::io::{Write};
use std::os::windows::prelude::*; use std::os::windows::prelude::*;
use uucore::wide::{FromWide, ToWide}; use uucore::wide::{FromWide, ToWide};
use self::winapi::um::winbase;
use self::winapi::um::winnt;
use self::winapi::shared::minwindef;
use self::winapi::um::handleapi;
use self::winapi::shared::winerror;
unsafe fn flush_volume(name: &str) { unsafe fn flush_volume(name: &str) {
let name_wide = name.to_wide_null(); let name_wide = name.to_wide_null();
if kernel32::GetDriveTypeW(name_wide.as_ptr()) == winapi::DRIVE_FIXED { if kernel32::GetDriveTypeW(name_wide.as_ptr()) == winbase::DRIVE_FIXED {
let sliced_name = &name[..name.len() - 1]; // eliminate trailing backslash let sliced_name = &name[..name.len() - 1]; // eliminate trailing backslash
match OpenOptions::new().write(true).open(sliced_name) { match OpenOptions::new().write(true).open(sliced_name) {
Ok(file) => if kernel32::FlushFileBuffers(file.as_raw_handle()) == 0 { Ok(file) => if kernel32::FlushFileBuffers(file.as_raw_handle()) == 0 {
@ -61,10 +65,10 @@ mod platform {
} }
} }
unsafe fn find_first_volume() -> (String, winapi::HANDLE) { unsafe fn find_first_volume() -> (String, winnt::HANDLE) {
let mut name: [winapi::WCHAR; winapi::MAX_PATH] = mem::uninitialized(); let mut name: [winnt::WCHAR; minwindef::MAX_PATH] = mem::uninitialized();
let handle = kernel32::FindFirstVolumeW(name.as_mut_ptr(), name.len() as winapi::DWORD); let handle = kernel32::FindFirstVolumeW(name.as_mut_ptr(), name.len() as minwindef::DWORD);
if handle == winapi::INVALID_HANDLE_VALUE { if handle == handleapi::INVALID_HANDLE_VALUE {
crash!(kernel32::GetLastError() as i32, "failed to find first volume"); crash!(kernel32::GetLastError() as i32, "failed to find first volume");
} }
(String::from_wide_null(&name), handle) (String::from_wide_null(&name), handle)
@ -74,12 +78,12 @@ mod platform {
let (first_volume, next_volume_handle) = find_first_volume(); let (first_volume, next_volume_handle) = find_first_volume();
let mut volumes = vec![first_volume]; let mut volumes = vec![first_volume];
loop { loop {
let mut name: [winapi::WCHAR; winapi::MAX_PATH] = mem::uninitialized(); let mut name: [winnt::WCHAR; minwindef::MAX_PATH] = mem::uninitialized();
if kernel32::FindNextVolumeW( if kernel32::FindNextVolumeW(
next_volume_handle, name.as_mut_ptr(), name.len() as winapi::DWORD next_volume_handle, name.as_mut_ptr(), name.len() as minwindef::DWORD
) == 0 { ) == 0 {
match kernel32::GetLastError() { match kernel32::GetLastError() {
winapi::ERROR_NO_MORE_FILES => { winerror::ERROR_NO_MORE_FILES => {
kernel32::FindVolumeClose(next_volume_handle); kernel32::FindVolumeClose(next_volume_handle);
return volumes return volumes
}, },

View file

@ -10,7 +10,7 @@ path = "whoami.rs"
[dependencies] [dependencies]
getopts = "0.2.14" getopts = "0.2.14"
winapi = "0.2.8" winapi = { version = "0.3", features = ["lmcons"] }
advapi32-sys = "0.2.0" advapi32-sys = "0.2.0"
[dependencies.uucore] [dependencies.uucore]

View file

@ -14,10 +14,13 @@ extern crate uucore;
use std::io::{Error, Result}; use std::io::{Error, Result};
use std::mem; use std::mem;
use uucore::wide::FromWide; use uucore::wide::FromWide;
use self::winapi::um::winnt;
use self::winapi::shared::lmcons;
use self::winapi::shared::minwindef;
pub unsafe fn getusername() -> Result<String> { pub unsafe fn getusername() -> Result<String> {
let mut buffer: [winapi::WCHAR; winapi::UNLEN as usize + 1] = mem::uninitialized(); let mut buffer: [winnt::WCHAR; lmcons::UNLEN as usize + 1] = mem::uninitialized();
let mut len = buffer.len() as winapi::DWORD; let mut len = buffer.len() as minwindef::DWORD;
if advapi32::GetUserNameW(buffer.as_mut_ptr(), &mut len) == 0 { if advapi32::GetUserNameW(buffer.as_mut_ptr(), &mut len) == 0 {
return Err(Error::last_os_error()) return Err(Error::last_os_error())
} }