]>
Commit | Line | Data |
---|---|---|
532ac7d7 XL |
1 | use crate::ffi::OsStr; |
2 | use crate::fmt; | |
3 | use crate::io; | |
4 | use crate::sys::fs::File; | |
5 | use crate::sys::pipe::AnonPipe; | |
6 | use crate::sys::{unsupported, Void}; | |
e1599b0c XL |
7 | use crate::sys_common::process::CommandEnv; |
8 | ||
9 | pub use crate::ffi::OsString as EnvKey; | |
532ac7d7 XL |
10 | |
11 | //////////////////////////////////////////////////////////////////////////////// | |
12 | // Command | |
13 | //////////////////////////////////////////////////////////////////////////////// | |
14 | ||
15 | pub struct Command { | |
60c5eb7d | 16 | env: CommandEnv, |
532ac7d7 XL |
17 | } |
18 | ||
19 | // passed back to std::process with the pipes connected to the child, if any | |
20 | // were requested | |
21 | pub struct StdioPipes { | |
22 | pub stdin: Option<AnonPipe>, | |
23 | pub stdout: Option<AnonPipe>, | |
24 | pub stderr: Option<AnonPipe>, | |
25 | } | |
26 | ||
27 | pub enum Stdio { | |
28 | Inherit, | |
29 | Null, | |
30 | MakePipe, | |
31 | } | |
32 | ||
33 | impl Command { | |
34 | pub fn new(_program: &OsStr) -> Command { | |
60c5eb7d | 35 | Command { env: Default::default() } |
532ac7d7 XL |
36 | } |
37 | ||
60c5eb7d | 38 | pub fn arg(&mut self, _arg: &OsStr) {} |
532ac7d7 | 39 | |
e1599b0c | 40 | pub fn env_mut(&mut self) -> &mut CommandEnv { |
532ac7d7 XL |
41 | &mut self.env |
42 | } | |
43 | ||
60c5eb7d | 44 | pub fn cwd(&mut self, _dir: &OsStr) {} |
532ac7d7 | 45 | |
60c5eb7d | 46 | pub fn stdin(&mut self, _stdin: Stdio) {} |
532ac7d7 | 47 | |
60c5eb7d | 48 | pub fn stdout(&mut self, _stdout: Stdio) {} |
532ac7d7 | 49 | |
60c5eb7d | 50 | pub fn stderr(&mut self, _stderr: Stdio) {} |
532ac7d7 | 51 | |
60c5eb7d XL |
52 | pub fn spawn( |
53 | &mut self, | |
54 | _default: Stdio, | |
55 | _needs_stdin: bool, | |
56 | ) -> io::Result<(Process, StdioPipes)> { | |
532ac7d7 XL |
57 | unsupported() |
58 | } | |
59 | } | |
60 | ||
61 | impl From<AnonPipe> for Stdio { | |
62 | fn from(pipe: AnonPipe) -> Stdio { | |
63 | pipe.diverge() | |
64 | } | |
65 | } | |
66 | ||
67 | impl From<File> for Stdio { | |
68 | fn from(_file: File) -> Stdio { | |
69 | panic!("unsupported") | |
70 | } | |
71 | } | |
72 | ||
73 | impl fmt::Debug for Command { | |
74 | fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result { | |
75 | Ok(()) | |
76 | } | |
77 | } | |
78 | ||
79 | pub struct ExitStatus(Void); | |
80 | ||
81 | impl ExitStatus { | |
82 | pub fn success(&self) -> bool { | |
83 | match self.0 {} | |
84 | } | |
85 | ||
86 | pub fn code(&self) -> Option<i32> { | |
87 | match self.0 {} | |
88 | } | |
89 | } | |
90 | ||
91 | impl Clone for ExitStatus { | |
92 | fn clone(&self) -> ExitStatus { | |
93 | match self.0 {} | |
94 | } | |
95 | } | |
96 | ||
97 | impl Copy for ExitStatus {} | |
98 | ||
99 | impl PartialEq for ExitStatus { | |
100 | fn eq(&self, _other: &ExitStatus) -> bool { | |
101 | match self.0 {} | |
102 | } | |
103 | } | |
104 | ||
60c5eb7d | 105 | impl Eq for ExitStatus {} |
532ac7d7 XL |
106 | |
107 | impl fmt::Debug for ExitStatus { | |
108 | fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result { | |
109 | match self.0 {} | |
110 | } | |
111 | } | |
112 | ||
113 | impl fmt::Display for ExitStatus { | |
114 | fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result { | |
115 | match self.0 {} | |
116 | } | |
117 | } | |
118 | ||
119 | #[derive(PartialEq, Eq, Clone, Copy, Debug)] | |
120 | pub struct ExitCode(bool); | |
121 | ||
122 | impl ExitCode { | |
123 | pub const SUCCESS: ExitCode = ExitCode(false); | |
124 | pub const FAILURE: ExitCode = ExitCode(true); | |
125 | ||
126 | pub fn as_i32(&self) -> i32 { | |
127 | self.0 as i32 | |
128 | } | |
129 | } | |
130 | ||
131 | pub struct Process(Void); | |
132 | ||
133 | impl Process { | |
134 | pub fn id(&self) -> u32 { | |
135 | match self.0 {} | |
136 | } | |
137 | ||
138 | pub fn kill(&mut self) -> io::Result<()> { | |
139 | match self.0 {} | |
140 | } | |
141 | ||
142 | pub fn wait(&mut self) -> io::Result<ExitStatus> { | |
143 | match self.0 {} | |
144 | } | |
145 | ||
146 | pub fn try_wait(&mut self) -> io::Result<Option<ExitStatus>> { | |
147 | match self.0 {} | |
148 | } | |
149 | } |