From 2b0e3ee228e01473cf880f719db9bde5b8f34d25 Mon Sep 17 00:00:00 2001 From: Asherah Connor <1915+kivikakk@users.noreply.github.com> Date: Thu, 14 Jan 2021 13:46:22 +1100 Subject: [PATCH] std.os.uefi.protocols.FileProtocol: fix and expose get_position, set_position (#7762) --- lib/std/os/uefi/protocols/file_protocol.zig | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/std/os/uefi/protocols/file_protocol.zig b/lib/std/os/uefi/protocols/file_protocol.zig index e4102fb363..782ac70810 100644 --- a/lib/std/os/uefi/protocols/file_protocol.zig +++ b/lib/std/os/uefi/protocols/file_protocol.zig @@ -16,7 +16,7 @@ pub const FileProtocol = extern struct { _read: fn (*const FileProtocol, *usize, [*]u8) callconv(.C) Status, _write: fn (*const FileProtocol, *usize, [*]const u8) callconv(.C) Status, _get_position: fn (*const FileProtocol, *u64) callconv(.C) Status, - _set_position: fn (*const FileProtocol, *const u64) callconv(.C) Status, + _set_position: fn (*const FileProtocol, u64) callconv(.C) Status, _get_info: fn (*const FileProtocol, *align(8) const Guid, *const usize, [*]u8) callconv(.C) Status, _set_info: fn (*const FileProtocol, *align(8) const Guid, usize, [*]const u8) callconv(.C) Status, _flush: fn (*const FileProtocol) callconv(.C) Status, @@ -41,11 +41,19 @@ pub const FileProtocol = extern struct { return self._write(self, buffer_size, buffer); } - pub fn get_info(self: *const FileProtocol, information_type: *align(8) Guid, buffer_size: *usize, buffer: [*]u8) Status { + pub fn getPosition(self: *const FileProtocol, position: *u64) Status { + return self._get_position(self, position); + } + + pub fn setPosition(self: *const FileProtocol, position: u64) Status { + return self._set_position(self, position); + } + + pub fn getInfo(self: *const FileProtocol, information_type: *align(8) Guid, buffer_size: *usize, buffer: [*]u8) Status { return self._get_info(self, information_type, buffer_size, buffer); } - pub fn set_info(self: *const FileProtocol, information_type: *align(8) Guid, buffer_size: usize, buffer: [*]const u8) Status { + pub fn setInfo(self: *const FileProtocol, information_type: *align(8) Guid, buffer_size: usize, buffer: [*]const u8) Status { return self._set_info(self, information_type, buffer_size, buffer); } @@ -73,6 +81,8 @@ pub const FileProtocol = extern struct { pub const efi_file_directory: u64 = 0x0000000000000010; pub const efi_file_archive: u64 = 0x0000000000000020; pub const efi_file_valid_attr: u64 = 0x0000000000000037; + + pub const efi_file_position_end_of_file: u64 = 0xffffffffffffffff; }; pub const FileInfo = extern struct {