MCPcopy Create free account
hub / github.com/LibertyOS-Development/kernel / exec

Function exec

src/user/shell.rs:42–142  ·  view source on GitHub ↗

Execute

(cmd: &str)

Source from the content-addressed store, hash-verified

40
41// Execute
42pub fn exec(cmd: &str) -> XCode
43{
44 let cmd = cmd.to_string();
45
46 let mut args = splargs(&cmd);
47 let mut redir = false;
48 let mut n = args.len();
49 let mut i = 0;
50
51 loop
52 {
53 if i == n
54 {
55 break;
56 }
57
58 let mut fatarrow = false;
59 let mut thinarrow = false;
60 let mut lefthandle;
61
62 if crate::rgx::Rgx::new("<=+").ismatch(args[i])
63 {
64 fatarrow = true;
65 lefthandle = 0;
66 }
67 else if crate::rgx::Rgx::new("\\d*=+>").ismatch(args[i])
68 {
69 fatarrow = true;
70 lefthandle = 1;
71 }
72 else if crate::rgx::Rgx::new("\\d*-*>\\d*").ismatch(args[i])
73 {
74 thinarrow = true;
75 lefthandle = 1;
76 }
77 else
78 {
79 i += 1;
80 continue;
81 }
82
83 let s = args[i].chars().take_while(|c| c.is_numeric()).collect::<String>();
84 if let Ok(h) = s.parse()
85 {
86 lefthandle = h;
87 }
88
89 if fatarrow
90 {
91 redir = true;
92 if i == n - 1
93 {
94 println!("[ERR] UNABLE TO PARSE PATH");
95 return XCode::CMD_ERR;
96 }
97
98 let path = args[i + 1];
99 if crate::fs::reopen(path, lefthandle).is_err()

Callers 3

kernel_mainFunction · 0.85
mainFunction · 0.85
runFunction · 0.85

Calls 6

splargsFunction · 0.85
reopenFunction · 0.85
ismatchMethod · 0.80
parseMethod · 0.80
spawnFunction · 0.50
lenMethod · 0.45

Tested by

no test coverage detected