') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); std.os.uefi.protocol.File: fix some typed definitions by dotcarmen · Pull Request #23443 · ziglang/zig · GitHub
Skip to content

std.os.uefi.protocol.File: fix some typed definitions - #23443

Merged
linusg merged 5 commits into
ziglang:masterfrom
dotcarmen:fix-uefi-file
Apr 4, 2025
Merged

std.os.uefi.protocol.File: fix some typed definitions#23443
linusg merged 5 commits into
ziglang:masterfrom
dotcarmen:fix-uefi-file

Conversation

@dotcarmen

@dotcarmendotcarmen commented Apr 2, 2025

Copy link
Copy Markdown
Contributor

#23214 has a few glitches, this is a PR fixing one of them :)

there were 3 issues with File as pointed out by #23436:

File.open

in the spec, the OpenMode argument can only be read, read|write, or read|write|execute. However, currently the interface only allows read, write, and execute. This PR addresses this problem:

  • defined an auxiliary type OpenMode.Bits which provides a bitfield representing those values from the spec
  • OpenMode's enum tags are renamed to read, read_write, and read_write_create for better clarity
  • OpenMode's enum values are implemented by bitcasting OpenMode.Bits values

File.getInfo

The file info buffer should be larger than @sizeOf(Info.*), because Info.* types have an attached null-terminated string at the end.

This method now requires the user to pass in a buffer which will contain the resulting info type.

To better align with the pattern being established in #23441, this function's return type is now struct { usize, ?*Payload }.

File.setInfo

The len accounting as-is is wrong. It should account for the length of the attached null-terminated string.

closes#23436

Comment threadlib/std/os/uefi/protocol/file.zig Outdated
Comment threadlib/std/os/uefi/protocol/file.zig Outdated
@linusg

Copy link
Copy Markdown
Collaborator

Gonna wait a bit before merging so @truemedian can review this too.

@truemediantruemedian left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks reasonable to me other than a few nitpicks that are unrelated to fixing the original issue.

Comment threadlib/std/os/uefi/protocol/file.zig Outdated
Comment threadlib/std/os/uefi/protocol/file.zig Outdated
Comment threadlib/std/os/uefi/protocol/file.zig Outdated
Comment threadlib/std/os/uefi/protocol/file.zig Outdated
@linusg
linusg merged commit 84c9cee into ziglang:masterApr 4, 2025
@linusg

Copy link
Copy Markdown
Collaborator

Oops, I meant to do a squash merge - apologies.

@dotcarmen
dotcarmen deleted the fix-uefi-file branch April 4, 2025 13:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

UEFI File interface partially unusable

3 participants

@dotcarmen@linusg@truemedian