diff options
Diffstat (limited to 'cmd/part')
| -rw-r--r-- | cmd/part/part.ha | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/cmd/part/part.ha b/cmd/part/part.ha index a4b114f..138c093 100644 --- a/cmd/part/part.ha +++ b/cmd/part/part.ha @@ -3,18 +3,21 @@ use io; use os; use strconv; -use gpt; use cmd; +use gpt; -export fn part(vol: str, args: []str) void = { +export fn part(args: []str) void = { if (len(args) <= 1) { - partlist(vol, args[1..]); + partlist(args[1..]); return; }; match (strconv::stou(args[1])) { case let i: uint => - const vol = cmd::opengpt(vol); + const fd = cmd::openfile(); + defer io::close(fd)!; + + const vol = cmd::opengpt(fd); defer gpt::finish(vol); partno(vol, i, args[2..]); return; @@ -23,13 +26,16 @@ export fn part(vol: str, args: []str) void = { }; switch (args[1]) { - case "new" => partnew(vol, args[1..]); - case "list" => partlist(vol, args[1..]); + case "new" => partnew(args[1..]); + case "list" => partlist(args[1..]); }; }; -export fn partnew(vol: str, args: []str) void = { - const vol = cmd::opengpt(vol); +export fn partnew(args: []str) void = { + const fd = cmd::openfile(); + defer io::close(fd)!; + + const vol = cmd::opengpt(fd); defer { gpt::chksums(vol); gpt::commit(vol)!; @@ -46,8 +52,11 @@ export fn partnew(vol: str, args: []str) void = { }; }; -export fn partlist(vol: str, args: []str) void = { - const vol = cmd::opengpt(vol); +export fn partlist(args: []str) void = { + const fd = cmd::openfile(); + defer io::close(fd)!; + + const vol = cmd::opengpt(fd); defer gpt::finish(vol); const header = vol.primary.header; const entries = vol.primary.entries; @@ -62,7 +71,7 @@ export fn partlist(vol: str, args: []str) void = { }; fn partinfo(vol: *gpt::gpt, i: size) void = { - const entry = &vol.primary.entries[i]; + const entry = cmd::getgptentry(vol, i); fmt::printfln("# Partition {}", i)!; fmt::printfln("entries[{}].part_type([{},{}])", i, entry.part_type[0], entry.part_type[1])!; |
