1
1
use std:: collections:: HashMap ;
2
2
use std:: fs:: { File , OpenOptions } ;
3
3
use std:: io:: { Read , Write } ;
4
- use std:: os:: unix:: prelude:: { RawFd , ExitStatusExt } ;
4
+ use std:: os:: unix:: prelude:: { ExitStatusExt , RawFd } ;
5
5
use std:: path:: { Path , PathBuf } ;
6
6
use std:: process:: { Child , ExitStatus , Output , Stdio } ;
7
7
use std:: str:: Utf8Error ;
@@ -224,15 +224,23 @@ impl WaitableProcess {
224
224
let pid = Pid :: from_raw ( process. id ( ) as i32 ) ;
225
225
kill ( pid, Signal :: SIGHUP ) . unwrap ( ) ;
226
226
FinishedProcess {
227
- status : ProcessExit :: NixStatus ( WaitStatus :: Signaled ( pid, Signal :: SIGHUP , false ) ) ,
227
+ status : ProcessExit :: NixStatus ( WaitStatus :: Signaled (
228
+ pid,
229
+ Signal :: SIGHUP ,
230
+ false ,
231
+ ) ) ,
228
232
stdout : vec ! [ ] ,
229
233
stderr : vec ! [ ] ,
230
234
}
231
235
}
232
236
OngoingProcess :: Reentrant { pid, .. } => {
233
237
kill ( pid, Signal :: SIGHUP ) . unwrap ( ) ;
234
238
FinishedProcess {
235
- status : ProcessExit :: NixStatus ( WaitStatus :: Signaled ( pid, Signal :: SIGHUP , false ) ) ,
239
+ status : ProcessExit :: NixStatus ( WaitStatus :: Signaled (
240
+ pid,
241
+ Signal :: SIGHUP ,
242
+ false ,
243
+ ) ) ,
236
244
stdout : vec ! [ ] ,
237
245
stderr : vec ! [ ] ,
238
246
}
@@ -891,19 +899,24 @@ impl ShellContext {
891
899
}
892
900
}
893
901
Redirect :: Heredoc ( fd, word) => {
894
- let mut file = tempfile:: tempfile ( ) . map_err ( |e| CommandExecError :: BadRedirect { err : e } ) ?; //TODO: Handle errors
902
+ let mut file = tempfile:: tempfile ( )
903
+ . map_err ( |e| CommandExecError :: BadRedirect { err : e } ) ?; //TODO: Handle errors
895
904
for word in word {
896
- file. write_all ( word. as_bytes ( ) ) . map_err ( |e| CommandExecError :: BadRedirect { err : e } ) ?; //TODO: Handle errors
905
+ file. write_all ( word. as_bytes ( ) )
906
+ . map_err ( |e| CommandExecError :: BadRedirect { err : e } ) ?;
907
+ //TODO: Handle errors
897
908
}
898
909
match fd {
899
910
None | Some ( 0 ) => stdin = StdioRepr :: from ( file) ,
900
911
Some ( 1 ) => stdout = StdioRepr :: from ( file) ,
901
912
Some ( 2 ) => stderr = StdioRepr :: from ( file) ,
902
913
Some ( _fd) => todo ! ( ) , // Might have to use nix::dup2?
903
914
}
904
- } ,
915
+ }
905
916
Redirect :: DupRead ( _fd, _) => return Err ( CommandExecError :: UnsupportedRedirect ) ,
906
- Redirect :: DupWrite ( _fd, _) => return Err ( CommandExecError :: UnsupportedRedirect ) ,
917
+ Redirect :: DupWrite ( _fd, _) => {
918
+ return Err ( CommandExecError :: UnsupportedRedirect )
919
+ }
907
920
}
908
921
}
909
922
@@ -935,7 +948,8 @@ impl ShellContext {
935
948
StdioRepr :: Inherit => Some ( 0 ) ,
936
949
StdioRepr :: Null => None ,
937
950
StdioRepr :: MakePipe => {
938
- let ( read, write) = nix:: unistd:: pipe ( ) . map_err ( |e| CommandExecError :: CommandFailed { err : e. into ( ) } ) ?;
951
+ let ( read, write) = nix:: unistd:: pipe ( )
952
+ . map_err ( |e| CommandExecError :: CommandFailed { err : e. into ( ) } ) ?;
939
953
child_stdin = Some ( write) ;
940
954
Some ( read)
941
955
}
@@ -946,7 +960,8 @@ impl ShellContext {
946
960
StdioRepr :: Inherit => Some ( 1 ) ,
947
961
StdioRepr :: Null => None ,
948
962
StdioRepr :: MakePipe => {
949
- let ( read, write) = nix:: unistd:: pipe ( ) . map_err ( |e| CommandExecError :: CommandFailed { err : e. into ( ) } ) ?;
963
+ let ( read, write) = nix:: unistd:: pipe ( )
964
+ . map_err ( |e| CommandExecError :: CommandFailed { err : e. into ( ) } ) ?;
950
965
child_stdout = Some ( read) ;
951
966
Some ( write)
952
967
}
@@ -957,7 +972,8 @@ impl ShellContext {
957
972
StdioRepr :: Inherit => Some ( 2 ) ,
958
973
StdioRepr :: Null => None ,
959
974
StdioRepr :: MakePipe => {
960
- let ( read, write) = nix:: unistd:: pipe ( ) . map_err ( |e| CommandExecError :: CommandFailed { err : e. into ( ) } ) ?;
975
+ let ( read, write) = nix:: unistd:: pipe ( )
976
+ . map_err ( |e| CommandExecError :: CommandFailed { err : e. into ( ) } ) ?;
961
977
child_stderr = Some ( read) ;
962
978
Some ( write)
963
979
}
@@ -979,7 +995,8 @@ impl ShellContext {
979
995
let _ = unsafe {
980
996
// SAFETY: child_stdin has been take()n, so no other code might assume it exists.
981
997
File :: from_raw_fd ( write_fd)
982
- } . write_all ( & buffer) ; //TODO: Do I need to worry about an error here?
998
+ }
999
+ . write_all ( & buffer) ; //TODO: Do I need to worry about an error here?
983
1000
}
984
1001
}
985
1002
@@ -1200,7 +1217,9 @@ impl ShellContext {
1200
1217
ParameterSubstitution :: Arith ( _) => todo ! ( ) ,
1201
1218
ParameterSubstitution :: Default ( null_is_unset, parameter, default) => {
1202
1219
let parameter = self . evaluate_parameter ( parameter, config) ;
1203
- if parameter. is_empty ( ) || ( * null_is_unset && parameter. len ( ) == 1 && parameter[ 0 ] . is_empty ( ) ) {
1220
+ if parameter. is_empty ( )
1221
+ || ( * null_is_unset && parameter. len ( ) == 1 && parameter[ 0 ] . is_empty ( ) )
1222
+ {
1204
1223
if let Some ( word) = default {
1205
1224
self . evaluate_tl_word ( word, config) ?
1206
1225
} else {
@@ -1209,7 +1228,7 @@ impl ShellContext {
1209
1228
} else {
1210
1229
parameter
1211
1230
}
1212
- } ,
1231
+ }
1213
1232
ParameterSubstitution :: Assign ( _, _, _) => todo ! ( ) ,
1214
1233
ParameterSubstitution :: Error ( _, _, _) => todo ! ( ) ,
1215
1234
ParameterSubstitution :: Alternative ( _, _, _) => todo ! ( ) ,
0 commit comments