Skip to content

Commit 621665f

Browse files
committed
[temp] switch to io::Error
1 parent 6e047a5 commit 621665f

File tree

4 files changed

+28
-39
lines changed

4 files changed

+28
-39
lines changed

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ pub enum ErrFromEnv {
159159
/// Cannot connect following this process's environment.
160160
PlatformSpecific {
161161
/// Error.
162-
err: imp::ErrFromEnv,
162+
err: io::Error,
163163
/// Name of gotten env var.
164164
env: &'static str,
165165
/// Value of gotten env var.

src/unix.rs

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,6 @@ pub struct Acquired {
2525
byte: u8,
2626
}
2727

28-
#[derive(Debug)]
29-
pub enum ErrFromEnv {
30-
ParseEnvVar,
31-
OpenFile(String),
32-
InvalidDescriptor(i32, i32),
33-
}
34-
3528
impl Client {
3629
pub fn new(mut limit: usize) -> io::Result<Client> {
3730
let client = unsafe { Client::mk()? };
@@ -88,34 +81,41 @@ impl Client {
8881
Ok(Client::from_fds(pipes[0], pipes[1]))
8982
}
9083

91-
pub unsafe fn open(s: &str) -> Result<Client, ErrFromEnv> {
84+
pub unsafe fn open(s: &str) -> io::Result<Client> {
9285
Ok(Self::from_fifo(s)?.unwrap_or(Self::from_pipe(s)?))
9386
}
9487

9588
/// `--jobserver-auth=fifo:PATH`
96-
fn from_fifo(s: &str) -> Result<Option<Client>, ErrFromEnv> {
89+
fn from_fifo(s: &str) -> io::Result<Option<Client>> {
9790
let mut parts = s.splitn(2, ':');
9891
if parts.next().unwrap() != "fifo" {
9992
return Ok(None);
10093
}
101-
let path = Path::new(parts.next().ok_or(ErrFromEnv::ParseEnvVar)?);
102-
let file = match OpenOptions::new().read(true).write(true).open(path) {
103-
Ok(f) => f,
104-
Err(e) => return Err(ErrFromEnv::OpenFile(e.to_string())),
105-
};
94+
let path = Path::new(parts.next().ok_or(io::Error::new(
95+
io::ErrorKind::InvalidInput,
96+
"expected ':' after `fifo`",
97+
))?);
98+
let file = OpenOptions::new().read(true).write(true).open(path)?;
10699
Ok(Some(Client::Fifo {
107100
file,
108101
path: path.into(),
109102
}))
110103
}
111104

112105
/// `--jobserver-auth=R,W`
113-
unsafe fn from_pipe(s: &str) -> Result<Client, ErrFromEnv> {
106+
unsafe fn from_pipe(s: &str) -> io::Result<Client> {
114107
let mut parts = s.splitn(2, ',');
115108
let read = parts.next().unwrap();
116-
let write = parts.next().ok_or(ErrFromEnv::ParseEnvVar)?;
117-
let read = read.parse().map_err(|_| ErrFromEnv::ParseEnvVar)?;
118-
let write = write.parse().map_err(|_| ErrFromEnv::ParseEnvVar)?;
109+
let write = parts.next().ok_or(io::Error::new(
110+
io::ErrorKind::InvalidInput,
111+
"expected ',' in `auth=R,W`",
112+
))?;
113+
let read = read
114+
.parse()
115+
.map_err(|e| io::Error::new(io::ErrorKind::Other, e))?;
116+
let write = write
117+
.parse()
118+
.map_err(|e| io::Error::new(io::ErrorKind::Other, e))?;
119119

120120
// Ok so we've got two integers that look like file descriptors, but
121121
// for extra sanity checking let's see if they actually look like
@@ -130,7 +130,10 @@ impl Client {
130130
drop(set_cloexec(write, true));
131131
Ok(Client::from_fds(read, write))
132132
} else {
133-
Err(ErrFromEnv::InvalidDescriptor(read, write))
133+
Err(io::Error::new(
134+
io::ErrorKind::InvalidData,
135+
"invalid file descriptors",
136+
))
134137
}
135138
}
136139

src/wasm.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,6 @@ struct Inner {
1717
#[derive(Debug)]
1818
pub struct Acquired(());
1919

20-
#[derive(Debug)]
21-
pub enum ErrFromEnv {
22-
UnavailableOnTarget,
23-
}
24-
2520
impl Client {
2621
pub fn new(limit: usize) -> io::Result<Client> {
2722
Ok(Client {
@@ -32,8 +27,8 @@ impl Client {
3227
})
3328
}
3429

35-
pub unsafe fn open(_s: &str) -> Result<Client, ErrFromEnv> {
36-
Err(ErrFromEnv::UnavailableOnTarget)
30+
pub unsafe fn open(_s: &str) -> io::Result<Client> {
31+
Err(io::ErrorKind::Unsupported.into())
3732
}
3833

3934
pub fn acquire(&self) -> io::Result<Acquired> {

src/windows.rs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,6 @@ pub struct Client {
1414
#[derive(Debug)]
1515
pub struct Acquired;
1616

17-
#[derive(Debug)]
18-
pub enum ErrFromEnv {
19-
IsNotCString,
20-
CannotAcquireSemaphore,
21-
}
22-
2317
type BOOL = i32;
2418
type DWORD = u32;
2519
type HANDLE = *mut u8;
@@ -133,15 +127,12 @@ impl Client {
133127
))
134128
}
135129

136-
pub unsafe fn open(s: &str) -> Result<Client, ErrFromEnv> {
137-
let name = match CString::new(s) {
138-
Ok(s) => s,
139-
Err(_) => return Err(ErrFromEnv::IsNotCString),
140-
};
130+
pub unsafe fn open(s: &str) -> io::Result<Client> {
131+
let name = CString::new(s).map_err(|e| io::Error::new(io::ErrorKind::Other, e))?;
141132

142133
let sem = OpenSemaphoreA(SYNCHRONIZE | SEMAPHORE_MODIFY_STATE, FALSE, name.as_ptr());
143134
if sem.is_null() {
144-
Err(ErrFromEnv::CannotAcquireSemaphore)
135+
Err(io::Error::last_os_error())
145136
} else {
146137
Ok(Client {
147138
sem: Handle(sem),

0 commit comments

Comments
 (0)