Skip to content

Commit 8b50514

Browse files
committed
[temp] move Option into Result
1 parent 3275a9a commit 8b50514

File tree

1 file changed

+12
-29
lines changed

1 file changed

+12
-29
lines changed

src/unix.rs

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -89,50 +89,33 @@ impl Client {
8989
}
9090

9191
pub unsafe fn open(s: &str) -> Result<Client, ErrFromEnv> {
92-
match (Self::from_fifo(s), Self::from_pipe(s)) {
93-
(Some(Ok(c)), _) | (_, Some(Ok(c))) => Ok(c),
94-
(Some(Err(e)), _) | (_, Some(Err(e))) => Err(e),
95-
(None, None) => Err(ErrFromEnv::ParseEnvVar),
96-
}
92+
Ok(Self::from_fifo(s)?.unwrap_or(Self::from_pipe(s)?.ok_or(ErrFromEnv::ParseEnvVar)?))
9793
}
9894

9995
/// `--jobserver-auth=fifo:PATH`
100-
fn from_fifo(s: &str) -> Option<Result<Client, ErrFromEnv>> {
96+
fn from_fifo(s: &str) -> Result<Option<Client>, ErrFromEnv> {
10197
let mut parts = s.splitn(2, ':');
10298
if parts.next().unwrap() != "fifo" {
103-
return None;
99+
return Ok(None);
104100
}
105-
let path = match parts.next() {
106-
Some(p) => Path::new(p),
107-
None => return Some(Err(ErrFromEnv::ParseEnvVar)),
108-
};
101+
let path = Path::new(parts.next().ok_or(ErrFromEnv::ParseEnvVar)?);
109102
let file = match OpenOptions::new().read(true).write(true).open(path) {
110103
Ok(f) => f,
111-
Err(e) => return Some(Err(ErrFromEnv::OpenFile(e.to_string()))),
104+
Err(e) => return Err(ErrFromEnv::OpenFile(e.to_string())),
112105
};
113-
Some(Ok(Client::Fifo {
106+
Ok(Some(Client::Fifo {
114107
file,
115108
path: path.into(),
116109
}))
117110
}
118111

119112
/// `--jobserver-auth=R,W`
120-
unsafe fn from_pipe(s: &str) -> Option<Result<Client, ErrFromEnv>> {
113+
unsafe fn from_pipe(s: &str) -> Result<Option<Client>, ErrFromEnv> {
121114
let mut parts = s.splitn(2, ',');
122115
let read = parts.next().unwrap();
123-
let write = match parts.next() {
124-
Some(s) => s,
125-
None => return Some(Err(ErrFromEnv::ParseEnvVar)),
126-
};
127-
128-
let read = match read.parse() {
129-
Ok(n) => n,
130-
Err(_) => return Some(Err(ErrFromEnv::ParseEnvVar)),
131-
};
132-
let write = match write.parse() {
133-
Ok(n) => n,
134-
Err(_) => return Some(Err(ErrFromEnv::ParseEnvVar)),
135-
};
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)?;
136119

137120
// Ok so we've got two integers that look like file descriptors, but
138121
// for extra sanity checking let's see if they actually look like
@@ -145,9 +128,9 @@ impl Client {
145128
if check_fd(read) && check_fd(write) {
146129
drop(set_cloexec(read, true));
147130
drop(set_cloexec(write, true));
148-
Some(Ok(Client::from_fds(read, write)))
131+
Ok(Some(Client::from_fds(read, write)))
149132
} else {
150-
Some(Err(ErrFromEnv::InvalidDescriptor(read, write)))
133+
Err(ErrFromEnv::InvalidDescriptor(read, write))
151134
}
152135
}
153136

0 commit comments

Comments
 (0)